foundryvtt-mcp 1.0.0 → 1.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 (56) hide show
  1. package/README.md +25 -3
  2. package/dist/character/manager.js +1 -1
  3. package/dist/character/manager.js.map +1 -1
  4. package/dist/combat/manager.d.ts +1 -2
  5. package/dist/combat/manager.d.ts.map +1 -1
  6. package/dist/combat/manager.js +3 -5
  7. package/dist/combat/manager.js.map +1 -1
  8. package/dist/config/index.d.ts +2 -0
  9. package/dist/config/index.d.ts.map +1 -1
  10. package/dist/config/index.js +4 -0
  11. package/dist/config/index.js.map +1 -1
  12. package/dist/foundry/auth.d.ts.map +1 -1
  13. package/dist/foundry/auth.js +5 -4
  14. package/dist/foundry/auth.js.map +1 -1
  15. package/dist/foundry/client.d.ts +112 -1
  16. package/dist/foundry/client.d.ts.map +1 -1
  17. package/dist/foundry/client.js +353 -10
  18. package/dist/foundry/client.js.map +1 -1
  19. package/dist/foundry/types.d.ts +76 -16
  20. package/dist/foundry/types.d.ts.map +1 -1
  21. package/dist/index.js +26 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/tools/definitions.d.ts +167 -0
  24. package/dist/tools/definitions.d.ts.map +1 -1
  25. package/dist/tools/definitions.js +179 -1
  26. package/dist/tools/definitions.js.map +1 -1
  27. package/dist/tools/handlers/actor-mutations.d.ts +26 -0
  28. package/dist/tools/handlers/actor-mutations.d.ts.map +1 -0
  29. package/dist/tools/handlers/actor-mutations.js +49 -0
  30. package/dist/tools/handlers/actor-mutations.js.map +1 -0
  31. package/dist/tools/handlers/chat.js +1 -1
  32. package/dist/tools/handlers/chat.js.map +1 -1
  33. package/dist/tools/handlers/compendium.d.ts +37 -0
  34. package/dist/tools/handlers/compendium.d.ts.map +1 -0
  35. package/dist/tools/handlers/compendium.js +83 -0
  36. package/dist/tools/handlers/compendium.js.map +1 -0
  37. package/dist/tools/handlers/diagnostics.d.ts +6 -1
  38. package/dist/tools/handlers/diagnostics.d.ts.map +1 -1
  39. package/dist/tools/handlers/diagnostics.js +52 -11
  40. package/dist/tools/handlers/diagnostics.js.map +1 -1
  41. package/dist/tools/handlers/item-mutations.d.ts +51 -0
  42. package/dist/tools/handlers/item-mutations.d.ts.map +1 -0
  43. package/dist/tools/handlers/item-mutations.js +118 -0
  44. package/dist/tools/handlers/item-mutations.js.map +1 -0
  45. package/dist/tools/router.d.ts.map +1 -1
  46. package/dist/tools/router.js +46 -0
  47. package/dist/tools/router.js.map +1 -1
  48. package/dist/utils/logger.d.ts +0 -1
  49. package/dist/utils/logger.d.ts.map +1 -1
  50. package/dist/utils/logger.js +0 -1
  51. package/dist/utils/logger.js.map +1 -1
  52. package/package.json +30 -14
  53. package/dist/resources/index.d.ts +0 -3
  54. package/dist/resources/index.d.ts.map +0 -1
  55. package/dist/resources/index.js +0 -93
  56. package/dist/resources/index.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Actor item mutation tool handlers (create / update / delete)
