@utdk/mcp 0.1.0-dev.646adf4 → 0.1.0-dev.8f50777

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":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AA+C9C;;GAEG;AACH,SAAS,iBAAiB,CAAC,aAAqB;IAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAAC,YAAoB;IAIrD,MAAM,WAAW,GAAG,SAAS,YAAY,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,MAAM,CAAC,GAAG,WAAW,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACnF,MAAM,CAAC,GAAG,WAAW,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACpF,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,8DAA8D;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2EAA2E,WAAW,IAAI,CAC3F,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,UAAU,EAAG,UAAmD,CAAC,OAAkC;YACnG,WAAW,EAAG,MAAuC,CAAC,OAA0B;SACjF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iDAAiD,YAAY,KAAK,GAAG,IAAI,CAC1E,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,YAAoB,EACpB,UAAmC,EACnC,IAA8B;IAE9B,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAE;QACjD,gBAAgB,EAAE,YAAY;KAC/B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAuD,CAAC;QAC9E,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,IAAI,kBAAkB,CAAC;QAChE,MAAM,aAAa,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAEvD,8DAA8D;QAC9D,sDAAsD;QACtD,6CAA6C;QAC7C,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAA4B,CAAC;QACnF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAElG,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,MAAM,IAAI,aAAa,EAAE;YAC7D,WAAW,EAAE,IAAI,CAAC,MAAiC;YACnD,YAAY;YACZ,IAAI,EAAG,IAAI,CAAC,IAA6B,IAAI,EAAE;YAC/C,MAAM;YACN,aAAa;YACb,WAAW;YACX,aAAa;YACb,cAAc;YACd,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,aAAuB;IACzD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,KAAK,CAAC,MAAM,qBAAqB,YAAY,IAAI,CACzE,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA4B;IAC7D,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,QAAQ;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAkB,EAClB,IAA6B;IAE7B,OAAO,QAAQ,CACb;QACE,QAAQ,EAAE,IAAI,CAAC,YAAY;QAC3B,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,QAAQ,EAAE,oBAAoB;KAC/B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,4CAA4C;QAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7B,MAAM,aAAa,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;QAE3D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,IAAwB,CAAC;QAC7B,MAAM,cAAc,GAA2B;YAC7C,cAAc,EAAE,IAAI,CAAC,WAAW;YAChC,YAAY,EAAE,wBAAwB;SACvC,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAe;YACf,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAClC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAED,aAAa;QACb,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,cAAc;YACvB,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClG,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -17,9 +17,9 @@
17
17
  * Hot-reload:
18
18
  * Send SIGHUP to reload provider list from the current UTDK_PROVIDERS env value.
19
19
  */
20
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
21
20
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
22
21
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
23
23
  import { executeTool, initTelemetry, loadProviders, parseProviderNames, } from "./loader.js";
24
24
  import { searchTools, groupTools } from "./search.js";
25
25
  // ---------------------------------------------------------------------------
@@ -29,15 +29,6 @@ import { searchTools, groupTools } from "./search.js";
29
29
  * Ensure the input schema is a valid MCP tool inputSchema (type: "object").
30
30
  */
