minecraft-bedrock-mcp-server 0.1.0

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.
Files changed (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +577 -0
  3. package/dist/bridge/event-route.d.ts +11 -0
  4. package/dist/bridge/event-route.d.ts.map +1 -0
  5. package/dist/bridge/event-route.js +28 -0
  6. package/dist/bridge/event-route.js.map +1 -0
  7. package/dist/bridge/handshake-route.d.ts +11 -0
  8. package/dist/bridge/handshake-route.d.ts.map +1 -0
  9. package/dist/bridge/handshake-route.js +45 -0
  10. package/dist/bridge/handshake-route.js.map +1 -0
  11. package/dist/bridge/poll-route.d.ts +11 -0
  12. package/dist/bridge/poll-route.d.ts.map +1 -0
  13. package/dist/bridge/poll-route.js +28 -0
  14. package/dist/bridge/poll-route.js.map +1 -0
  15. package/dist/bridge/result-route.d.ts +10 -0
  16. package/dist/bridge/result-route.d.ts.map +1 -0
  17. package/dist/bridge/result-route.js +23 -0
  18. package/dist/bridge/result-route.js.map +1 -0
  19. package/dist/config/config-error.d.ts +12 -0
  20. package/dist/config/config-error.d.ts.map +1 -0
  21. package/dist/config/config-error.js +13 -0
  22. package/dist/config/config-error.js.map +1 -0
  23. package/dist/config/environment.d.ts +89 -0
  24. package/dist/config/environment.d.ts.map +1 -0
  25. package/dist/config/environment.js +73 -0
  26. package/dist/config/environment.js.map +1 -0
  27. package/dist/config/tls.d.ts +15 -0
  28. package/dist/config/tls.d.ts.map +1 -0
  29. package/dist/config/tls.js +27 -0
  30. package/dist/config/tls.js.map +1 -0
  31. package/dist/errors/bridge-error.d.ts +41 -0
  32. package/dist/errors/bridge-error.d.ts.map +1 -0
  33. package/dist/errors/bridge-error.js +33 -0
  34. package/dist/errors/bridge-error.js.map +1 -0
  35. package/dist/errors/error-codes.d.ts +13 -0
  36. package/dist/errors/error-codes.d.ts.map +1 -0
  37. package/dist/errors/error-codes.js +41 -0
  38. package/dist/errors/error-codes.js.map +1 -0
  39. package/dist/events/subscription-registry.d.ts +55 -0
  40. package/dist/events/subscription-registry.d.ts.map +1 -0
  41. package/dist/events/subscription-registry.js +64 -0
  42. package/dist/events/subscription-registry.js.map +1 -0
  43. package/dist/http/app.d.ts +26 -0
  44. package/dist/http/app.d.ts.map +1 -0
  45. package/dist/http/app.js +88 -0
  46. package/dist/http/app.js.map +1 -0
  47. package/dist/http/authentication.d.ts +11 -0
  48. package/dist/http/authentication.d.ts.map +1 -0
  49. package/dist/http/authentication.js +36 -0
  50. package/dist/http/authentication.js.map +1 -0
  51. package/dist/http/health-route.d.ts +10 -0
  52. package/dist/http/health-route.d.ts.map +1 -0
  53. package/dist/http/health-route.js +18 -0
  54. package/dist/http/health-route.js.map +1 -0
  55. package/dist/http/metrics-route.d.ts +8 -0
  56. package/dist/http/metrics-route.d.ts.map +1 -0
  57. package/dist/http/metrics-route.js +11 -0
  58. package/dist/http/metrics-route.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +134 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/mcp/mcp-route.d.ts +12 -0
  64. package/dist/mcp/mcp-route.d.ts.map +1 -0
  65. package/dist/mcp/mcp-route.js +49 -0
  66. package/dist/mcp/mcp-route.js.map +1 -0
  67. package/dist/mcp/mcp-server-factory.d.ts +20 -0
  68. package/dist/mcp/mcp-server-factory.d.ts.map +1 -0
  69. package/dist/mcp/mcp-server-factory.js +23 -0
  70. package/dist/mcp/mcp-server-factory.js.map +1 -0
  71. package/dist/mcp/session-manager.d.ts +30 -0
  72. package/dist/mcp/session-manager.d.ts.map +1 -0
  73. package/dist/mcp/session-manager.js +38 -0
  74. package/dist/mcp/session-manager.js.map +1 -0
  75. package/dist/mcp/tool-registry.d.ts +15 -0
  76. package/dist/mcp/tool-registry.d.ts.map +1 -0
  77. package/dist/mcp/tool-registry.js +27 -0
  78. package/dist/mcp/tool-registry.js.map +1 -0
  79. package/dist/observability/logger.d.ts +16 -0
  80. package/dist/observability/logger.d.ts.map +1 -0
  81. package/dist/observability/logger.js +19 -0
  82. package/dist/observability/logger.js.map +1 -0
  83. package/dist/observability/metrics.d.ts +27 -0
  84. package/dist/observability/metrics.d.ts.map +1 -0
  85. package/dist/observability/metrics.js +72 -0
  86. package/dist/observability/metrics.js.map +1 -0
  87. package/dist/protocol/command.d.ts +92 -0
  88. package/dist/protocol/command.d.ts.map +1 -0
  89. package/dist/protocol/command.js +37 -0
  90. package/dist/protocol/command.js.map +1 -0
  91. package/dist/protocol/event.d.ts +82 -0
  92. package/dist/protocol/event.d.ts.map +1 -0
  93. package/dist/protocol/event.js +37 -0
  94. package/dist/protocol/event.js.map +1 -0
  95. package/dist/protocol/handshake.d.ts +150 -0
  96. package/dist/protocol/handshake.d.ts.map +1 -0
  97. package/dist/protocol/handshake.js +65 -0
  98. package/dist/protocol/handshake.js.map +1 -0
  99. package/dist/protocol/index.d.ts +14 -0
  100. package/dist/protocol/index.d.ts.map +1 -0
  101. package/dist/protocol/index.js +14 -0
  102. package/dist/protocol/index.js.map +1 -0
  103. package/dist/protocol/protocol-version.d.ts +18 -0
  104. package/dist/protocol/protocol-version.d.ts.map +1 -0
  105. package/dist/protocol/protocol-version.js +28 -0
  106. package/dist/protocol/protocol-version.js.map +1 -0
  107. package/dist/protocol/result.d.ts +79 -0
  108. package/dist/protocol/result.d.ts.map +1 -0
  109. package/dist/protocol/result.js +35 -0
  110. package/dist/protocol/result.js.map +1 -0
  111. package/dist/queue/command-id.d.ts +15 -0
  112. package/dist/queue/command-id.d.ts.map +1 -0
  113. package/dist/queue/command-id.js +38 -0
  114. package/dist/queue/command-id.js.map +1 -0
  115. package/dist/queue/command-queue.d.ts +90 -0
  116. package/dist/queue/command-queue.d.ts.map +1 -0
  117. package/dist/queue/command-queue.js +151 -0
  118. package/dist/queue/command-queue.js.map +1 -0
  119. package/dist/queue/command-throttle.d.ts +38 -0
  120. package/dist/queue/command-throttle.d.ts.map +1 -0
  121. package/dist/queue/command-throttle.js +26 -0
  122. package/dist/queue/command-throttle.js.map +1 -0
  123. package/dist/queue/instrumented-command-queue.d.ts +9 -0
  124. package/dist/queue/instrumented-command-queue.d.ts.map +1 -0
  125. package/dist/queue/instrumented-command-queue.js +39 -0
  126. package/dist/queue/instrumented-command-queue.js.map +1 -0
  127. package/dist/queue/pending-commands.d.ts +35 -0
  128. package/dist/queue/pending-commands.d.ts.map +1 -0
  129. package/dist/queue/pending-commands.js +41 -0
  130. package/dist/queue/pending-commands.js.map +1 -0
  131. package/dist/server-info.d.ts +5 -0
  132. package/dist/server-info.d.ts.map +1 -0
  133. package/dist/server-info.js +22 -0
  134. package/dist/server-info.js.map +1 -0
  135. package/dist/structures/structure-file-store.d.ts +22 -0
  136. package/dist/structures/structure-file-store.d.ts.map +1 -0
  137. package/dist/structures/structure-file-store.js +89 -0
  138. package/dist/structures/structure-file-store.js.map +1 -0
  139. package/dist/tools/block-tools.d.ts +4 -0
  140. package/dist/tools/block-tools.d.ts.map +1 -0
  141. package/dist/tools/block-tools.js +111 -0
  142. package/dist/tools/block-tools.js.map +1 -0
  143. package/dist/tools/command-tools.d.ts +4 -0
  144. package/dist/tools/command-tools.d.ts.map +1 -0
  145. package/dist/tools/command-tools.js +23 -0
  146. package/dist/tools/command-tools.js.map +1 -0
  147. package/dist/tools/common-schemas.d.ts +65 -0
  148. package/dist/tools/common-schemas.d.ts.map +1 -0
  149. package/dist/tools/common-schemas.js +32 -0
  150. package/dist/tools/common-schemas.js.map +1 -0
  151. package/dist/tools/effect-tools.d.ts +4 -0
  152. package/dist/tools/effect-tools.d.ts.map +1 -0
  153. package/dist/tools/effect-tools.js +32 -0
  154. package/dist/tools/effect-tools.js.map +1 -0
  155. package/dist/tools/entity-tools.d.ts +4 -0
  156. package/dist/tools/entity-tools.d.ts.map +1 -0
  157. package/dist/tools/entity-tools.js +133 -0
  158. package/dist/tools/entity-tools.js.map +1 -0
  159. package/dist/tools/event-tools.d.ts +4 -0
  160. package/dist/tools/event-tools.d.ts.map +1 -0
  161. package/dist/tools/event-tools.js +84 -0
  162. package/dist/tools/event-tools.js.map +1 -0
  163. package/dist/tools/index.d.ts +4 -0
  164. package/dist/tools/index.d.ts.map +1 -0
  165. package/dist/tools/index.js +30 -0
  166. package/dist/tools/index.js.map +1 -0
  167. package/dist/tools/inventory-tools.d.ts +4 -0
  168. package/dist/tools/inventory-tools.d.ts.map +1 -0
  169. package/dist/tools/inventory-tools.js +52 -0
  170. package/dist/tools/inventory-tools.js.map +1 -0
  171. package/dist/tools/player-tools.d.ts +4 -0
  172. package/dist/tools/player-tools.d.ts.map +1 -0
  173. package/dist/tools/player-tools.js +117 -0
  174. package/dist/tools/player-tools.js.map +1 -0
  175. package/dist/tools/property-tools.d.ts +4 -0
  176. package/dist/tools/property-tools.d.ts.map +1 -0
  177. package/dist/tools/property-tools.js +45 -0
  178. package/dist/tools/property-tools.js.map +1 -0
  179. package/dist/tools/scoreboard-tools.d.ts +4 -0
  180. package/dist/tools/scoreboard-tools.d.ts.map +1 -0
  181. package/dist/tools/scoreboard-tools.js +68 -0
  182. package/dist/tools/scoreboard-tools.js.map +1 -0
  183. package/dist/tools/server-tools.d.ts +4 -0
  184. package/dist/tools/server-tools.d.ts.map +1 -0
  185. package/dist/tools/server-tools.js +25 -0
  186. package/dist/tools/server-tools.js.map +1 -0
  187. package/dist/tools/structure-file-tools.d.ts +4 -0
  188. package/dist/tools/structure-file-tools.d.ts.map +1 -0
  189. package/dist/tools/structure-file-tools.js +57 -0
  190. package/dist/tools/structure-file-tools.js.map +1 -0
  191. package/dist/tools/structure-tools.d.ts +4 -0
  192. package/dist/tools/structure-tools.d.ts.map +1 -0
  193. package/dist/tools/structure-tools.js +91 -0
  194. package/dist/tools/structure-tools.js.map +1 -0
  195. package/dist/tools/tool-definition.d.ts +68 -0
  196. package/dist/tools/tool-definition.d.ts.map +1 -0
  197. package/dist/tools/tool-definition.js +40 -0
  198. package/dist/tools/tool-definition.js.map +1 -0
  199. package/dist/tools/tool-result.d.ts +17 -0
  200. package/dist/tools/tool-result.d.ts.map +1 -0
  201. package/dist/tools/tool-result.js +52 -0
  202. package/dist/tools/tool-result.js.map +1 -0
  203. package/dist/tools/world-tools.d.ts +4 -0
  204. package/dist/tools/world-tools.d.ts.map +1 -0
  205. package/dist/tools/world-tools.js +97 -0
  206. package/dist/tools/world-tools.js.map +1 -0
  207. package/package.json +69 -0
@@ -0,0 +1,40 @@
1
+ import { toCallToolResult } from "./tool-result.js";
2
+ /**
3
+ * Defines a tool whose handler validates input, enqueues a command whose
4
+ * `kind` is the tool name, awaits the behavior pack's result, and returns it
5
+ * as a consistent tool envelope.
6
+ */
7
+ export function defineQueuedTool(config) {
8
+ return {
9
+ name: config.name,
10
+ title: config.title,
11
+ description: config.description,
12
+ inputShape: config.inputShape,
13
+ annotations: config.annotations,
14
+ handler: async (input, context) => {
15
+ const payload = config.toPayload === undefined ? input : config.toPayload(input);
16
+ const result = await context.queue.enqueueAndAwait({
17
+ kind: config.name,
18
+ payload,
19
+ correlationId: context.correlationId,
20
+ timeoutMs: context.commandTimeoutMs,
21
+ });
22
+ return toCallToolResult(result);
23
+ },
24
+ };
25
+ }
26
+ /**
27
+ * Defines a tool whose handler runs locally — filesystem operations, or tools
28
+ * that work directly with the subscription registry.
29
+ */
30
+ export function defineLocalTool(config) {
31
+ return {
32
+ name: config.name,
33
+ title: config.title,
34
+ description: config.description,
35
+ inputShape: config.inputShape,
36
+ annotations: config.annotations,
37
+ handler: config.handler,
38
+ };
39
+ }
40
+ //# sourceMappingURL=tool-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition.js","sourceRoot":"","sources":["../../src/tools/tool-definition.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA+CpD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA+B;IAE/B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,OAAO,GACX,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAuB,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;gBACjD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO;gBACP,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,SAAS,EAAE,OAAO,CAAC,gBAAgB;aACpC,CAAC,CAAC;YACH,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAYD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA8B;IAE9B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAoC;KACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { CommandResult } from "../protocol/index.js";
3
+ /**
4
+ * Builds a successful tool result.
5
+ *
6
+ * The payload is carried once, as a TOON text block. Tools declare no
7
+ * `outputSchema`, so no redundant `structuredContent` copy is emitted — the
8
+ * text block is the single machine- and human-readable representation.
9
+ */
10
+ export declare function toolSuccess(data: unknown): CallToolResult;
11
+ /** Builds a failed tool result carrying a stable error code. */
12
+ export declare function toolError(code: string, message: string, details?: unknown): CallToolResult;
13
+ /** Maps a behavior-pack {@link CommandResult} to a tool envelope. */
14
+ export declare function toCallToolResult(result: CommandResult): CallToolResult;
15
+ /** Maps an error thrown by a tool handler to a tool envelope. */
16
+ export declare function toErrorResult(error: unknown): CallToolResult;
17
+ //# sourceMappingURL=tool-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.d.ts","sourceRoot":"","sources":["../../src/tools/tool-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiB1D;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAKzD;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAM1F;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAItE;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAK5D"}
@@ -0,0 +1,52 @@
1
+ import { encode } from "@toon-format/toon";
2
+ import { BridgeError } from "../errors/bridge-error.js";
3
+ /**
4
+ * Serializes a tool payload as TOON (Token-Oriented Object Notation).
5
+ *
6
+ * TOON is a compact, LLM-oriented encoding of the JSON data model: it drops
7
+ * JSON's braces, quotes, and repeated keys, and renders uniform object arrays
8
+ * as a single header plus CSV-style rows. For the tabular results this server
9
+ * produces — block volumes, entity component dumps, player and event lists —
10
+ * that is materially fewer tokens than JSON, and never more than the
11
+ * pretty-printed JSON this previously emitted.
12
+ */
13
+ function serialize(data) {
14
+ if (data === undefined)
15
+ return "(no content)";
16
+ return encode(data);
17
+ }
18
+ /**
19
+ * Builds a successful tool result.
20
+ *
21
+ * The payload is carried once, as a TOON text block. Tools declare no
22
+ * `outputSchema`, so no redundant `structuredContent` copy is emitted — the
23
+ * text block is the single machine- and human-readable representation.
24
+ */
25
+ export function toolSuccess(data) {
26
+ return {
27
+ content: [{ type: "text", text: serialize(data) }],
28
+ isError: false,
29
+ };
30
+ }
31
+ /** Builds a failed tool result carrying a stable error code. */
32
+ export function toolError(code, message, details) {
33
+ const error = { code, message, ...(details === undefined ? {} : { details }) };
34
+ return {
35
+ content: [{ type: "text", text: encode({ error }) }],
36
+ isError: true,
37
+ };
38
+ }
39
+ /** Maps a behavior-pack {@link CommandResult} to a tool envelope. */
40
+ export function toCallToolResult(result) {
41
+ return result.status === "ok"
42
+ ? toolSuccess(result.result)
43
+ : toolError(result.error.code, result.error.message, result.error.details);
44
+ }
45
+ /** Maps an error thrown by a tool handler to a tool envelope. */
46
+ export function toErrorResult(error) {
47
+ if (BridgeError.is(error)) {
48
+ return toolError(error.code, error.message, error.details);
49
+ }
50
+ return toolError("INTERNAL", error instanceof Error ? error.message : "unexpected error");
51
+ }
52
+ //# sourceMappingURL=tool-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.js","sourceRoot":"","sources":["../../src/tools/tool-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD;;;;;;;;;GASG;AACH,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiB;IACxE,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC/E,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI;QAC3B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** World queries and world-level mutations. */
3
+ export declare const worldTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=world-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-tools.d.ts","sourceRoot":"","sources":["../../src/tools/world-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAS7E,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EAAE,SAAS,cAAc,EAuF/C,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { z } from "zod";
2
+ import { DimensionSchema, MessageSchema, Vector3Schema } from "./common-schemas.js";
3
+ import { defineQueuedTool } from "./tool-definition.js";
4
+ const READ_ONLY = { readOnlyHint: true };
5
+ const SoundOptionsSchema = z.object({
6
+ volume: z.number().nonnegative().optional(),
7
+ pitch: z.number().positive().optional(),
8
+ });
9
+ /** World queries and world-level mutations. */
10
+ export const worldTools = [
11
+ defineQueuedTool({
12
+ name: "mc_world_get_info",
13
+ title: "Get world info",
14
+ description: "Returns the world name, Minecraft version, online player count, current " +
15
+ "tick, and day count.",
16
+ inputShape: {},
17
+ annotations: READ_ONLY,
18
+ }),
19
+ defineQueuedTool({
20
+ name: "mc_world_get_time",
21
+ title: "Get world time",
22
+ description: "Returns the absolute time and the time of day.",
23
+ inputShape: {},
24
+ annotations: READ_ONLY,
25
+ }),
26
+ defineQueuedTool({
27
+ name: "mc_world_get_weather",
28
+ title: "Get weather",
29
+ description: "Returns the current weather in a dimension.",
30
+ inputShape: { dimension: DimensionSchema },
31
+ annotations: READ_ONLY,
32
+ }),
33
+ defineQueuedTool({
34
+ name: "mc_world_get_dimensions",
35
+ title: "List dimensions",
36
+ description: "Returns the identifiers of every dimension.",
37
+ inputShape: {},
38
+ annotations: READ_ONLY,
39
+ }),
40
+ defineQueuedTool({
41
+ name: "mc_world_get_dimension_info",
42
+ title: "Get dimension info",
43
+ description: "Returns details for a dimension, such as its height range.",
44
+ inputShape: { dimension: DimensionSchema },
45
+ annotations: READ_ONLY,
46
+ }),
47
+ defineQueuedTool({
48
+ name: "mc_world_set_time",
49
+ title: "Set world time",
50
+ description: "Sets the time of day.",
51
+ inputShape: {
52
+ value: z.number().int().min(0).describe("Time of day in ticks (0-24000)."),
53
+ },
54
+ }),
55
+ defineQueuedTool({
56
+ name: "mc_world_set_weather",
57
+ title: "Set weather",
58
+ description: "Sets the weather in a dimension.",
59
+ inputShape: {
60
+ dimension: DimensionSchema,
61
+ type: z.enum(["Clear", "Rain", "Thunder"]),
62
+ duration: z.number().int().positive().optional().describe("Duration in ticks."),
63
+ },
64
+ }),
65
+ defineQueuedTool({
66
+ name: "mc_world_send_message",
67
+ title: "Send a chat message",
68
+ description: "Sends a chat message to all players or to a specific player.",
69
+ inputShape: {
70
+ target: z.string().min(1).describe("A player name, or 'all' for everyone."),
71
+ message: MessageSchema,
72
+ },
73
+ }),
74
+ defineQueuedTool({
75
+ name: "mc_world_play_sound",
76
+ title: "Play a sound",
77
+ description: "Plays a sound at a location in a dimension.",
78
+ inputShape: {
79
+ dimension: DimensionSchema,
80
+ sound: z.string().min(1),
81
+ location: Vector3Schema,
82
+ options: SoundOptionsSchema.optional(),
83
+ },
84
+ }),
85
+ defineQueuedTool({
86
+ name: "mc_world_spawn_particle",
87
+ title: "Spawn a particle",
88
+ description: "Spawns a particle effect at a location in a dimension.",
89
+ inputShape: {
90
+ dimension: DimensionSchema,
91
+ name: z.string().min(1).describe("Particle type id, e.g. minecraft:basic_flame_particle."),
92
+ location: Vector3Schema,
93
+ molang_variables: z.record(z.number()).optional(),
94
+ },
95
+ }),
96
+ ];
97
+ //# sourceMappingURL=world-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-tools.js","sourceRoot":"","sources":["../../src/tools/world-tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "minecraft-bedrock-mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol server that bridges MCP clients to a Minecraft Bedrock Dedicated Server.",
5
+ "keywords": [
6
+ "mcp",
7
+ "model-context-protocol",
8
+ "minecraft",
9
+ "minecraft-bedrock",
10
+ "bedrock-dedicated-server",
11
+ "bds",
12
+ "ai-agents"
13
+ ],
14
+ "license": "MIT",
15
+ "author": "John Chapman",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/chapmanjw/minecraft-bedrock-mcp-server.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/chapmanjw/minecraft-bedrock-mcp-server/issues"
22
+ },
23
+ "homepage": "https://github.com/chapmanjw/minecraft-bedrock-mcp-server#readme",
24
+ "type": "module",
25
+ "engines": {
26
+ "node": ">=20"
27
+ },
28
+ "bin": {
29
+ "minecraft-bedrock-mcp-server": "dist/index.js"
30
+ },
31
+ "main": "dist/index.js",
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "scripts": {
36
+ "build": "tsc -p tsconfig.build.json",
37
+ "typecheck": "tsc -p tsconfig.json",
38
+ "dev": "tsx watch src/index.ts",
39
+ "start": "node dist/index.js",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "test:coverage": "vitest run --coverage",
43
+ "lint": "eslint .",
44
+ "format": "prettier --write .",
45
+ "format:check": "prettier --check ."
46
+ },
47
+ "dependencies": {
48
+ "@fastify/cors": "^10.0.0",
49
+ "@fastify/rate-limit": "^10.0.0",
50
+ "@modelcontextprotocol/sdk": "^1.29.0",
51
+ "@toon-format/toon": "^2.2.0",
52
+ "fastify": "^5.0.0",
53
+ "pino": "^9.0.0",
54
+ "prom-client": "^15.0.0",
55
+ "zod": "^3.23.8"
56
+ },
57
+ "devDependencies": {
58
+ "@eslint/js": "^9.13.0",
59
+ "@types/node": "^20.17.0",
60
+ "@vitest/coverage-v8": "^3.0.0",
61
+ "eslint": "^9.13.0",
62
+ "pino-pretty": "^13.0.0",
63
+ "prettier": "^3.3.3",
64
+ "tsx": "^4.19.0",
65
+ "typescript": "^5.6.3",
66
+ "typescript-eslint": "^8.12.0",
67
+ "vitest": "^3.0.0"
68
+ }
69
+ }