@lzimul/minecraft-mcp 1.0.2 → 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 CHANGED
@@ -14,7 +14,17 @@ Minecraft Model Context Protocol (MCP) server. It exposes the complete Minecraft
14
14
 
15
15
  ## Protocol
16
16
 
17
- The server implements the MCP `2026-07-28` revision. Modern clients open a session with `server/discover` and carry the per-request envelope in every request's `params._meta` (`io.modelcontextprotocol/protocolVersion`, `io.modelcontextprotocol/clientCapabilities`, and optionally `io.modelcontextprotocol/clientInfo`). Responses use the modern result shape (`resultType`, server identity under `_meta['io.modelcontextprotocol/serverInfo']`). Legacy clients that open with `initialize` are still served through the 2025-era handshake.
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.
18
28
 
19
29
  ## Tools
20
30
 
@@ -134,6 +144,7 @@ src/
134
144
  scripts/
135
145
  generate-data.mjs Regenerates src/data from minecraft-data
136
146
  smoke-test.mjs End-to-end smoke test (including states)
147
+ protocol-test.mjs Modern-only protocol era and envelope enforcement
137
148
  persistence-test.mjs Restart test for the world snapshots
138
149
  error-test.mjs Error fallbacks, sanitizing and storage limit tests
139
150
  stress-test.mjs Parallel write, coalescing and restart stress test
@@ -142,16 +153,16 @@ scripts/
142
153
 
143
154
  ## Scripts
144
155
 
145
- | Command | Description |
146
- | ----------------------- | ----------------------------------------------------- |
147
- | `npm run build` | Lint, compile and generate docs |
148
- | `npm run dev` | Build then start the server |
149
- | `npm start` | Start the server (stdio) |
150
- | `npm test` | Run the smoke, persistence, security and stress tests |
151
- | `npm run test:stress` | Run only the parallel write stress test |
152
- | `npm run generate-data` | Regenerate registry data (see below) |
153
- | `npm run clean` | Remove build output |
154
- | `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 |
155
166
 
156
167
  ## Data
157
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.2',
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.2",
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": ">=22"
64
+ "node": ">=20"
65
65
  },
66
66
  "overrides": {
67
67
  "katex": "^0.19.1"
68
68
  },
69
69
  "dependencies": {
70
- "@modelcontextprotocol/server": "^2.0.0",
71
- "zod": "^4.6.5"
70
+ "@modelcontextprotocol/server": "^2.4.0",
71
+ "zod": "^4.6.7"
72
72
  },
73
73
  "devDependencies": {
74
- "@eslint/css": "^2.0.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.0",
77
+ "@eslint/json": "^2.1.1",
78
78
  "@eslint/markdown": "^8.0.3",
79
- "@types/node": "^26.6.1",
80
- "@typescript-eslint/eslint-plugin": "^8.70.0",
81
- "@typescript-eslint/parser": "^8.70.0",
82
- "eslint": "^10.10.0",
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.6",
85
- "globals": "^17.12.0",
84
+ "eslint-plugin-prettier": "^5.5.7",
85
+ "globals": "^17.13.0",
86
86
  "jiti": "^2.7.0",
87
- "prettier": "^3.9.8",
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.70.0"
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
+ }