31
31
  function normalizeInputSchema(schema) {
32
- if (schema["type"] === "object") {
33
- return {
34
- type: "object",
35
- ...(schema["properties"]
36
- ? { properties: schema["properties"] }
37
- : {}),
38
- ...(schema["required"] ? { required: schema["required"] } : {}),
39
- };
40
- }
41
32
  return {
42
33
  type: "object",
43
34
  ...(schema["properties"]
@@ -46,7 +37,154 @@ function normalizeInputSchema(schema) {
46
37
  ...(schema["required"] ? { required: schema["required"] } : {}),
47
38
  };
48
39
  }
49
- // search_tools and groupTools are imported from ./search.js above.
40
+ // ---------------------------------------------------------------------------
41
+ // Meta-tool definitions (served by tools/list)
42
+ // ---------------------------------------------------------------------------
43
+ const META_TOOLS = [
44
+ {
45
+ name: "list_tools",
46
+ description: "List available tool names without full schemas. Pass an optional provider to filter results, or group_by to organize by category.",
47
+ inputSchema: {
48
+ type: "object",
49
+ properties: {
50
+ provider: {
51
+ type: "string",
52
+ description: "Filter results to tools from this provider name (e.g. 'github')",
53
+ },
54
+ group_by: {
55
+ type: "string",
56
+ enum: ["provider", "tag"],
57
+ description: "Group results by 'provider' or by OpenAPI 'tag'. When omitted, returns a flat list of names.",
58
+ },
59
+ },
60
+ },
61
+ },
62
+ {
63
+ name: "search_tools",
64
+ description: "Find tools by keyword. Searches tool names, OpenAPI tags, and descriptions using TF-IDF relevance ranking so the LLM can locate relevant tools without browsing the full catalog.",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ query: {
69
+ type: "string",
70
+ description: "Natural language or keyword search (all words must appear in name, tags, or description)",
71
+ },
72
+ provider: {
73
+ type: "string",
74
+ description: "Restrict search to tools from this provider name (e.g. 'github')",
75
+ },
76
+ limit: {
77
+ type: "number",
78
+ description: "Maximum number of results to return (default 10)",
79
+ },
80
+ },
81
+ required: ["query"],
82
+ },
83
+ },
84
+ {
85
+ name: "tool_info",
86
+ description: "Get the full schema and metadata for a specific tool by name. Use this after list_tools or search_tools to retrieve the complete input schema before calling the tool.",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ tool_name: {
91
+ type: "string",
92
+ description: "The MCP tool name (e.g. 'github__repos_list')",
93
+ },
94
+ },
95
+ required: ["tool_name"],
96
+ },
97
+ },
98
+ {
99
+ name: "call_tool",
100
+ description: "Execute any registered tool by name with the provided arguments. Use tool_info first to get the correct argument schema.",
101
+ inputSchema: {
102
+ type: "object",
103
+ properties: {
104
+ tool_name: {
105
+ type: "string",
106
+ description: "The MCP tool name to execute (e.g. 'github__repos_list')",
107
+ },
108
+ arguments: {
109
+ type: "object",
110
+ description: "Arguments to pass to the tool",
111
+ },
112
+ },
113
+ required: ["tool_name", "arguments"],
114
+ },
115
+ },
116
+ ];
117
+ // ---------------------------------------------------------------------------
118
+ // Meta-tool call handlers
119
+ // ---------------------------------------------------------------------------
120
+ function handleListTools(tools, args) {
121
+ const providerFilter = typeof args["provider"] === "string" ? args["provider"] : undefined;
122
+ const groupBy = args["group_by"] === "provider" || args["group_by"] === "tag"
123
+ ? args["group_by"]
124
+ : undefined;
125
+ const filtered = providerFilter
126
+ ? tools.filter((t) => t.providerName === providerFilter)
127
+ : tools;
128
+ const result = groupBy === "provider" || groupBy === "tag"
129
+ ? groupTools(filtered, groupBy)
130
+ : filtered.map((t) => t.mcpName);
131
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
132
+ }
133
+ function handleSearchTools(tools, args) {
134
+ const query = typeof args["query"] === "string" ? args["query"] : "";
135
+ const providerFilter = typeof args["provider"] === "string" ? args["provider"] : undefined;
136
+ const limit = typeof args["limit"] === "number" && args["limit"] > 0 ? Math.floor(args["limit"]) : 10;
137
+ const results = searchTools(tools, query, providerFilter, limit);
138
+ return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
139
+ }
140
+ function handleToolInfo(toolMap, args) {
141
+ const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
142
+ const tool = toolMap.get(requestedName);
143
+ if (!tool) {
144
+ return {
145
+ isError: true,
146
+ content: [{ type: "text", text: `Unknown tool: ${requestedName}` }],
147
+ };
148
+ }
149
+ return {
150
+ content: [
151
+ {
152
+ type: "text",
153
+ text: JSON.stringify({
154
+ name: tool.mcpName,
155
+ description: tool.description,
156
+ provider: tool.providerName,
157
+ inputSchema: normalizeInputSchema(tool.inputSchema),
158
+ }, null, 2),
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ async function handleCallTool(toolMap, args) {
164
+ const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
165
+ const toolArgs = typeof args["arguments"] === "object" && args["arguments"] !== null
166
+ ? args["arguments"]
167
+ : {};
168
+ const tool = toolMap.get(requestedName);
169
+ if (!tool) {
170
+ return {
171
+ isError: true,
172
+ content: [{ type: "text", text: `Unknown tool: ${requestedName}` }],
173
+ };
174
+ }
175
+ try {
176
+ const result = await executeTool(tool, toolArgs);
177
+ const text = typeof result === "string" ? result : JSON.stringify(result, null, 2);
178
+ return { content: [{ type: "text", text }] };
179
+ }
180
+ catch (err) {
181
+ const message = err instanceof Error ? err.message : String(err);
182
+ return {
183
+ isError: true,
184
+ content: [{ type: "text", text: `Error calling ${requestedName}: ${message}` }],
185
+ };
186
+ }
187
+ }
50
188
  // ---------------------------------------------------------------------------
51
189
  // MCP Server factory
52
190
  // ---------------------------------------------------------------------------
@@ -60,162 +198,19 @@ function createServer(tools) {
60
198
  // Build a lookup map for fast dispatch
61
199
  const toolMap = new Map(tools.map((t) => [t.mcpName, t]));
62
200
  // tools/list — return exactly the 4 meta-tools (no direct provider tool exposure)
63
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
64
- tools: [
65
- {
66
- name: "list_tools",
67
- description: "List available tool names without full schemas. Pass an optional provider to filter results, or group_by to organize by category.",
68
- inputSchema: {
69
- type: "object",
70
- properties: {
71
- provider: {
72
- type: "string",
73
- description: "Filter results to tools from this provider name (e.g. 'github')",
74
- },
75
- group_by: {
76
- type: "string",
77
- enum: ["provider", "tag"],
78
- description: "Group results by 'provider' or by OpenAPI 'tag'. When omitted, returns a flat list of names.",
79
- },
80
- },
81
- },
82
- },
83
- {
84
- name: "search_tools",
85
- description: "Find tools by keyword. Searches tool names, OpenAPI tags, and descriptions using TF-IDF relevance ranking so the LLM can locate relevant tools without browsing the full catalog.",
86
- inputSchema: {
87
- type: "object",
88
- properties: {
89
- query: {
90
- type: "string",
91
- description: "Natural language or keyword search (all words must appear in name, tags, or description)",
92
- },
93
- provider: {
94
- type: "string",
95
- description: "Restrict search to tools from this provider name (e.g. 'github')",
96
- },
97
- limit: {
98
- type: "number",
99
- description: "Maximum number of results to return (default 10)",
100
- },
101
- },
102
- required: ["query"],
103
- },
104
- },
105
- {
106
- name: "tool_info",
107
- description: "Get the full schema and metadata for a specific tool by name. Use this after list_tools or search_tools to retrieve the complete input schema before calling the tool.",
108
- inputSchema: {
109
- type: "object",
110
- properties: {
111
- tool_name: {
112
- type: "string",
113
- description: "The MCP tool name (e.g. 'github__repos_list')",
114
- },
115
- },
116
- required: ["tool_name"],
117
- },
118
- },
119
- {
120
- name: "call_tool",
121
- description: "Execute any registered tool by name with the provided arguments. Use tool_info first to get the correct argument schema.",
122
- inputSchema: {
123
- type: "object",
124
- properties: {
125
- tool_name: {
126
- type: "string",
127
- description: "The MCP tool name to execute (e.g. 'github__repos_list')",
128
- },
129
- arguments: {
130
- type: "object",
131
- description: "Arguments to pass to the tool",
132
- },
133
- },
134
- required: ["tool_name", "arguments"],
135
- },
136
- },
137
- ],
138
- }));
201
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: META_TOOLS }));
139
202
  // tools/call — dispatch to the 4 meta-tools only