3
+ *
4
+ * WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
5
+ * connection (mutations use the core `modifyDocument` protocol). The canonical
6
+ * mutation target is the D&D 5e v4+ activity schema; item `system` patches
7
+ * honour JSON-merge-patch semantics on nested paths such as
8
+ * `activities.{id}.consumption.targets`.
9
+ */
10
+ import type { FoundryClient } from '../../foundry/client.js';
11
+ import type { ActorItemCreateSource } from '../../foundry/types.js';
12
+ /**
13
+ * Handles creating an item on an actor from a compendium reference or an inline
14
+ * item document.
15
+ */
16
+ export declare function handleCreateActorItem(args: {
17
+ actorId: string;
18
+ source: ActorItemCreateSource;
19
+ }, foundryClient: FoundryClient): Promise<{
20
+ content: {
21
+ type: string;
22
+ text: string;
23
+ }[];
24
+ }>;
25
+ /**
26
+ * Handles applying a JSON merge patch to an item's `system` data. Supports
27
+ * nested paths (e.g. `activities.{id}.consumption.targets`).
28
+ */
29
+ export declare function handleUpdateActorItem(args: {
30
+ actorId: string;
31
+ itemId: string;
32
+ patch: Record<string, unknown>;
33
+ }, foundryClient: FoundryClient): Promise<{
34
+ content: {
35
+ type: string;
36
+ text: string;
37
+ }[];
38
+ }>;
39
+ /**
40
+ * Handles deleting an item owned by an actor.
41
+ */
42
+ export declare function handleDeleteActorItem(args: {
43
+ actorId: string;
44
+ itemId: string;
45
+ }, foundryClient: FoundryClient): Promise<{
46
+ content: {
47
+ type: string;
48
+ text: string;
49
+ }[];
50
+ }>;
51
+ //# sourceMappingURL=item-mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-mutations.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/item-mutations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;CAC/B,EACD,aAAa,EAAE,aAAa;;;;;GAgD7B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,aAAa,EAAE,aAAa;;;;;GAgC7B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,EACD,aAAa,EAAE,aAAa;;;;;GA2B7B"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @fileoverview Actor item mutation tool handlers (create / update / delete)
3
+ *
4
+ * WRITE operations — require FOUNDRY_WRITE_ENABLED=true and an active Socket.IO
5
+ * connection (mutations use the core `modifyDocument` protocol). The canonical
6
+ * mutation target is the D&D 5e v4+ activity schema; item `system` patches
7
+ * honour JSON-merge-patch semantics on nested paths such as
8
+ * `activities.{id}.consumption.targets`.
9
+ */
10
+ import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
11
+ import { withToolError } from './utils.js';
12
+ /**
13
+ * Handles creating an item on an actor from a compendium reference or an inline
14
+ * item document.
15
+ */
16
+ export async function handleCreateActorItem(args, foundryClient) {
17
+ const { actorId, source } = args;
18
+ if (!actorId || typeof actorId !== 'string') {
19
+ throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
20
+ }
21
+ if (!source || typeof source !== 'object') {
22
+ throw new McpError(ErrorCode.InvalidParams, 'source is required and must be an object');
23
+ }
24
+ if (source.type === 'compendium') {
25
+ if (typeof source.compendiumId !== 'string' || typeof source.itemId !== 'string') {
26
+ throw new McpError(ErrorCode.InvalidParams, 'compendium source requires compendiumId and itemId strings');
27
+ }
28
+ }
29
+ else if (source.type === 'inline') {
30
+ if (!source.item || typeof source.item !== 'object') {
31
+ throw new McpError(ErrorCode.InvalidParams, 'inline source requires an item object');
32
+ }
33
+ }
34
+ else {
35
+ throw new McpError(ErrorCode.InvalidParams, 'source.type must be "compendium" or "inline"');
36
+ }
37
+ return withToolError('create item', async () => {
38
+ const newItem = await foundryClient.createActorItem(actorId, source);
39
+ const origin = source.type === 'compendium'
40
+ ? `compendium ${source.compendiumId} / ${source.itemId}`
41
+ : 'inline definition';
42
+ return {
43
+ content: [
44
+ {
45
+ type: 'text',
46
+ text: `⚔️ **Item Created**
47
+ **Actor:** ${actorId}
48
+ **Item:** ${newItem.name} (${newItem.type})
49
+ **Item ID:** ${newItem._id}
50
+ **Source:** ${origin}
51
+
52
+ _Canonical target: D&D 5e v4+ activity schema._`,
53
+ },
54
+ ],
55
+ };
56
+ });
57
+ }
58
+ /**
59
+ * Handles applying a JSON merge patch to an item's `system` data. Supports
60
+ * nested paths (e.g. `activities.{id}.consumption.targets`).
61
+ */
62
+ export async function handleUpdateActorItem(args, foundryClient) {
63
+ const { actorId, itemId, patch } = args;
64
+ if (!actorId || typeof actorId !== 'string') {
65
+ throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
66
+ }
67
+ if (!itemId || typeof itemId !== 'string') {
68
+ throw new McpError(ErrorCode.InvalidParams, 'itemId is required and must be a string');
69
+ }
70
+ if (!patch || typeof patch !== 'object' || Array.isArray(patch)) {
71
+ throw new McpError(ErrorCode.InvalidParams, 'patch is required and must be an object');
72
+ }
73
+ return withToolError('update item', async () => {
74
+ const updatedItem = await foundryClient.updateActorItem(actorId, itemId, patch);
75
+ return {
76
+ content: [
77
+ {
78
+ type: 'text',
79
+ text: `⚔️ **Item Updated**
80
+ **Actor:** ${actorId}
81
+ **Item:** ${updatedItem.name} (${updatedItem.type})
82
+ **Item ID:** ${updatedItem._id}
83
+ **Patched keys:** ${Object.keys(patch).join(', ') || '(none)'}
84
+
85
+ _JSON merge patch applied to item.system. Canonical target: D&D 5e v4+ activity schema (e.g. activities.{id}.consumption.targets)._`,
86
+ },
87
+ ],
88
+ };
89
+ });
90
+ }
91
+ /**
92
+ * Handles deleting an item owned by an actor.
93
+ */
94
+ export async function handleDeleteActorItem(args, foundryClient) {
95
+ const { actorId, itemId } = args;
96
+ if (!actorId || typeof actorId !== 'string') {
97
+ throw new McpError(ErrorCode.InvalidParams, 'actorId is required and must be a string');
98
+ }
99
+ if (!itemId || typeof itemId !== 'string') {
100
+ throw new McpError(ErrorCode.InvalidParams, 'itemId is required and must be a string');
101
+ }
102
+ return withToolError('delete item', async () => {
103
+ await foundryClient.deleteActorItem(actorId, itemId);
104
+ return {
105
+ content: [
106
+ {
107
+ type: 'text',
108
+ text: `🗑️ **Item Deleted**
109
+ **Actor:** ${actorId}
110
+ **Item ID:** ${itemId}
111
+
112
+ _Canonical target: D&D 5e v4+ activity schema._`,
113
+ },
114
+ ],
115
+ };
116
+ });
117
+ }
118
+ //# sourceMappingURL=item-mutations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-mutations.js","sourceRoot":"","sources":["../../../src/tools/handlers/item-mutations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,WAAW,CAAC;AA0BzD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,UAAU,CAAC,CA0HrB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;;GAIrC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,WAAW,CAAC;AAiCzD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,UAAU,CAAC,CA+LrB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;;;;;;GAIrC"}
@@ -3,13 +3,16 @@
3
3
  */
