@wiro-ai/wiro-mcp 1.2.1 → 1.2.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAS7D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAc7D"}
package/dist/server.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { createRequire } from 'node:module';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { registerTools } from './tools/index.js';
4
+ import { withJsonSchema2020_12 } from './utils/json-schema-dialect.js';
4
5
  export { WiroClient } from './client.js';
5
6
  export { registerTools } from './tools/index.js';
6
7
  const require = createRequire(import.meta.url);
@@ -11,6 +12,9 @@ export function createMcpServer(client) {
11
12
  version,
12
13
  });
13
14
  registerTools(server, client);
15
+ // Claude and other 2020-12-only MCP clients reject the SDK's draft-07 $schema.
16
+ const originalConnect = server.connect.bind(server);
17
+ server.connect = (transport) => originalConnect(withJsonSchema2020_12(transport));
14
18
  return server;
15
19
  }
16
20
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,iBAAiB;QACvB,OAAO;KACR,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,UAAU,eAAe,CAAC,MAAkB;IAChD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,iBAAiB;QACvB,OAAO;KACR,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,+EAA+E;IAC/E,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,CAAC,SAAoB,EAAE,EAAE,CACxC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
2
+ /**
3
+ * MCP SDK 1.30 still advertises Zod tool schemas as JSON Schema draft-07.
4
+ * Claude and other 2020-12-only clients reject those tools before dispatch.
5
+ * Rewrite the tools/list payload at the transport boundary instead of
6
+ * depending on an SDK target option that is not currently passed through.
7
+ */
8
+ export declare const JSON_SCHEMA_2020_12 = "https://json-schema.org/draft/2020-12/schema";
9
+ export declare function toJsonSchema2020_12<T>(schema: T): T;
10
+ export declare function normalizeOutgoingMessage(message: unknown): unknown;
11
+ export declare function withJsonSchema2020_12<T extends Transport>(transport: T): T;
12
+ //# sourceMappingURL=json-schema-dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-dialect.d.ts","sourceRoot":"","sources":["../../src/utils/json-schema-dialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,iDAAiD,CAAC;AAgHlF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAMnD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAmBlE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAK1E"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * MCP SDK 1.30 still advertises Zod tool schemas as JSON Schema draft-07.
3
+ * Claude and other 2020-12-only clients reject those tools before dispatch.
4
+ * Rewrite the tools/list payload at the transport boundary instead of
5
+ * depending on an SDK target option that is not currently passed through.
6
+ */
7
+ export const JSON_SCHEMA_2020_12 = 'https://json-schema.org/draft/2020-12/schema';
8
+ const DEFINITIONS_REF_PREFIX = '#/definitions/';
9
+ const SCHEMA_MAP_KEYWORDS = new Set([
10
+ 'properties',
11
+ 'patternProperties',
12
+ '$defs',
13
+ 'dependentSchemas',
14
+ ]);
15
+ const DATA_KEYWORDS = new Set([
16
+ 'enum',
17
+ 'const',
18
+ 'default',
19
+ 'examples',
20
+ 'required',
21
+ 'dependentRequired',
22
+ ]);
23
+ function isPlainObject(value) {
24
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
25
+ }
26
+ function convertSchemaMap(node) {
27
+ if (!isPlainObject(node))
28
+ return node;
29
+ const out = {};
30
+ for (const [name, subschema] of Object.entries(node)) {
31
+ out[name] = convertNode(subschema);
32
+ }
33
+ return out;
34
+ }
35
+ function convertNode(node) {
36
+ if (Array.isArray(node))
37
+ return node.map(convertNode);
38
+ if (!isPlainObject(node))
39
+ return node;
40
+ const hasTupleItems = Array.isArray(node.items);
41
+ const out = {};
42
+ for (const [key, value] of Object.entries(node)) {
43
+ switch (key) {
44
+ case '$schema':
45
+ break;
46
+ case 'definitions':
47
+ out.$defs = convertSchemaMap(value);
48
+ break;
49
+ case '$ref':
50
+ out.$ref = typeof value === 'string' && value.startsWith(DEFINITIONS_REF_PREFIX)
51
+ ? `#/$defs/${value.slice(DEFINITIONS_REF_PREFIX.length)}`
52
+ : value;
53
+ break;
54
+ case 'items':
55
+ if (hasTupleItems)
56
+ out.prefixItems = value.map(convertNode);
57
+ else
58
+ out.items = convertNode(value);
59
+ break;
60
+ case 'additionalItems':
61
+ if (hasTupleItems)
62
+ out.items = convertNode(value);
63
+ break;
64
+ case 'dependencies': {
65
+ const dependentRequired = {};
66
+ const dependentSchemas = {};
67
+ if (isPlainObject(value)) {
68
+ for (const [property, dependency] of Object.entries(value)) {
69
+ if (Array.isArray(dependency))
70
+ dependentRequired[property] = dependency;
71
+ else
72
+ dependentSchemas[property] = convertNode(dependency);
73
+ }
74
+ }
75
+ if (Object.keys(dependentRequired).length > 0) {
76
+ out.dependentRequired = dependentRequired;
77
+ }
78
+ if (Object.keys(dependentSchemas).length > 0) {
79
+ out.dependentSchemas = dependentSchemas;
80
+ }
81
+ break;
82
+ }
83
+ case 'exclusiveMinimum':
84
+ case 'exclusiveMaximum': {
85
+ const bound = key === 'exclusiveMinimum' ? node.minimum : node.maximum;
86
+ if (value === true && typeof bound === 'number')
87
+ out[key] = bound;
88
+ else if (value !== false)
89
+ out[key] = convertNode(value);
90
+ break;
91
+ }
92
+ case 'minimum':
93
+ if (node.exclusiveMinimum === true)
94
+ break;
95
+ out.minimum = convertNode(value);
96
+ break;
97
+ case 'maximum':
98
+ if (node.exclusiveMaximum === true)
99
+ break;
100
+ out.maximum = convertNode(value);
101
+ break;
102
+ default:
103
+ if (DATA_KEYWORDS.has(key))
104
+ out[key] = value;
105
+ else if (SCHEMA_MAP_KEYWORDS.has(key))
106
+ out[key] = convertSchemaMap(value);
107
+ else
108
+ out[key] = convertNode(value);
109
+ }
110
+ }
111
+ return out;
112
+ }
113
+ export function toJsonSchema2020_12(schema) {
114
+ if (!isPlainObject(schema))
115
+ return schema;
116
+ return {
117
+ $schema: JSON_SCHEMA_2020_12,
118
+ ...convertNode(schema),
119
+ };
120
+ }
121
+ export function normalizeOutgoingMessage(message) {
122
+ if (!isPlainObject(message))
123
+ return message;
124
+ const result = message.result;
125
+ if (!isPlainObject(result) || !Array.isArray(result.tools))
126
+ return message;
127
+ const tools = result.tools.map(tool => {
128
+ if (!isPlainObject(tool))
129
+ return tool;
130
+ const next = { ...tool };
131
+ if (isPlainObject(tool.inputSchema)) {
132
+ next.inputSchema = toJsonSchema2020_12(tool.inputSchema);
133
+ }
134
+ if (isPlainObject(tool.outputSchema)) {
135
+ next.outputSchema = toJsonSchema2020_12(tool.outputSchema);
136
+ }
137
+ return next;
138
+ });
139
+ return { ...message, result: { ...result, tools } };
140
+ }
141
+ export function withJsonSchema2020_12(transport) {
142
+ const originalSend = transport.send.bind(transport);
143
+ transport.send = (message, options) => originalSend(normalizeOutgoingMessage(message), options);
144
+ return transport;
145
+ }
146
+ //# sourceMappingURL=json-schema-dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-dialect.js","sourceRoot":"","sources":["../../src/utils/json-schema-dialect.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAElF,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,YAAY;IACZ,mBAAmB;IACnB,OAAO;IACP,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,UAAU;IACV,mBAAmB;CACpB,CAAC,CAAC;AAIH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,SAAS;gBACZ,MAAM;YAER,KAAK,aAAa;gBAChB,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM;YAER,KAAK,MAAM;gBACT,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC;oBAC9E,CAAC,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;oBACzD,CAAC,CAAC,KAAK,CAAC;gBACV,MAAM;YAER,KAAK,OAAO;gBACV,IAAI,aAAa;oBAAE,GAAG,CAAC,WAAW,GAAI,KAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;oBACtE,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM;YAER,KAAK,iBAAiB;gBACpB,IAAI,aAAa;oBAAE,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM;YAER,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,iBAAiB,GAAe,EAAE,CAAC;gBACzC,MAAM,gBAAgB,GAAe,EAAE,CAAC;gBACxC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;4BAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;;4BACnE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9C,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;gBAC5C,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;gBAC1C,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC;YACxB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,GAAG,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBAC7D,IAAI,KAAK,KAAK,KAAK;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YAED,KAAK,SAAS;gBACZ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;oBAAE,MAAM;gBAC1C,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM;YAER,KAAK,SAAS;gBACZ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;oBAAE,MAAM;gBAC1C,GAAG,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM;YAER;gBACE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBACxC,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;;oBACrE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,MAAS;IAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,mBAAmB;QAC5B,GAAI,WAAW,CAAC,MAAM,CAAgB;KAClC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,IAAI,GAAe,EAAE,GAAG,IAAI,EAAE,CAAC;QACrC,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,SAAY;IACrE,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACpC,YAAY,CAAC,wBAAwB,CAAC,OAAO,CAAqC,EAAE,OAAO,CAAC,CAAC;IAC/F,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiro-ai/wiro-mcp",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Official MCP server for Wiro AI — access all AI models on Wiro from Cursor, Claude, Windsurf, and any MCP-compatible AI assistant",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",