140
203
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
141
204
  const toolName = request.params.name;
142
205
  const args = (request.params.arguments ?? {});
143
- // list_tools meta-tool: enumerate provider tool names without schemas
144
- if (toolName === "list_tools") {
145
- const providerFilter = typeof args["provider"] === "string" ? args["provider"] : undefined;
146
- const groupBy = args["group_by"] === "provider" || args["group_by"] === "tag"
147
- ? args["group_by"]
148
- : undefined;
149
- const filtered = providerFilter
150
- ? tools.filter((t) => t.providerName === providerFilter)
151
- : tools;
152
- let result;
153
- if (groupBy === "provider" || groupBy === "tag") {
154
- result = groupTools(filtered, groupBy);
155
- }
156
- else {
157
- result = filtered.map((t) => t.mcpName);
158
- }
159
- return {
160
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
161
- };
162
- }
163
- // search_tools meta-tool: keyword search across tool names and descriptions
164
- if (toolName === "search_tools") {
165
- const query = typeof args["query"] === "string" ? args["query"] : "";
166
- const providerFilter = typeof args["provider"] === "string" ? args["provider"] : undefined;
167
- const limit = typeof args["limit"] === "number" && args["limit"] > 0 ? Math.floor(args["limit"]) : 10;
168
- const results = searchTools(tools, query, providerFilter, limit);
169
- return {
170
- content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
171
- };
172
- }
173
- // tool_info meta-tool: return full schema and metadata for a specific tool
174
- if (toolName === "tool_info") {
175
- const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
176
- const tool = toolMap.get(requestedName);
177
- if (!tool) {
178
- return {
179
- isError: true,
180
- content: [{ type: "text", text: `Unknown tool: ${requestedName}` }],
181
- };
182
- }
183
- const info = {
184
- name: tool.mcpName,
185
- description: tool.description,
186
- provider: tool.providerName,
187
- inputSchema: normalizeInputSchema(tool.inputSchema),
188
- };
189
- return {
190
- content: [{ type: "text", text: JSON.stringify(info, null, 2) }],
191
- };
192
- }
193
- // call_tool meta-tool: execute a registered tool by name
194
- if (toolName === "call_tool") {
195
- const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
196
- const toolArgs = typeof args["arguments"] === "object" && args["arguments"] !== null
197
- ? args["arguments"]
198
- : {};
199
- const tool = toolMap.get(requestedName);
200
- if (!tool) {
201
- return {
202
- isError: true,
203
- content: [{ type: "text", text: `Unknown tool: ${requestedName}` }],
204
- };
205
- }
206
- try {
207
- const result = await executeTool(tool, toolArgs);
208
- const text = typeof result === "string" ? result : JSON.stringify(result, null, 2);
209
- return { content: [{ type: "text", text }] };
210
- }
211
- catch (err) {
212
- const message = err instanceof Error ? err.message : String(err);
213
- return {
214
- isError: true,
215
- content: [{ type: "text", text: `Error calling ${requestedName}: ${message}` }],
216
- };
217
- }
218
- }
206
+ if (toolName === "list_tools")
207
+ return handleListTools(tools, args);
208
+ if (toolName === "search_tools")
209
+ return handleSearchTools(tools, args);
210
+ if (toolName === "tool_info")
211
+ return handleToolInfo(toolMap, args);
212
+ if (toolName === "call_tool")
213
+ return handleCallTool(toolMap, args);
219
214
  return {
220
215
  isError: true,
221
216
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utdk/mcp",
3
- "version": "0.1.0-dev.646adf4",
3
+ "version": "0.1.0-dev.8f50777",
4
4
  "type": "module",
5
5
  "description": "Unified MCP server with dynamic tool loading from @utdk/* providers",
6
6
  "keywords": [
@@ -17,27 +17,27 @@
17
17
  "@modelcontextprotocol/sdk": "^1.29.0",
18
18
  "@utcp/http": "^1.1.1",
19
19
  "@utcp/sdk": "^1.1.0",
20
- "@utdk/common": "0.1.0-dev.646adf4"
20
+ "@utdk/common": "0.1.0-dev.8f50777"
21
21
  },
22
22
  "optionalDependencies": {
23
- "@utdk/datadog": "1.0.0-20260407.1-dev.646adf4",
24
- "@utdk/airtable": "0.1.0-20260530.2-dev.646adf4",
25
- "@utdk/figma": "0.37.0-20260408.5-dev.646adf4",
26
- "@utdk/github": "1.1.4-20260407.6-dev.646adf4",
27
- "@utdk/google": "0.0.1-20260407.8-dev.646adf4",
28
- "@utdk/hubspot": "3.0.0-20260530.2-dev.646adf4",
29
- "@utdk/intercom": "2.15.0-20260530.1-dev.646adf4",
30
- "@utdk/linear": "1.0.0-20260530.1-dev.646adf4",
31
- "@utdk/jira": "1001.0.0-SNAPSHOT-500abd49de29b046db51cf0460caa503167075c0-20260530.2-dev.646adf4",
32
- "@utdk/openai": "2.3.0-20260407.1-dev.646adf4",
33
- "@utdk/notion": "1.0.0-20260530.1-dev.646adf4",
34
- "@utdk/salesforce": "58.0.0-20260530.1-dev.646adf4",
35
- "@utdk/slack": "1.7.0-20260530.1-dev.646adf4",
36
- "@utdk/sendgrid": "1.0.0-20260530.1-dev.646adf4",
37
- "@utdk/spotify": "1.0.0-20260407.6-dev.646adf4",
38
- "@utdk/stripe": "0.0.1-20260530.2-dev.646adf4",
39
- "@utdk/twilio": "1.0.0-20260530.2-dev.646adf4",
40
- "@utdk/zendesk": "2.0.0-20260530.2-dev.646adf4"
23
+ "@utdk/airtable": "0.1.0-20260530.2-dev.8f50777",
24
+ "@utdk/datadog": "1.0.0-20260407.1-dev.8f50777",
25
+ "@utdk/github": "1.1.4-20260407.6-dev.8f50777",
26
+ "@utdk/google": "0.0.1-20260407.8-dev.8f50777",
27
+ "@utdk/figma": "0.37.0-20260408.5-dev.8f50777",
28
+ "@utdk/hubspot": "3.0.0-20260530.2-dev.8f50777",
29
+ "@utdk/jira": "1001.0.0-SNAPSHOT-500abd49de29b046db51cf0460caa503167075c0-20260530.2-dev.8f50777",
30
+ "@utdk/intercom": "2.15.0-20260530.1-dev.8f50777",
31
+ "@utdk/linear": "1.0.0-20260530.1-dev.8f50777",
32
+ "@utdk/notion": "1.0.0-20260530.1-dev.8f50777",
33
+ "@utdk/openai": "2.3.0-20260407.1-dev.8f50777",
34
+ "@utdk/slack": "1.7.0-20260530.1-dev.8f50777",
35
+ "@utdk/stripe": "0.0.1-20260530.2-dev.8f50777",
36
+ "@utdk/sendgrid": "1.0.0-20260530.1-dev.8f50777",
37
+ "@utdk/twilio": "1.0.0-20260530.2-dev.8f50777",
38
+ "@utdk/zendesk": "2.0.0-20260530.2-dev.8f50777",
39
+ "@utdk/salesforce": "58.0.0-20260530.1-dev.8f50777",
40
+ "@utdk/spotify": "1.0.0-20260407.6-dev.8f50777"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.5.0",
package/src/loader.ts CHANGED
@@ -6,12 +6,10 @@
6
6
  */
7
7
 
8
8
  import { OpenApiConverter } from "@utcp/http";
9
- import type { Tool } from "@utcp/sdk";
10
- import type { AuthProvider } from "@utdk/common";
11
9
  import { withSpan, configureTelemetry } from "@utdk/common";
12
-
13
10
  import { buildAuthProvider } from "./auth.js";
14
11
  import type { UtdkAuthConfig } from "./auth.js";
12
+ import type { AuthProvider } from "@utdk/common";
15
13
 
16
14
  export interface ProviderTool {
17
15
  /** MCP tool name (e.g. "github__repos_list") */
package/src/server.ts CHANGED
@@ -18,21 +18,20 @@
18
18
  * Send SIGHUP to reload provider list from the current UTDK_PROVIDERS env value.
19
19
  */
20
20
 
21
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
22
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
21
23
  import {
22
24
  CallToolRequestSchema,
23
25
  ListToolsRequestSchema,
24
26
  } from "@modelcontextprotocol/sdk/types.js";
25
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
26
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
27
-
28
27
  import {
29
28
  executeTool,
30
29
  initTelemetry,
31
30
  loadProviders,
32
31
  parseProviderNames,
33
32
  } from "./loader.js";
34
- import type { ProviderTool } from "./loader.js";
35
33
  import { searchTools, groupTools } from "./search.js";
34
+ import type { ProviderTool } from "./loader.js";
36
35
 
37
36
  // ---------------------------------------------------------------------------
38
37
  // Schema normalization
@@ -46,16 +45,6 @@ function normalizeInputSchema(schema: Record<string, unknown>): {
46
45
  properties?: Record<string, object>;
47
46
  required?: string[];
48
47
  } {
49
- if (schema["type"] === "object") {
50
- return {
51
- type: "object",
52
- ...(schema["properties"]
53
- ? { properties: schema["properties"] as Record<string, object> }
54
- : {}),
55
- ...(schema["required"] ? { required: schema["required"] as string[] } : {}),
56
- };
57
- }
58
-
59
48
  return {
60
49
  type: "object",
61
50
  ...(schema["properties"]
@@ -65,7 +54,174 @@ function normalizeInputSchema(schema: Record<string, unknown>): {
65
54
  };
66
55
  }
67
56
 
68
- // search_tools and groupTools are imported from ./search.js above.
57
+ // ---------------------------------------------------------------------------
58
+ // Meta-tool definitions (served by tools/list)
59
+ // ---------------------------------------------------------------------------
60
+
61
+ const META_TOOLS = [
62
+ {
63
+ name: "list_tools",
64
+ description:
65
+ "List available tool names without full schemas. Pass an optional provider to filter results, or group_by to organize by category.",
66
+ inputSchema: {
67
+ type: "object" as const,
68
+ properties: {
69
+ provider: {
70
+ type: "string",
71
+ description: "Filter results to tools from this provider name (e.g. 'github')",
72
+ },
73
+ group_by: {
74
+ type: "string",
75
+ enum: ["provider", "tag"],
76
+ description:
77
+ "Group results by 'provider' or by OpenAPI 'tag'. When omitted, returns a flat list of names.",
78
+ },
79
+ },
80
+ },
81
+ },
82
+ {
83
+ name: "search_tools",
84
+ description:
85
+ "Find tools by keyword. Searches tool names, OpenAPI tags, and descriptions using TF-IDF relevance ranking so the LLM can locate relevant tools without browsing the full catalog.",
86
+ inputSchema: {
87
+ type: "object" as const,
88
+ properties: {
89
+ query: {
90
+ type: "string",
91
+ description: "Natural language or keyword search (all words must appear in name, tags, or description)",
92
+ },
93
+ provider: {
94
+ type: "string",
95
+ description: "Restrict search to tools from this provider name (e.g. 'github')",
96
+ },
97
+ limit: {
98
+ type: "number",
99
+ description: "Maximum number of results to return (default 10)",
100
+ },
101
+ },
102
+ required: ["query"],
103
+ },
104
+ },
105
+ {
106
+ name: "tool_info",
107
+ description:
108
+ "Get the full schema and metadata for a specific tool by name. Use this after list_tools or search_tools to retrieve the complete input schema before calling the tool.",
109
+ inputSchema: {
110
+ type: "object" as const,
111
+ properties: {
112
+ tool_name: {
113
+ type: "string",
114
+ description: "The MCP tool name (e.g. 'github__repos_list')",
115
+ },
116
+ },
117
+ required: ["tool_name"],
118
+ },
119
+ },
120
+ {
121
+ name: "call_tool",
122
+ description:
123
+ "Execute any registered tool by name with the provided arguments. Use tool_info first to get the correct argument schema.",
124
+ inputSchema: {
125
+ type: "object" as const,
126
+ properties: {
127
+ tool_name: {
128
+ type: "string",
129
+ description: "The MCP tool name to execute (e.g. 'github__repos_list')",
130
+ },
131
+ arguments: {
132
+ type: "object",
133
+ description: "Arguments to pass to the tool",
134
+ },
135
+ },
136
+ required: ["tool_name", "arguments"],
137
+ },
138
+ },
139
+ ];
140
+
141
+ // ---------------------------------------------------------------------------
142
+ // Meta-tool call handlers
143
+ // ---------------------------------------------------------------------------
144
+
145
+ function handleListTools(tools: ProviderTool[], args: Record<string, unknown>) {
146
+ const providerFilter =
147
+ typeof args["provider"] === "string" ? args["provider"] : undefined;
148
+ const groupBy =
149
+ args["group_by"] === "provider" || args["group_by"] === "tag"
150
+ ? (args["group_by"] as "provider" | "tag")
151
+ : undefined;
152
+ const filtered = providerFilter
153
+ ? tools.filter((t) => t.providerName === providerFilter)
154
+ : tools;
155
+ const result =
156
+ groupBy === "provider" || groupBy === "tag"
157
+ ? groupTools(filtered, groupBy)
158
+ : filtered.map((t) => t.mcpName);
159
+ return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] };
160
+ }
161
+
162
+ function handleSearchTools(tools: ProviderTool[], args: Record<string, unknown>) {
163
+ const query = typeof args["query"] === "string" ? args["query"] : "";
164
+ const providerFilter =
165
+ typeof args["provider"] === "string" ? args["provider"] : undefined;
166
+ const limit =
167
+ typeof args["limit"] === "number" && args["limit"] > 0 ? Math.floor(args["limit"]) : 10;
168
+ const results = searchTools(tools, query, providerFilter, limit);
169
+ return { content: [{ type: "text" as const, text: JSON.stringify(results, null, 2) }] };
170
+ }
171
+
172
+ function handleToolInfo(toolMap: Map<string, ProviderTool>, args: Record<string, unknown>) {
173
+ const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
174
+ const tool = toolMap.get(requestedName);
175
+ if (!tool) {
176
+ return {
177
+ isError: true,
178
+ content: [{ type: "text" as const, text: `Unknown tool: ${requestedName}` }],
179
+ };
180
+ }
181
+ return {
182
+ content: [
183
+ {
184
+ type: "text" as const,
185
+ text: JSON.stringify(
186
+ {
187
+ name: tool.mcpName,
188
+ description: tool.description,
189
+ provider: tool.providerName,
190
+ inputSchema: normalizeInputSchema(tool.inputSchema),
191
+ },
192
+ null,
193
+ 2,
194
+ ),
195
+ },
196
+ ],
197
+ };
198
+ }
199
+
200
+ async function handleCallTool(toolMap: Map<string, ProviderTool>, args: Record<string, unknown>) {
201
+ const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
202
+ const toolArgs =
203
+ typeof args["arguments"] === "object" && args["arguments"] !== null
204
+ ? (args["arguments"] as Record<string, unknown>)
205
+ : {};
206
+ const tool = toolMap.get(requestedName);
207
+ if (!tool) {
208
+ return {
209
+ isError: true,
210
+ content: [{ type: "text" as const, text: `Unknown tool: ${requestedName}` }],
211
+ };
212
+ }
213
+ try {
214
+ const result = await executeTool(tool, toolArgs);
215
+ const text = typeof result === "string" ? result : JSON.stringify(result, null, 2);
216
+ return { content: [{ type: "text" as const, text }] };
217
+ } catch (err) {
218
+ const message = err instanceof Error ? err.message : String(err);
219
+ return {
220
+ isError: true,
221
+ content: [{ type: "text" as const, text: `Error calling ${requestedName}: ${message}` }],
222
+ };
223
+ }
224
+ }
69
225
 
70
226
  // ---------------------------------------------------------------------------
71
227
  // MCP Server factory
@@ -86,181 +242,17 @@ function createServer(tools: ProviderTool[]): Server {
86
242
  const toolMap = new Map<string, ProviderTool>(tools.map((t) => [t.mcpName, t]));
87
243
 
88
244
  // tools/list — return exactly the 4 meta-tools (no direct provider tool exposure)
89
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
90
- tools: [
91
- {
92
- name: "list_tools",
93
- description:
94
- "List available tool names without full schemas. Pass an optional provider to filter results, or group_by to organize by category.",
95
- inputSchema: {
96
- type: "object" as const,
97
- properties: {
98
- provider: {
99
- type: "string",
100
- description: "Filter results to tools from this provider name (e.g. 'github')",
101
- },
102
- group_by: {
103
- type: "string",
104
- enum: ["provider", "tag"],
105
- description:
106
- "Group results by 'provider' or by OpenAPI 'tag'. When omitted, returns a flat list of names.",
107
- },
108
- },
109
- },
110
- },
111
- {
112
- name: "search_tools",
113
- description:
114
- "Find tools by keyword. Searches tool names, OpenAPI tags, and descriptions using TF-IDF relevance ranking so the LLM can locate relevant tools without browsing the full catalog.",
115
- inputSchema: {
116
- type: "object" as const,
117
- properties: {
118
- query: {
119
- type: "string",
120
- description: "Natural language or keyword search (all words must appear in name, tags, or description)",
121
- },
122
- provider: {
123
- type: "string",
124
- description: "Restrict search to tools from this provider name (e.g. 'github')",
125
- },
126
- limit: {
127
- type: "number",
128
- description: "Maximum number of results to return (default 10)",
129
- },
130
- },
131
- required: ["query"],
132
- },
133
- },
134
- {
135
- name: "tool_info",
136
- description:
137
- "Get the full schema and metadata for a specific tool by name. Use this after list_tools or search_tools to retrieve the complete input schema before calling the tool.",
138
- inputSchema: {
139
- type: "object" as const,
140
- properties: {
141
- tool_name: {
142
- type: "string",
143
- description: "The MCP tool name (e.g. 'github__repos_list')",
144
- },
145
- },
146
- required: ["tool_name"],
147
- },
148
- },
149
- {
150
- name: "call_tool",
151
- description:
152
- "Execute any registered tool by name with the provided arguments. Use tool_info first to get the correct argument schema.",
153
- inputSchema: {
154
- type: "object" as const,
155
- properties: {
156
- tool_name: {
157
- type: "string",
158
- description: "The MCP tool name to execute (e.g. 'github__repos_list')",
159
- },
160
- arguments: {
161
- type: "object",
162
- description: "Arguments to pass to the tool",
163
- },
164
- },
165
- required: ["tool_name", "arguments"],
166
- },
167
- },
168
- ],
169
- }));
245
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: META_TOOLS }));
170
246
 
