@lzimul/minecraft-mcp 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -10
- package/build/config/server-info.js +1 -1
- package/build/index.js +3 -1
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -12,6 +12,20 @@ Minecraft Model Context Protocol (MCP) server. It exposes the complete Minecraft
|
|
|
12
12
|
- Every failure path returns a readable message instead of an unhandled exception
|
|
13
13
|
- Tool annotations for safe client automation
|
|
14
14
|
|
|
15
|
+
## Protocol
|
|
16
|
+
|
|
17
|
+
This server implements **MCP 2026-07-28 only**. The legacy 2025-era `initialize` handshake is rejected, so clients must use the modern protocol:
|
|
18
|
+
|
|
19
|
+
- Start a session with `server/discover`, or send any request carrying the per-request envelope.
|
|
20
|
+
- Every request must include the envelope in `params._meta`:
|
|
21
|
+
- `io.modelcontextprotocol/protocolVersion`: `"2026-07-28"`
|
|
22
|
+
- `io.modelcontextprotocol/clientCapabilities`
|
|
23
|
+
- `io.modelcontextprotocol/clientInfo` (optional)
|
|
24
|
+
- Responses use the modern result shape (`resultType`, server identity under `_meta['io.modelcontextprotocol/serverInfo']`).
|
|
25
|
+
- A legacy `initialize` is answered with `UnsupportedProtocolVersionError` naming the supported modern revision.
|
|
26
|
+
|
|
27
|
+
When testing with MCP Inspector 2.12 or newer, set **Protocol Era** to `modern` (or `auto`) for this server. The Inspector's default `legacy` mode sends `initialize`, which this server intentionally rejects.
|
|
28
|
+
|
|
15
29
|
## Tools
|
|
16
30
|
|
|
17
31
|
| Tool | Description |
|
|
@@ -130,6 +144,7 @@ src/
|
|
|
130
144
|
scripts/
|
|
131
145
|
generate-data.mjs Regenerates src/data from minecraft-data
|
|
132
146
|
smoke-test.mjs End-to-end smoke test (including states)
|
|
147
|
+
protocol-test.mjs Modern-only protocol era and envelope enforcement
|
|
133
148
|
persistence-test.mjs Restart test for the world snapshots
|
|
134
149
|
error-test.mjs Error fallbacks, sanitizing and storage limit tests
|
|
135
150
|
stress-test.mjs Parallel write, coalescing and restart stress test
|
|
@@ -138,16 +153,16 @@ scripts/
|
|
|
138
153
|
|
|
139
154
|
## Scripts
|
|
140
155
|
|
|
141
|
-
| Command | Description
|
|
142
|
-
| ----------------------- |
|
|
143
|
-
| `npm run build` | Lint, compile and generate docs
|
|
144
|
-
| `npm run dev` | Build then start the server
|
|
145
|
-
| `npm start` | Start the server (stdio)
|
|
146
|
-
| `npm test` | Run the smoke, persistence, security and stress tests |
|
|
147
|
-
| `npm run test:stress` | Run only the parallel write stress test
|
|
148
|
-
| `npm run generate-data` | Regenerate registry data (see below)
|
|
149
|
-
| `npm run clean` | Remove build output
|
|
150
|
-
| `npm run lint` | Lint and auto-fix
|
|
156
|
+
| Command | Description |
|
|
157
|
+
| ----------------------- | --------------------------------------------------------------- |
|
|
158
|
+
| `npm run build` | Lint, compile and generate docs |
|
|
159
|
+
| `npm run dev` | Build then start the server |
|
|
160
|
+
| `npm start` | Start the server (stdio) |
|
|
161
|
+
| `npm test` | Run the smoke, protocol, persistence, security and stress tests |
|
|
162
|
+
| `npm run test:stress` | Run only the parallel write stress test |
|
|
163
|
+
| `npm run generate-data` | Regenerate registry data (see below) |
|
|
164
|
+
| `npm run clean` | Remove build output |
|
|
165
|
+
| `npm run lint` | Lint and auto-fix |
|
|
151
166
|
|
|
152
167
|
## Data
|
|
153
168
|
|
|
@@ -6,7 +6,7 @@ export const SERVER_INFO = {
|
|
|
6
6
|
name: 'lzimul',
|
|
7
7
|
title: 'lZiMUl Minecraft MCP',
|
|
8
8
|
description: `Minecraft Model Context Protocol server (Java Edition ${MINECRAFT_DATA_VERSION}): exposes all ${MINECRAFT_BLOCK_COUNT} blocks and ${MINECRAFT_ITEM_COUNT} items with their properties (name, hardness, blast resistance, durability, enchantment categories, etc.) as resources, plus tools to get and place blocks and look up items.`,
|
|
9
|
-
version: '1.0.
|
|
9
|
+
version: '1.0.3',
|
|
10
10
|
websiteUrl: 'https://mcp.lzimul.com/lZiMUl',
|
|
11
11
|
icons: [
|
|
12
12
|
{
|
package/build/index.js
CHANGED
|
@@ -7,7 +7,9 @@ import { createWorldStore } from './world/stores/index.js';
|
|
|
7
7
|
import { World } from './world/world.js';
|
|
8
8
|
async function main() {
|
|
9
9
|
const world = await World.load(createWorldStore(), WORLD_STORAGE.writeDelayMs);
|
|
10
|
-
const handle = serveStdio(() => createServer(world)
|
|
10
|
+
const handle = serveStdio(() => createServer(world), {
|
|
11
|
+
legacy: 'reject'
|
|
12
|
+
});
|
|
11
13
|
let shuttingDown = false;
|
|
12
14
|
const shutdown = async (exitCode) => {
|
|
13
15
|
if (shuttingDown) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lzimul/minecraft-mcp",
|
|
3
3
|
"description": "Minecraft Model Context Protocol (MCP) Server",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "lZiMUl",
|
|
7
7
|
"email": "lZiMUl@lzimul.com",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"dev": "npm run build && npm run start",
|
|
44
44
|
"generate-data": "node ./scripts/generate-data.mjs",
|
|
45
45
|
"clean": "node ./scripts/clean.mjs",
|
|
46
|
-
"test": "node ./scripts/smoke-test.mjs && node ./scripts/persistence-test.mjs && node ./scripts/error-test.mjs && node ./scripts/stress-test.mjs",
|
|
46
|
+
"test": "node ./scripts/smoke-test.mjs && node ./scripts/protocol-test.mjs && node ./scripts/persistence-test.mjs && node ./scripts/error-test.mjs && node ./scripts/stress-test.mjs",
|
|
47
47
|
"test:stress": "node ./scripts/stress-test.mjs"
|
|
48
48
|
},
|
|
49
49
|
"files": [
|
|
@@ -61,34 +61,34 @@
|
|
|
61
61
|
"minecraft-mcp"
|
|
62
62
|
],
|
|
63
63
|
"engines": {
|
|
64
|
-
"node": ">=
|
|
64
|
+
"node": ">=20"
|
|
65
65
|
},
|
|
66
66
|
"overrides": {
|
|
67
67
|
"katex": "^0.19.1"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@modelcontextprotocol/server": "^2.
|
|
71
|
-
"zod": "^4.6.
|
|
70
|
+
"@modelcontextprotocol/server": "^2.4.0",
|
|
71
|
+
"zod": "^4.6.7"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@eslint/css": "^2.0.
|
|
74
|
+
"@eslint/css": "^2.0.1",
|
|
75
75
|
"@eslint/eslintrc": "^3.3.7",
|
|
76
76
|
"@eslint/js": "^10.0.1",
|
|
77
|
-
"@eslint/json": "^2.1.
|
|
77
|
+
"@eslint/json": "^2.1.1",
|
|
78
78
|
"@eslint/markdown": "^8.0.3",
|
|
79
|
-
"@types/node": "^26.6.
|
|
80
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
81
|
-
"@typescript-eslint/parser": "^8.
|
|
82
|
-
"eslint": "^10.
|
|
79
|
+
"@types/node": "^26.6.5",
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^8.72.0",
|
|
81
|
+
"@typescript-eslint/parser": "^8.72.0",
|
|
82
|
+
"eslint": "^10.13.0",
|
|
83
83
|
"eslint-config-prettier": "^10.1.8",
|
|
84
|
-
"eslint-plugin-prettier": "^5.5.
|
|
85
|
-
"globals": "^17.
|
|
84
|
+
"eslint-plugin-prettier": "^5.5.7",
|
|
85
|
+
"globals": "^17.13.0",
|
|
86
86
|
"jiti": "^2.7.0",
|
|
87
|
-
"prettier": "^3.9.
|
|
87
|
+
"prettier": "^3.9.10",
|
|
88
88
|
"tslib": "^2.8.1",
|
|
89
89
|
"typedoc": "^0.28.20",
|
|
90
90
|
"typescript": "^6.0.3",
|
|
91
|
-
"typescript-eslint": "^8.
|
|
91
|
+
"typescript-eslint": "^8.72.0"
|
|
92
92
|
},
|
|
93
93
|
"repository": {
|
|
94
94
|
"type": "git",
|
|
@@ -106,4 +106,4 @@
|
|
|
106
106
|
},
|
|
107
107
|
"sideEffects": false,
|
|
108
108
|
"private": false
|
|
109
|
-
}
|
|
109
|
+
}
|