4
4
  import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
5
5
  import { logger } from '../utils/logger.js';
6
+ import { handleUpdateActorAttribute } from './handlers/actor-mutations.js';
6
7
  import { handleGetActorDetails, handleSearchActors } from './handlers/actors.js';
7
8
  import { handleGetChatMessages } from './handlers/chat.js';
8
9
  import { handleGetCombatState } from './handlers/combat.js';
10
+ import { handleSearchCompendium } from './handlers/compendium.js';
9
11
  import { handleDiagnoseErrors, handleGetHealthStatus, handleGetRecentLogs, handleGetSystemHealth, handleSearchLogs, } from './handlers/diagnostics.js';
10
12
  // Import all tool handlers
11
13
  import { handleRollDice } from './handlers/dice.js';
12
14
  import { handleGenerateLoot, handleGenerateNPC, handleLookupRule } from './handlers/generation.js';
15
+ import { handleCreateActorItem, handleDeleteActorItem, handleUpdateActorItem, } from './handlers/item-mutations.js';
13
16
  import { handleSearchItems } from './handlers/items.js';
14
17
  import { handleGetJournal, handleSearchJournals } from './handlers/journals.js';
15
18
  import { handleReadResource } from './handlers/resources.js';
@@ -54,9 +57,52 @@ export async function routeToolRequest(name, args, foundryClient, diagnosticsCli
54
57
  throw new Error('Missing required parameter: actorId');
55
58
  }
