clay-server 4.7.0-beta.4 → 4.7.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/sdk-bridge.js +1 -31
- package/lib/sdk-mcp-descriptors.js +36 -0
- package/package.json +1 -1
package/lib/sdk-bridge.js
CHANGED
|
@@ -18,37 +18,7 @@ var sessionTitlePolicy = require("./session-title-policy");
|
|
|
18
18
|
var sessionTitleGenerator = require("./session-title-generator");
|
|
19
19
|
var loopInterview = require("./project-loop-interview");
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
// Used for IPC to worker processes (McpSdkServerConfigWithInstance is not serializable).
|
|
23
|
-
function extractMcpDescriptors(mcpServers) {
|
|
24
|
-
if (!mcpServers) return null;
|
|
25
|
-
var toJSONSchema;
|
|
26
|
-
try { toJSONSchema = require("zod").toJSONSchema; } catch (e) { return null; }
|
|
27
|
-
var descriptors = [];
|
|
28
|
-
var names = Object.keys(mcpServers);
|
|
29
|
-
for (var i = 0; i < names.length; i++) {
|
|
30
|
-
var serverName = names[i];
|
|
31
|
-
var server = mcpServers[serverName];
|
|
32
|
-
if (!server || !server.instance || !server.instance._registeredTools) continue;
|
|
33
|
-
var tools = [];
|
|
34
|
-
var toolNames = Object.keys(server.instance._registeredTools);
|
|
35
|
-
for (var j = 0; j < toolNames.length; j++) {
|
|
36
|
-
var toolName = toolNames[j];
|
|
37
|
-
var toolDef = server.instance._registeredTools[toolName];
|
|
38
|
-
var inputSchema = { type: "object", properties: {} };
|
|
39
|
-
try {
|
|
40
|
-
if (toolDef.inputSchema) inputSchema = toJSONSchema(toolDef.inputSchema);
|
|
41
|
-
} catch (e) { /* fallback to empty schema */ }
|
|
42
|
-
tools.push({
|
|
43
|
-
name: toolName,
|
|
44
|
-
description: toolDef.description || toolName,
|
|
45
|
-
inputSchema: inputSchema,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
if (tools.length > 0) descriptors.push({ serverName: serverName, tools: tools });
|
|
49
|
-
}
|
|
50
|
-
return descriptors.length > 0 ? descriptors : null;
|
|
51
|
-
}
|
|
21
|
+
var extractMcpDescriptors = require("./sdk-mcp-descriptors").extractMcpDescriptors;
|
|
52
22
|
|
|
53
23
|
// Call an MCP tool handler by server name and tool name.
|
|
54
24
|
// Returns a promise that resolves with the tool result.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Extract serializable tool descriptors from MCP server instances.
|
|
2
|
+
// Used for IPC to worker processes (McpSdkServerConfigWithInstance is not serializable).
|
|
3
|
+
function extractMcpDescriptors(mcpServers) {
|
|
4
|
+
if (!mcpServers) return null;
|
|
5
|
+
// Claude's adapter uses Zod v3 for JSON Schema tools; other servers use v4.
|
|
6
|
+
// Use the MCP SDK's version-aware converter for both kinds of registered tool.
|
|
7
|
+
var toJSONSchema = require("@modelcontextprotocol/sdk/server/zod-json-schema-compat.js").toJsonSchemaCompat;
|
|
8
|
+
var descriptors = [];
|
|
9
|
+
var names = Object.keys(mcpServers);
|
|
10
|
+
for (var i = 0; i < names.length; i++) {
|
|
11
|
+
var serverName = names[i];
|
|
12
|
+
var server = mcpServers[serverName];
|
|
13
|
+
if (!server || !server.instance || !server.instance._registeredTools) continue;
|
|
14
|
+
var tools = [];
|
|
15
|
+
var toolNames = Object.keys(server.instance._registeredTools);
|
|
16
|
+
for (var j = 0; j < toolNames.length; j++) {
|
|
17
|
+
var toolName = toolNames[j];
|
|
18
|
+
var toolDef = server.instance._registeredTools[toolName];
|
|
19
|
+
var inputSchema = { type: "object", properties: {} };
|
|
20
|
+
try {
|
|
21
|
+
if (toolDef.inputSchema) inputSchema = toJSONSchema(toolDef.inputSchema);
|
|
22
|
+
} catch (e) {
|
|
23
|
+
throw new Error("Cannot serialize MCP tool schema " + serverName + "/" + toolName + ": " + e.message);
|
|
24
|
+
}
|
|
25
|
+
tools.push({
|
|
26
|
+
name: toolName,
|
|
27
|
+
description: toolDef.description || toolName,
|
|
28
|
+
inputSchema: inputSchema,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
if (tools.length > 0) descriptors.push({ serverName: serverName, tools: tools });
|
|
32
|
+
}
|
|
33
|
+
return descriptors.length > 0 ? descriptors : null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
module.exports = { extractMcpDescriptors: extractMcpDescriptors };
|
package/package.json
CHANGED