171
247
  // tools/call — dispatch to the 4 meta-tools only
172
248
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
173
249
  const toolName = request.params.name;
174
250
  const args = (request.params.arguments ?? {}) as Record<string, unknown>;
175
251
 
176
- // list_tools meta-tool: enumerate provider tool names without schemas
177
- if (toolName === "list_tools") {
178
- const providerFilter =
179
- typeof args["provider"] === "string" ? args["provider"] : undefined;
180
- const groupBy =
181
- args["group_by"] === "provider" || args["group_by"] === "tag"
182
- ? (args["group_by"] as "provider" | "tag")
183
- : undefined;
184
-
185
- const filtered = providerFilter
186
- ? tools.filter((t) => t.providerName === providerFilter)
187
- : tools;
188
-
189
- let result: unknown;
190
-
191
- if (groupBy === "provider" || groupBy === "tag") {
192
- result = groupTools(filtered, groupBy);
193
- } else {
194
- result = filtered.map((t) => t.mcpName);
195
- }
196
-
197
- return {
198
- content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }],
199
- };
200
- }
201
-
202
- // search_tools meta-tool: keyword search across tool names and descriptions
203
- if (toolName === "search_tools") {
204
- const query = typeof args["query"] === "string" ? args["query"] : "";
205
- const providerFilter =
206
- typeof args["provider"] === "string" ? args["provider"] : undefined;
207
- const limit =
208
- typeof args["limit"] === "number" && args["limit"] > 0 ? Math.floor(args["limit"]) : 10;
209
- const results = searchTools(tools, query, providerFilter, limit);
210
- return {
211
- content: [{ type: "text" as const, text: JSON.stringify(results, null, 2) }],
212
- };
213
- }
214
-
215
- // tool_info meta-tool: return full schema and metadata for a specific tool
216
- if (toolName === "tool_info") {
217
- const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
218
- const tool = toolMap.get(requestedName);
219
- if (!tool) {
220
- return {
221
- isError: true,
222
- content: [{ type: "text" as const, text: `Unknown tool: ${requestedName}` }],
223
- };
224
- }
225
- const info = {
226
- name: tool.mcpName,
227
- description: tool.description,
228
- provider: tool.providerName,
229
- inputSchema: normalizeInputSchema(tool.inputSchema),
230
- };
231
- return {
232
- content: [{ type: "text" as const, text: JSON.stringify(info, null, 2) }],
233
- };
234
- }
235
-
236
- // call_tool meta-tool: execute a registered tool by name
237
- if (toolName === "call_tool") {
238
- const requestedName = typeof args["tool_name"] === "string" ? args["tool_name"] : "";
239
- const toolArgs =
240
- typeof args["arguments"] === "object" && args["arguments"] !== null
241
- ? (args["arguments"] as Record<string, unknown>)
242
- : {};
243
-
244
- const tool = toolMap.get(requestedName);
245
- if (!tool) {
246
- return {
247
- isError: true,
248
- content: [{ type: "text" as const, text: `Unknown tool: ${requestedName}` }],
249
- };
250
- }
251
-
252
- try {
253
- const result = await executeTool(tool, toolArgs);
254
- const text = typeof result === "string" ? result : JSON.stringify(result, null, 2);
255
- return { content: [{ type: "text" as const, text }] };
256
- } catch (err) {
257
- const message = err instanceof Error ? err.message : String(err);
258
- return {
259
- isError: true,
260
- content: [{ type: "text" as const, text: `Error calling ${requestedName}: ${message}` }],
261
- };
262
- }
263
- }
252
+ if (toolName === "list_tools") return handleListTools(tools, args);
253
+ if (toolName === "search_tools") return handleSearchTools(tools, args);
254
+ if (toolName === "tool_info") return handleToolInfo(toolMap, args);
255
+ if (toolName === "call_tool") return handleCallTool(toolMap, args);
264
256
 
265
257
  return {
266
258
  isError: true,
package/vitest.config.ts CHANGED
@@ -1,9 +1,8 @@
1
- import { defineConfig } from "vitest/config";
1
+ import { defineConfig } from "@aprovan/vitest-config";
2
2
 
3
- export default defineConfig({
4
- test: {
5
- environment: "node",
3
+ export default {
4
+ test: defineConfig("node", {
6
5
  include: ["src/**/*.test.ts"],
7
6
  testTimeout: 30000,
8
- },
9
- });
7
+ }),
8
+ };