56
59
  return handleGetActorDetails(args, foundryClient);
60
+ // Actor mutation tools (#143, require REST API module)
61
+ case 'update_actor_attributes':
62
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
63
+ throw new Error('Missing required parameter: actorId');
64
+ }
65
+ if (!('patch' in args) || typeof args.patch !== 'object' || args.patch === null) {
66
+ throw new Error('Missing required parameter: patch');
67
+ }
68
+ return handleUpdateActorAttribute(args, foundryClient);
57
69
  // Item tools
58
70
  case 'search_items':
59
71
  return handleSearchItems(args, foundryClient);
72
+ // Compendium tools (#144)
73
+ case 'search_compendium':
74
+ if (!('query' in args) || typeof args.query !== 'string') {
75
+ throw new Error('Missing required parameter: query');
76
+ }
77
+ return handleSearchCompendium(args, foundryClient);
78
+ // Item mutation tools (WRITE — require REST API module)
79
+ case 'create_actor_item':
80
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
81
+ throw new Error('Missing required parameter: actorId');
82
+ }
83
+ if (!('source' in args) || typeof args.source !== 'object' || args.source === null) {
84
+ throw new Error('Missing required parameter: source');
85
+ }
86
+ return handleCreateActorItem(args, foundryClient);
87
+ case 'update_actor_item':
88
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
89
+ throw new Error('Missing required parameter: actorId');
90
+ }
91
+ if (!('itemId' in args) || typeof args.itemId !== 'string') {
92
+ throw new Error('Missing required parameter: itemId');
93
+ }
94
+ if (!('patch' in args) || typeof args.patch !== 'object' || args.patch === null) {
95
+ throw new Error('Missing required parameter: patch');
96
+ }
97
+ return handleUpdateActorItem(args, foundryClient);
98
+ case 'delete_actor_item':
99
+ if (!('actorId' in args) || typeof args.actorId !== 'string') {
100
+ throw new Error('Missing required parameter: actorId');
101
+ }
102
+ if (!('itemId' in args) || typeof args.itemId !== 'string') {
103
+ throw new Error('Missing required parameter: itemId');
104
+ }
105
+ return handleDeleteActorItem(args, foundryClient);
60
106
  // Scene tools
61
107
  case 'get_scene_info':
62
108
  return handleGetSceneInfo(args, foundryClient);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/tools/router.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,6 @@ type LogLevel = 'debug' | 'info' | 'warn' | 'error';
23
23
  * Provides methods for different log levels and automatically filters
24
24
  * messages based on the configured minimum log level.
25
25
  *
26
- * @class Logger
27
26
  * @example
