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,52 @@
1
+ import { z } from "zod";
2
+ import { DimensionSchema, EntityIdSchema, ItemPropertiesSchema, ItemTypeSchema, Vector3Schema, } from "./common-schemas.js";
3
+ import { defineQueuedTool } from "./tool-definition.js";
4
+ /** A reference to an item container — an entity, or a block at a location. */
5
+ const ContainerRefSchema = z.object({
6
+ entity_id: EntityIdSchema.optional(),
7
+ block: z.object({ dimension: DimensionSchema, location: Vector3Schema }).optional(),
8
+ });
9
+ /** Item spawning and container inventory access. */
10
+ export const inventoryTools = [
11
+ defineQueuedTool({
12
+ name: "mc_item_spawn",
13
+ title: "Spawn an item",
14
+ description: "Spawns a dropped item entity at a location.",
15
+ inputShape: {
16
+ dimension: DimensionSchema,
17
+ item_type: ItemTypeSchema,
18
+ location: Vector3Schema,
19
+ count: z.number().int().positive().optional(),
20
+ properties: ItemPropertiesSchema.optional(),
21
+ },
22
+ }),
23
+ defineQueuedTool({
24
+ name: "mc_inventory_get",
25
+ title: "Get a container's inventory",
26
+ description: "Returns the items in an entity's or block's inventory.",
27
+ inputShape: { container: ContainerRefSchema },
28
+ annotations: { readOnlyHint: true },
29
+ }),
30
+ defineQueuedTool({
31
+ name: "mc_inventory_set_slot",
32
+ title: "Set an inventory slot",
33
+ description: "Places an item stack into a specific inventory slot.",
34
+ inputShape: {
35
+ container: ContainerRefSchema,
36
+ slot: z.number().int().nonnegative(),
37
+ item_type: ItemTypeSchema,
38
+ count: z.number().int().positive().optional(),
39
+ properties: ItemPropertiesSchema.optional(),
40
+ },
41
+ }),
42
+ defineQueuedTool({
43
+ name: "mc_inventory_clear_slot",
44
+ title: "Clear an inventory slot",
45
+ description: "Empties a specific inventory slot.",
46
+ inputShape: {
47
+ container: ContainerRefSchema,
48
+ slot: z.number().int().nonnegative(),
49
+ },
50
+ }),
51
+ ];
52
+ //# sourceMappingURL=inventory-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory-tools.js","sourceRoot":"","sources":["../../src/tools/inventory-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpF,CAAC,CAAC;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,gBAAgB,CAAC;QACf,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,6CAA6C;QAC1D,UAAU,EAAE;YACV,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAC7C,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;SAC5C;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,wDAAwD;QACrE,UAAU,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE;QAC7C,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,sDAAsD;QACnE,UAAU,EAAE;YACV,SAAS,EAAE,kBAAkB;YAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;YACpC,SAAS,EAAE,cAAc;YACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAC7C,UAAU,EAAE,oBAAoB,CAAC,QAAQ,EAAE;SAC5C;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,oCAAoC;QACjD,UAAU,EAAE;YACV,SAAS,EAAE,kBAAkB;YAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;SACrC;KACF,CAAC;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Player queries and player-specific mutations. */
3
+ export declare const playerTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=player-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player-tools.d.ts","sourceRoot":"","sources":["../../src/tools/player-tools.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI7E,oDAAoD;AACpD,eAAO,MAAM,WAAW,EAAE,SAAS,cAAc,EA8GhD,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { z } from "zod";
2
+ import { ItemPropertiesSchema, ItemTypeSchema, MessageSchema, Vector3Schema, } from "./common-schemas.js";
3
+ import { defineQueuedTool } from "./tool-definition.js";
4
+ const PlayerSchema = z.string().min(1).describe("Player name.");
5
+ /** Player queries and player-specific mutations. */
6
+ export const playerTools = [
7
+ defineQueuedTool({
8
+ name: "mc_player_list",
9
+ title: "List players",
10
+ description: "Returns the name, id, location, dimension, and game mode of every online player.",
11
+ inputShape: {},
12
+ annotations: { readOnlyHint: true },
13
+ }),
14
+ defineQueuedTool({
15
+ name: "mc_player_send_message",
16
+ title: "Send a message to a player",
17
+ description: "Sends a chat message to a single player.",
18
+ inputShape: { player: PlayerSchema, message: MessageSchema },
19
+ }),
20
+ defineQueuedTool({
21
+ name: "mc_player_send_title",
22
+ title: "Show a title to a player",
23
+ description: "Shows a title, and optional subtitle, on a player's screen.",
24
+ inputShape: {
25
+ player: PlayerSchema,
26
+ title: z.string(),
27
+ subtitle: z.string().optional(),
28
+ options: z
29
+ .object({
30
+ fade_in_ticks: z.number().int().nonnegative().optional(),
31
+ stay_ticks: z.number().int().nonnegative().optional(),
32
+ fade_out_ticks: z.number().int().nonnegative().optional(),
33
+ })
34
+ .optional(),
35
+ },
36
+ }),
37
+ defineQueuedTool({
38
+ name: "mc_player_send_actionbar",
39
+ title: "Show an action bar message",
40
+ description: "Shows a message on a player's action bar.",
41
+ inputShape: { player: PlayerSchema, text: z.string() },
42
+ }),
43
+ defineQueuedTool({
44
+ name: "mc_player_set_gamemode",
45
+ title: "Set a player's game mode",
46
+ description: "Sets a player's game mode.",
47
+ inputShape: {
48
+ player: PlayerSchema,
49
+ mode: z.enum(["survival", "creative", "adventure", "spectator"]),
50
+ },
51
+ }),
52
+ defineQueuedTool({
53
+ name: "mc_player_give_item",
54
+ title: "Give an item to a player",
55
+ description: "Adds an item stack to a player's inventory.",
56
+ inputShape: {
57
+ player: PlayerSchema,
58
+ item_type: ItemTypeSchema,
59
+ count: z.number().int().positive().optional(),
60
+ properties: ItemPropertiesSchema.optional(),
61
+ },
62
+ }),
63
+ defineQueuedTool({
64
+ name: "mc_player_clear_inventory",
65
+ title: "Clear a player's inventory",
66
+ description: "Removes every item from a player's inventory.",
67
+ inputShape: { player: PlayerSchema },
68
+ annotations: { destructiveHint: true },
69
+ }),
70
+ defineQueuedTool({
71
+ name: "mc_player_get_inventory",
72
+ title: "Get a player's inventory",
73
+ description: "Returns the contents of a player's inventory.",
74
+ inputShape: { player: PlayerSchema },
75
+ annotations: { readOnlyHint: true },
76
+ }),
77
+ defineQueuedTool({
78
+ name: "mc_player_set_camera",
79
+ title: "Set a player's camera",
80
+ description: "Sets a player's camera to a preset, or to a fixed location and orientation.",
81
+ inputShape: {
82
+ player: PlayerSchema,
83
+ options: z.object({
84
+ preset: z.string().optional().describe("Camera preset id, e.g. minecraft:free."),
85
+ location: Vector3Schema.optional(),
86
+ rotation: z.object({ x: z.number(), y: z.number() }).optional(),
87
+ facing_location: Vector3Schema.optional(),
88
+ ease_seconds: z.number().nonnegative().optional(),
89
+ ease_type: z.string().optional(),
90
+ }),
91
+ },
92
+ }),
93
+ defineQueuedTool({
94
+ name: "mc_player_play_sound",
95
+ title: "Play a sound for a player",
96
+ description: "Plays a sound for a single player.",
97
+ inputShape: {
98
+ player: PlayerSchema,
99
+ sound: z.string().min(1),
100
+ options: z
101
+ .object({
102
+ location: Vector3Schema.optional(),
103
+ volume: z.number().nonnegative().optional(),
104
+ pitch: z.number().positive().optional(),
105
+ })
106
+ .optional(),
107
+ },
108
+ }),
109
+ defineQueuedTool({
110
+ name: "mc_player_kick",
111
+ title: "Kick a player",
112
+ description: "Disconnects a player from the server.",
113
+ inputShape: { player: PlayerSchema, reason: z.string().optional() },
114
+ annotations: { destructiveHint: true },
115
+ }),
116
+ ];
117
+ //# sourceMappingURL=player-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player-tools.js","sourceRoot":"","sources":["../../src/tools/player-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Persistent dynamic-property storage. */
3
+ export declare const propertyTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=property-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-tools.d.ts","sourceRoot":"","sources":["../../src/tools/property-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ7E,2CAA2C;AAC3C,eAAO,MAAM,aAAa,EAAE,SAAS,cAAc,EAmClD,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { EntityIdSchema, Vector3Schema } from "./common-schemas.js";
3
+ import { defineQueuedTool } from "./tool-definition.js";
4
+ /** The scope a dynamic property is stored on — the world, or an entity. */
5
+ const PropertyScopeSchema = z.union([z.literal("world"), z.object({ entity_id: EntityIdSchema })]);
6
+ /** A dynamic property value. */
7
+ const PropertyValueSchema = z.union([z.string(), z.number(), z.boolean(), Vector3Schema]);
8
+ /** Persistent dynamic-property storage. */
9
+ export const propertyTools = [
10
+ defineQueuedTool({
11
+ name: "mc_property_get",
12
+ title: "Get a dynamic property",
13
+ description: "Returns a dynamic property stored on the world or an entity.",
14
+ inputShape: { scope: PropertyScopeSchema, name: z.string().min(1) },
15
+ annotations: { readOnlyHint: true },
16
+ }),
17
+ defineQueuedTool({
18
+ name: "mc_property_set",
19
+ title: "Set a dynamic property",
20
+ description: "Stores a dynamic property on the world or an entity.",
21
+ inputShape: {
22
+ scope: PropertyScopeSchema,
23
+ name: z.string().min(1),
24
+ value: PropertyValueSchema,
25
+ },
26
+ }),
27
+ defineQueuedTool({
28
+ name: "mc_property_list",
29
+ title: "List dynamic properties",
30
+ description: "Returns the names of every dynamic property in a scope.",
31
+ inputShape: { scope: PropertyScopeSchema },
32
+ annotations: { readOnlyHint: true },
33
+ }),
34
+ defineQueuedTool({
35
+ name: "mc_property_clear",
36
+ title: "Clear dynamic properties",
37
+ description: "Removes one dynamic property, or every property in a scope.",
38
+ inputShape: {
39
+ scope: PropertyScopeSchema,
40
+ name: z.string().min(1).optional().describe("Omit to clear every property in the scope."),
41
+ },
42
+ annotations: { destructiveHint: true },
43
+ }),
44
+ ];
45
+ //# sourceMappingURL=property-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-tools.js","sourceRoot":"","sources":["../../src/tools/property-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAE7E,2EAA2E;AAC3E,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnG,gCAAgC;AAChC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AAE1F,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAA8B;IACtD,gBAAgB,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACnE,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,sDAAsD;QACnE,UAAU,EAAE;YACV,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,KAAK,EAAE,mBAAmB;SAC3B;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yDAAyD;QACtE,UAAU,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;QAC1C,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,6DAA6D;QAC1E,UAAU,EAAE;YACV,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SAC1F;QACD,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;KACvC,CAAC;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Scoreboard objective and score operations. */
3
+ export declare const scoreboardTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=scoreboard-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreboard-tools.d.ts","sourceRoot":"","sources":["../../src/tools/scoreboard-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK7E,iDAAiD;AACjD,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EA6DpD,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { z } from "zod";
2
+ import { defineQueuedTool } from "./tool-definition.js";
3
+ const ObjectiveSchema = z.string().min(1).describe("Scoreboard objective id.");
4
+ const ParticipantSchema = z.string().min(1).describe("A player name or other scoreboard identity.");
5
+ /** Scoreboard objective and score operations. */
6
+ export const scoreboardTools = [
7
+ defineQueuedTool({
8
+ name: "mc_scoreboard_list_objectives",
9
+ title: "List scoreboard objectives",
10
+ description: "Returns every scoreboard objective.",
11
+ inputShape: {},
12
+ annotations: { readOnlyHint: true },
13
+ }),
14
+ defineQueuedTool({
15
+ name: "mc_scoreboard_add_objective",
16
+ title: "Add a scoreboard objective",
17
+ description: "Creates a scoreboard objective.",
18
+ inputShape: {
19
+ id: ObjectiveSchema,
20
+ display_name: z.string().optional(),
21
+ criteria: z.string().optional().describe("Objective criteria; defaults to dummy."),
22
+ },
23
+ }),
24
+ defineQueuedTool({
25
+ name: "mc_scoreboard_remove_objective",
26
+ title: "Remove a scoreboard objective",
27
+ description: "Deletes a scoreboard objective.",
28
+ inputShape: { id: ObjectiveSchema },
29
+ annotations: { destructiveHint: true },
30
+ }),
31
+ defineQueuedTool({
32
+ name: "mc_scoreboard_get_score",
33
+ title: "Get a score",
34
+ description: "Returns a participant's score for an objective.",
35
+ inputShape: { objective: ObjectiveSchema, participant: ParticipantSchema },
36
+ annotations: { readOnlyHint: true },
37
+ }),
38
+ defineQueuedTool({
39
+ name: "mc_scoreboard_set_score",
40
+ title: "Set a score",
41
+ description: "Sets a participant's score for an objective.",
42
+ inputShape: {
43
+ objective: ObjectiveSchema,
44
+ participant: ParticipantSchema,
45
+ score: z.number().int(),
46
+ },
47
+ }),
48
+ defineQueuedTool({
49
+ name: "mc_scoreboard_add_score",
50
+ title: "Add to a score",
51
+ description: "Adds an amount to a participant's score; pass a negative amount to subtract.",
52
+ inputShape: {
53
+ objective: ObjectiveSchema,
54
+ participant: ParticipantSchema,
55
+ amount: z.number().int(),
56
+ },
57
+ }),
58
+ defineQueuedTool({
59
+ name: "mc_scoreboard_reset_participant",
60
+ title: "Reset a participant",
61
+ description: "Removes a participant's scores, from one objective or from all of them.",
62
+ inputShape: {
63
+ participant: ParticipantSchema,
64
+ objective: ObjectiveSchema.optional().describe("Omit to reset across every objective."),
65
+ },
66
+ }),
67
+ ];
68
+ //# sourceMappingURL=scoreboard-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreboard-tools.js","sourceRoot":"","sources":["../../src/tools/scoreboard-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAE7E,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAC/E,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAEpG,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAA8B;IACxD,gBAAgB,CAAC;QACf,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE;YACV,EAAE,EAAE,eAAe;YACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;SACnF;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,iCAAiC;QAC9C,UAAU,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;QACnC,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;KACvC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,iDAAiD;QAC9D,UAAU,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC1E,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,8CAA8C;QAC3D,UAAU,EAAE;YACV,SAAS,EAAE,eAAe;YAC1B,WAAW,EAAE,iBAAiB;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACxB;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,8EAA8E;QAC3F,UAAU,EAAE;YACV,SAAS,EAAE,eAAe;YAC1B,WAAW,EAAE,iBAAiB;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;SACzB;KACF,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,yEAAyE;QACtF,UAAU,EAAE;YACV,WAAW,EAAE,iBAAiB;YAC9B,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SACxF;KACF,CAAC;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Server administration. */
3
+ export declare const serverTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=server-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-tools.d.ts","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE7E,6BAA6B;AAC7B,eAAO,MAAM,WAAW,EAAE,SAAS,cAAc,EAqBhD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { defineQueuedTool } from "./tool-definition.js";
2
+ /** Server administration. */
3
+ export const serverTools = [
4
+ defineQueuedTool({
5
+ name: "mc_server_reload_addons",
6
+ title: "Reload addons",
7
+ description: "Reloads behavior and resource pack scripts and functions — the /reload command.",
8
+ inputShape: {},
9
+ }),
10
+ defineQueuedTool({
11
+ name: "mc_server_save_world",
12
+ title: "Save the world",
13
+ description: "Forces the world to save to disk.",
14
+ inputShape: {},
15
+ annotations: { idempotentHint: true },
16
+ }),
17
+ defineQueuedTool({
18
+ name: "mc_server_get_status",
19
+ title: "Get server status",
20
+ description: "Returns uptime, online player count, and an approximate ticks-per-second.",
21
+ inputShape: {},
22
+ annotations: { readOnlyHint: true },
23
+ }),
24
+ ];
25
+ //# sourceMappingURL=server-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-tools.js","sourceRoot":"","sources":["../../src/tools/server-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AAE7E,6BAA6B;AAC7B,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,gBAAgB,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,iFAAiF;QAC9F,UAAU,EAAE,EAAE;KACf,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,mCAAmC;QAChD,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;KACtC,CAAC;IACF,gBAAgB,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,2EAA2E;QACxF,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,CAAC;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Filesystem operations on `.mcstructure` files — these run on the MCP host. */
3
+ export declare const structureFileTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=structure-file-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-file-tools.d.ts","sourceRoot":"","sources":["../../src/tools/structure-file-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG5E,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EAoDvD,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from "zod";
2
+ import { defineLocalTool } from "./tool-definition.js";
3
+ import { toolError, toolSuccess } from "./tool-result.js";
4
+ /** Filesystem operations on `.mcstructure` files — these run on the MCP host. */
5
+ export const structureFileTools = [
6
+ defineLocalTool({
7
+ name: "mc_structure_file_list",
8
+ title: "List structure files",
9
+ description: "Lists the .mcstructure files in the behavior pack's structures folder.",
10
+ inputShape: {},
11
+ annotations: { readOnlyHint: true },
12
+ handler: async (_input, context) => {
13
+ const files = await context.structureFiles.list();
14
+ return toolSuccess({ files });
15
+ },
16
+ }),
17
+ defineLocalTool({
18
+ name: "mc_structure_file_read",
19
+ title: "Read a structure file",
20
+ description: "Reads a .mcstructure file and returns its base64-encoded contents.",
21
+ inputShape: { name: z.string().min(1) },
22
+ annotations: { readOnlyHint: true },
23
+ handler: async (input, context) => {
24
+ const data = await context.structureFiles.read(input.name);
25
+ return toolSuccess({ name: input.name, base64_data: data.toString("base64") });
26
+ },
27
+ }),
28
+ defineLocalTool({
29
+ name: "mc_structure_file_write",
30
+ title: "Write a structure file",
31
+ description: "Writes a .mcstructure file from base64-encoded contents — for placing " +
32
+ "externally generated structures into the behavior pack.",
33
+ inputShape: {
34
+ name: z.string().min(1),
35
+ base64_data: z.string().describe("The .mcstructure file contents, base64-encoded."),
36
+ },
37
+ handler: async (input, context) => {
38
+ const data = Buffer.from(input.base64_data, "base64");
39
+ const info = await context.structureFiles.write(input.name, data);
40
+ return toolSuccess(info);
41
+ },
42
+ }),
43
+ defineLocalTool({
44
+ name: "mc_structure_file_delete",
45
+ title: "Delete a structure file",
46
+ description: "Deletes a .mcstructure file from the behavior pack's structures folder.",
47
+ inputShape: { name: z.string().min(1) },
48
+ annotations: { destructiveHint: true },
49
+ handler: async (input, context) => {
50
+ const deleted = await context.structureFiles.remove(input.name);
51
+ return deleted
52
+ ? toolSuccess({ name: input.name, deleted: true })
53
+ : toolError("NOT_FOUND", `no structure file '${input.name}'`);
54
+ },
55
+ }),
56
+ ];
57
+ //# sourceMappingURL=structure-file-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-file-tools.js","sourceRoot":"","sources":["../../src/tools/structure-file-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from "./tool-definition.js";
2
+ /** Script API `StructureManager` operations. */
3
+ export declare const structureTools: readonly ToolDefinition[];
4
+ //# sourceMappingURL=structure-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-tools.d.ts","sourceRoot":"","sources":["../../src/tools/structure-tools.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO7E,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,SAAS,cAAc,EAiFnD,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { z } from "zod";
2
+ import { BlockStatesSchema, BlockTypeSchema, DimensionSchema, Vector3Schema, } from "./common-schemas.js";
3
+ import { defineQueuedTool } from "./tool-definition.js";
4
+ const StructureIdSchema = z
5
+ .string()
6
+ .min(1)
7
+ .describe("Structure identifier, e.g. mystructures:house.");
8
+ /** Script API `StructureManager` operations. */
9
+ export const structureTools = [
10
+ defineQueuedTool({
11
+ name: "mc_structure_list",
12
+ title: "List structures",
13
+ description: "Returns the ids of all in-memory and world-saved structures.",
14
+ inputShape: {},
15
+ annotations: { readOnlyHint: true },
16
+ }),
17
+ defineQueuedTool({
18
+ name: "mc_structure_get",
19
+ title: "Get structure metadata",
20
+ description: "Returns metadata for a structure, such as its size.",
21
+ inputShape: { id: StructureIdSchema },
22
+ annotations: { readOnlyHint: true },
23
+ }),
24
+ defineQueuedTool({
25
+ name: "mc_structure_create_empty",
26
+ title: "Create an empty structure",
27
+ description: "Creates a new, empty structure of a given size.",
28
+ inputShape: {
29
+ id: StructureIdSchema,
30
+ size: Vector3Schema,
31
+ save_mode: z.enum(["memory", "world"]).optional(),
32
+ },
33
+ }),
34
+ defineQueuedTool({
35
+ name: "mc_structure_create_from_world",
36
+ title: "Capture a structure from the world",
37
+ description: "Captures the blocks in a bounding box into a new structure.",
38
+ inputShape: {
39
+ id: StructureIdSchema,
40
+ dimension: DimensionSchema,
41
+ from: Vector3Schema,
42
+ to: Vector3Schema,
43
+ options: z
44
+ .object({
45
+ include_entities: z.boolean().optional(),
46
+ include_blocks: z.boolean().optional(),
47
+ save_mode: z.enum(["memory", "world"]).optional(),
48
+ })
49
+ .optional(),
50
+ },
51
+ }),
52
+ defineQueuedTool({
53
+ name: "mc_structure_place",
54
+ title: "Place a structure",
55
+ description: "Places a saved structure into the world.",
56
+ inputShape: {
57
+ id: StructureIdSchema,
58
+ dimension: DimensionSchema,
59
+ location: Vector3Schema,
60
+ options: z
61
+ .object({
62
+ rotation: z.enum(["None", "Rotate90", "Rotate180", "Rotate270"]).optional(),
63
+ mirror: z.enum(["None", "X", "Z", "XZ"]).optional(),
64
+ integrity: z.number().min(0).max(1).optional(),
65
+ include_entities: z.boolean().optional(),
66
+ animation_mode: z.enum(["None", "Layers", "Blocks"]).optional(),
67
+ animation_seconds: z.number().nonnegative().optional(),
68
+ })
69
+ .optional(),
70
+ },
71
+ }),
72
+ defineQueuedTool({
73
+ name: "mc_structure_delete",
74
+ title: "Delete a structure",
75
+ description: "Deletes a structure from memory and the world.",
76
+ inputShape: { id: StructureIdSchema },
77
+ annotations: { destructiveHint: true },
78
+ }),
79
+ defineQueuedTool({
80
+ name: "mc_structure_set_block",
81
+ title: "Edit a structure block",
82
+ description: "Sets a block within an in-memory structure.",
83
+ inputShape: {
84
+ id: StructureIdSchema,
85
+ location: Vector3Schema,
86
+ block_type: BlockTypeSchema,
87
+ states: BlockStatesSchema.optional(),
88
+ },
89
+ }),
90
+ ];
91
+ //# sourceMappingURL=structure-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure-tools.js","sourceRoot":"","sources":["../../src/tools/structure-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { z, ZodRawShape } from "zod";
2
+ import type { CallToolResult, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
3
+ import type { SubscriptionRegistry } from "../events/subscription-registry.js";
4
+ import type { Logger } from "../observability/logger.js";
5
+ import type { CommandQueue } from "../queue/command-queue.js";
6
+ import type { StructureFileStore } from "../structures/structure-file-store.js";
7
+ /** Services and per-invocation context available to every tool handler. */
8
+ export interface ToolContext {
9
+ readonly queue: CommandQueue;
10
+ readonly subscriptions: SubscriptionRegistry;
11
+ readonly structureFiles: StructureFileStore;
12
+ readonly logger: Logger;
13
+ /** Correlates this invocation across logs and any command it enqueues. */
14
+ readonly correlationId: string;
15
+ /** How long a routed command awaits a behavior-pack result. */
16
+ readonly commandTimeoutMs: number;
17
+ /** Aborts when the MCP client cancels the request. */
18
+ readonly signal: AbortSignal;
19
+ }
20
+ /** A tool handler's return — a result, possibly produced asynchronously. */
21
+ export type ToolOutcome = CallToolResult | Promise<CallToolResult>;
22
+ /**
23
+ * A registered MCP tool: its schema, metadata, and handler.
24
+ *
25
+ * The generic input shape is erased here; {@link defineQueuedTool} and
26
+ * {@link defineLocalTool} preserve it while a handler is authored.
27
+ */
28
+ export interface ToolDefinition {
29
+ readonly name: string;
30
+ readonly title: string;
31
+ readonly description: string;
32
+ readonly inputShape: ZodRawShape;
33
+ readonly annotations?: ToolAnnotations;
34
+ readonly handler: (input: unknown, context: ToolContext) => ToolOutcome;
35
+ }
36
+ type InputOf<Shape extends ZodRawShape> = z.infer<z.ZodObject<Shape>>;
37
+ /** Configuration for a tool that routes through the command queue. */
38
+ export interface QueuedToolConfig<Shape extends ZodRawShape> {
39
+ readonly name: string;
40
+ readonly title: string;
41
+ readonly description: string;
42
+ readonly inputShape: Shape;
43
+ readonly annotations?: ToolAnnotations;
44
+ /** Maps validated input to the bridge command payload. Defaults to identity. */
45
+ readonly toPayload?: (input: InputOf<Shape>) => unknown;
46
+ }
47
+ /**
48
+ * Defines a tool whose handler validates input, enqueues a command whose
49
+ * `kind` is the tool name, awaits the behavior pack's result, and returns it
50
+ * as a consistent tool envelope.
51
+ */
52
+ export declare function defineQueuedTool<Shape extends ZodRawShape>(config: QueuedToolConfig<Shape>): ToolDefinition;
53
+ /** Configuration for a tool whose handler runs on the MCP server host. */
54
+ export interface LocalToolConfig<Shape extends ZodRawShape> {
55
+ readonly name: string;
56
+ readonly title: string;
57
+ readonly description: string;
58
+ readonly inputShape: Shape;
59
+ readonly annotations?: ToolAnnotations;
60
+ readonly handler: (input: InputOf<Shape>, context: ToolContext) => ToolOutcome;
61
+ }
62
+ /**
63
+ * Defines a tool whose handler runs locally — filesystem operations, or tools
64
+ * that work directly with the subscription registry.
65
+ */
66
+ export declare function defineLocalTool<Shape extends ZodRawShape>(config: LocalToolConfig<Shape>): ToolDefinition;
67
+ export {};
68
+ //# sourceMappingURL=tool-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definition.d.ts","sourceRoot":"","sources":["../../src/tools/tool-definition.ts"],"names":[],"mappings":"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"}