28
27
  * ```typescript
29
28
  * import { logger } from './utils/logger.js';
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;GAOG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAKZ;IAEF;;;;OAIG;gBACS,QAAQ,GAAE,QAAiB;IAIvC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;CAO9C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,QAA8B,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;GAOG;AACH,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,cAAM,MAAM;IACV,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAKZ;IAEF;;;;OAIG;gBACS,QAAQ,GAAE,QAAiB;IAIvC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAMrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;CAO9C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,QAA8B,CAAC"}
@@ -15,7 +15,6 @@ import { config } from '../config/index.js';
15
15
  * Provides methods for different log levels and automatically filters
16
16
  * messages based on the configured minimum log level.
17
17
  *
18
- * @class Logger
19
18
  * @example
20
19
  * ```typescript
21
20
  * import { logger } from './utils/logger.js';
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM;IACF,QAAQ,CAAW;IACnB,MAAM,GAA6B;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;KACT,CAAC;IAEF;;;;OAIG;IACH,YAAY,WAAqB,MAAM;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QACpE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,GAAG,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAe,EAAE,KAAe;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAY5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM;IACF,QAAQ,CAAW;IACnB,MAAM,GAA6B;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;KACT,CAAC;IAEF;;;;OAIG;IACH,YAAY,WAAqB,MAAM;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;OAQG;IACK,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc;QACpE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,GAAG,OAAO,EAAE,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAe,EAAE,KAAe;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foundryvtt-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Model Context Protocol server for FoundryVTT integration",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -8,9 +8,11 @@
8
8
  },
9
9
  "type": "module",
10
10
  "scripts": {
11
- "build": "tsc",
11
+ "build": "tsc && chmod +x dist/index.js",
12
12
  "dev": "tsx watch src/index.ts",
13
13
  "start": "node dist/index.js",
14
+ "smoke": "node scripts/smoke-test.js",
15
+ "smoke:pack": "node scripts/smoke-pack.js",
14
16
  "test": "vitest run",
15
17
  "test:watch": "vitest --watch",
16
18
  "test:coverage": "vitest run --coverage",
@@ -68,28 +70,42 @@
68
70
  "LICENSE"
69
71
  ],
70
72
  "dependencies": {
71
- "@modelcontextprotocol/sdk": "^1.27.1",
72
- "ajv": "^8.17.1",
73
- "axios": "^1.13.5",
74
- "dotenv": "^17.3.1",
73
+ "@modelcontextprotocol/sdk": "^1.29.0",
74
+ "ajv": "^8.20.0",
75
+ "axios": "^1.16.0",
76
+ "dotenv": "^17.4.2",
75
77
  "socket.io-client": "^4.8.3",
76
- "zod": "^4.3.6"
78
+ "zod": "^4.4.3"
77
79
  },
78
80
  "devDependencies": {
79
- "@biomejs/biome": "^2.3.15",
80
- "@playwright/test": "^1.58.2",
81
- "@types/node": "^25.3.3",
81
+ "@biomejs/biome": "^2.4.15",
82
+ "@playwright/test": "^1.60.0",
83
+ "@types/node": "^25.7.0",
82
84
  "husky": "^9.1.7",
83
- "lint-staged": "^16.3.2",
85
+ "lint-staged": "^17.0.4",
84
86
  "rimraf": "^6.1.3",
85
87
  "tsx": "^4.21.0",
86
- "typedoc": "^0.28.16",
87
- "typescript": "^5.9.3",
88
- "vitest": "^4.0.18"
88
+ "typedoc": "^0.28.19",
89
+ "typescript": "^6.0.3",
90
+ "vitest": "^4.1.6"
89
91
  },
90
92
  "engines": {
91
93
  "node": ">=18.0.0"
92
94
  },
95
+ "overrides": {
96
+ "@hono/node-server": "^1.19.14",
97
+ "hono": "^4.12.18",
98
+ "express-rate-limit": "^8.5.1",
99
+ "ip-address": "^10.2.0",
100
+ "path-to-regexp": "^8.4.2",
101
+ "fast-uri": "^3.1.2",
102
+ "socket.io-parser": "^4.2.6",
103
+ "vite": "^7.3.3",
104
+ "rollup": "^4.60.3",
105
+ "postcss": "^8.5.14",
106
+ "picomatch": "^4.0.4",
107
+ "brace-expansion": "^5.0.6"
108
+ },
93
109
  "lint-staged": {
94
110
  "src/**/*.{ts,tsx,js,jsx}": [
95
111
  "biome check --write"
@@ -1,3 +0,0 @@
1
- import type { Resource } from '@modelcontextprotocol/sdk/types.js';
2
- export declare const resourceDefinitions: Resource[];
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAyGzC,CAAC"}
@@ -1,93 +0,0 @@
1
- export const resourceDefinitions = [
2
- {
3
- uri: 'foundry://world/info',
4
- name: 'World Information',
5
- description: 'Current world/campaign information including title, system, and settings',
6
- mimeType: 'application/json',
7
- },
8
- {
9
- uri: 'foundry://world/actors',
10
- name: 'All Actors',
11
- description: 'Complete list of all actors in the world (characters, NPCs, monsters)',
12
- mimeType: 'application/json',
13
- },
14
- {
15
- uri: 'foundry://world/items',
16
- name: 'All Items',
17
- description: 'Complete list of all items, equipment, and spells in the world',
18
- mimeType: 'application/json',
19
- },
20
- {
21
- uri: 'foundry://world/scenes',
22
- name: 'All Scenes',
23
- description: 'List of all scenes/maps in the world',
24
- mimeType: 'application/json',
25
- },
26
- {
27
- uri: 'foundry://world/journals',
28
- name: 'Journal Entries',
29
- description: 'All journal entries, notes, and handouts',
30
- mimeType: 'application/json',
31
- },
32
- {
33
- uri: 'foundry://world/macros',
34
- name: 'Macros',
35
- description: 'Available macros and scripts',
36
- mimeType: 'application/json',
37
- },
38
- {
39
- uri: 'foundry://scene/current',
40
- name: 'Current Scene',
41
- description: 'Information about the currently active scene',
42
- mimeType: 'application/json',
43
- },
44
- {
45
- uri: 'foundry://combat/current',
46
- name: 'Current Combat',
47
- description: 'Active combat encounter state and initiative order',
48
- mimeType: 'application/json',
49
- },
50
- {
51
- uri: 'foundry://users/online',
52
- name: 'Online Users',
53
- description: 'Currently connected users and their status',
54
- mimeType: 'application/json',
55
- },
56
- {
57
- uri: 'foundry://system/info',
58
- name: 'Game System',
59
- description: 'Information about the current game system and its rules',
60
- mimeType: 'application/json',
61
- },
62
- {
63
- uri: 'foundry://compendium/spells',
64
- name: 'Spell Compendium',
65
- description: 'All available spells from compendium packs',
66
- mimeType: 'application/json',
67
- },
68
- {
69
- uri: 'foundry://compendium/monsters',
70
- name: 'Monster Compendium',
71
- description: 'All available monsters and NPCs from compendium packs',
72
- mimeType: 'application/json',
73
- },
74
- {
75
- uri: 'foundry://compendium/items',
76
- name: 'Item Compendium',
77
- description: 'All available items and equipment from compendium packs',
78
- mimeType: 'application/json',
79
- },
80
- {
81
- uri: 'foundry://playlists/all',
82
- name: 'Audio Playlists',
83
- description: 'All available audio playlists and currently playing tracks',
84
- mimeType: 'application/json',
85
- },
86
- {
87
- uri: 'foundry://settings/game',
88
- name: 'Game Settings',
89
- description: 'Current world and system settings configuration',
90
- mimeType: 'application/json',
91
- },
92
- ];
93
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C;QACE,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,0EAA0E;QACvF,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gEAAgE;QAC7E,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oDAAoD;QACjE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,wBAAwB;QAC7B,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,+BAA+B;QACpC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,uDAAuD;QACpE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,kBAAkB;KAC7B;IAED;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC"}