@silkweave/mcp 1.4.0 → 1.4.1
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/.turbo/turbo-build.log +4 -4
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-prepack.log +2 -2
- package/build/index.d.ts +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/package.json +4 -4
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @silkweave/mcp@1.
|
|
3
|
+
> @silkweave/mcp@1.4.0 build /Users/atomic/projects/ai/silkweave/packages/mcp
|
|
4
4
|
> tsup
|
|
5
5
|
|
|
6
6
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
[34mESM[39m Build start
|
|
13
13
|
[32mESM[39m [1mbuild/index.js [22m[32m16.40 KB[39m
|
|
14
14
|
[32mESM[39m [1mbuild/index.js.map [22m[32m30.34 KB[39m
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 8ms
|
|
16
16
|
DTS Build start
|
|
17
|
-
DTS ⚡️ Build success in
|
|
18
|
-
DTS build/index.d.ts 1.
|
|
17
|
+
DTS ⚡️ Build success in 709ms
|
|
18
|
+
DTS build/index.d.ts 1.35 KB
|
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-prepack.log
CHANGED
package/build/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AdapterFactory, SilkweaveError } from '@silkweave/core';
|
|
2
2
|
import { CreateMcpExpressAppOptions } from '@modelcontextprotocol/sdk/server/express.js';
|
|
3
3
|
import { AuthConfig } from '@silkweave/auth';
|
|
4
|
-
import { CallToolResult } from '@modelcontextprotocol/sdk/types';
|
|
4
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
|
|
6
6
|
interface CliProxyOptions {
|
|
7
7
|
url: URL;
|
package/build/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { intro } from "@clack/prompts";
|
|
3
3
|
import { Client } from "@modelcontextprotocol/sdk/client";
|
|
4
4
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
5
|
-
import { LoggingMessageNotificationSchema, ProgressNotificationSchema } from "@modelcontextprotocol/sdk/types";
|
|
5
|
+
import { LoggingMessageNotificationSchema, ProgressNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
6
6
|
import { unwrap } from "@silkweave/core";
|
|
7
7
|
import { createCLILogger } from "@silkweave/logger";
|
|
8
8
|
import { kebabCase } from "change-case";
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/adapter/cliProxy.ts","../src/adapter/http.ts","../src/util/result.ts","../src/adapter/stdio.ts","../src/util/sideload.ts"],"sourcesContent":["import { intro } from '@clack/prompts'\nimport { Client } from '@modelcontextprotocol/sdk/client'\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'\nimport { LoggingMessageNotificationSchema, ProgressNotificationSchema } from '@modelcontextprotocol/sdk/types'\nimport { AdapterFactory, unwrap } from '@silkweave/core'\nimport { createCLILogger } from '@silkweave/logger'\nimport { kebabCase } from 'change-case'\nimport { Command } from 'commander'\nimport { randomUUID } from 'crypto'\nimport { z } from 'zod'\nimport { JSONSchema } from 'zod/v4/core'\n\nexport interface CliProxyOptions {\n url: URL\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction addCliOption(command: Command, key: string, type: z.ZodType, defaultValue: any) {\n const description = type.description\n const flag = kebabCase(key)\n if (type instanceof z.ZodBoolean) {\n command.option(`--${flag}`, description, defaultValue)\n command.option(`--no-${flag}`)\n } else if (type instanceof z.ZodNumber) {\n command.option(`--${flag} <number>`, description, defaultValue)\n } else if (type instanceof z.ZodString || type instanceof z.ZodEnum) {\n command.option(`--${flag} <string>`, description, defaultValue)\n } else if (type instanceof z.ZodObject || type instanceof z.ZodRecord || type instanceof z.ZodArray) {\n command.option(`--${flag} <json>`, description ?? '', JSON.parse, defaultValue)\n } else {\n throw new Error(`Invalid zod type: ${type.def.type}`)\n }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction registerProxyCommand(\n program: Command,\n client: Client,\n tool: { name: string; description?: string; inputSchema: object },\n options: { name: string; version: string; description: string }\n) {\n const name = kebabCase(tool.name)\n const command = program.command(name)\n if (tool.description) { command.description(tool.description) }\n const schema = z.fromJSONSchema(tool.inputSchema as JSONSchema.JSONSchema)\n if (!(schema instanceof z.ZodObject)) { throw new Error('Invalid schema') }\n const shape = schema.shape\n for (const key of Object.keys(shape)) {\n const [type, { defaultValue }] = unwrap(shape[key])\n addCliOption(command, key, type, defaultValue)\n }\n command.action(async (args) => {\n const { silent } = program.opts<{ silent: boolean }>()\n const logger = createCLILogger()\n if (!silent) {\n intro(`${options.name} - ${tool.name}`)\n client.setNotificationHandler(LoggingMessageNotificationSchema, ({ params: { level, data } }) => {\n logger[level](data)\n })\n client.setNotificationHandler(ProgressNotificationSchema, ({ params: { progress, total, message } }) => {\n logger.info({ progress, total, message })\n })\n }\n const input = await schema.parseAsync(args)\n const response = await client.callTool({\n name: tool.name,\n arguments: input,\n _meta: { progressToken: randomUUID() }\n })\n process.stdout.write(JSON.stringify(response))\n })\n}\n\nexport const cliProxy: AdapterFactory<CliProxyOptions> = ({ url }) => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'cliProxy' })\n const program = new Command()\n .name(options.name)\n .description(options.description)\n .version(options.version)\n .option('-s, --silent', 'Silent mode, prevent log messages', false)\n\n return {\n context,\n start: async () => {\n const client = new Client({\n name: options.name,\n description: options.description,\n version: options.version\n })\n const transport = new StreamableHTTPClientTransport(url)\n await client.connect(transport)\n const { tools } = await client.listTools()\n for (const tool of tools) {\n registerProxyCommand(program, client, tool, options)\n }\n await program.parseAsync()\n await transport.close()\n },\n stop: async () => { }\n }\n }\n}\n","import { InMemoryEventStore } from '@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js'\nimport { createMcpExpressApp, CreateMcpExpressAppOptions } from '@modelcontextprotocol/sdk/server/express.js'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'\nimport { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js'\nimport { AuthConfig, AuthInfo, generateProtectedResourceMetadata, OAuthRequest, OAuthResponse, validateToken } from '@silkweave/auth'\nimport { Action, AdapterFactory, SilkweaveContext, SilkweaveOptions } from '@silkweave/core'\nimport { createLogger } from '@silkweave/logger'\nimport { capitalCase, pascalCase } from 'change-case'\nimport cors from 'cors'\nimport { randomUUID } from 'crypto'\nimport express, { Express, Request, Response } from 'express'\nimport { readFile } from 'fs/promises'\nimport { Server } from 'http'\nimport { AsyncLocalStorage } from 'node:async_hooks'\nimport { handleToolError, smartToolResult } from '../util/result.js'\nimport { SideloadResource } from '../util/sideload.js'\n\nconst authStorage = new AsyncLocalStorage<AuthInfo>()\n\nexport interface HttpAdapterOptions extends CreateMcpExpressAppOptions {\n host: string\n port: number\n auth?: AuthConfig\n}\n\nfunction mountOAuthRoutes(app: Express, auth: AuthConfig): Set<string> {\n const provider = auth.provider!\n const callbackPath = auth.callbackPath ?? '/auth/callback'\n\n const toOAuthReq = (req: Request): OAuthRequest => ({\n method: req.method,\n url: new URL(req.url, `${req.protocol}://${req.get('host')}`),\n headers: Object.fromEntries(Object.entries(req.headers).map(([k, v]) => [k, Array.isArray(v) ? v[0] : v])),\n body: req.body as Record<string, string> | undefined\n })\n\n const sendOAuth = (res: Response, oauthRes: OAuthResponse) => {\n for (const [key, value] of Object.entries(oauthRes.headers)) { res.header(key, value) }\n if (oauthRes.body) {\n res.status(oauthRes.status).send(typeof oauthRes.body === 'string' ? oauthRes.body : JSON.stringify(oauthRes.body))\n } else {\n res.status(oauthRes.status).end()\n }\n }\n\n app.get('/.well-known/oauth-authorization-server', (_req: Request, res: Response) => {\n sendOAuth(res, provider.metadata())\n })\n app.get('/authorize', async (req: Request, res: Response) => {\n sendOAuth(res, await provider.authorize(toOAuthReq(req)))\n })\n app.get(callbackPath, async (req: Request, res: Response) => {\n sendOAuth(res, await provider.callback(toOAuthReq(req)))\n })\n app.post('/token', express.urlencoded({ extended: false }), async (req: Request, res: Response) => {\n sendOAuth(res, await provider.token(toOAuthReq(req)))\n })\n app.post('/register', express.json(), async (req: Request, res: Response) => {\n sendOAuth(res, await provider.register(toOAuthReq(req)))\n })\n\n return new Set(['/.well-known/oauth-authorization-server', '/authorize', callbackPath, '/token', '/register'])\n}\n\nfunction mountAuthMiddleware(app: Express, auth: AuthConfig, oauthPaths: Set<string>, context: SilkweaveContext) {\n app.use(async (req: Request, res: Response, next: (err?: unknown) => void) => {\n if (req.path.startsWith('/.well-known/') || oauthPaths.has(req.path)) { return next() }\n const result = await validateToken(req.headers.authorization, auth, context.fork({ request: req }))\n if (result.error) {\n for (const [key, value] of Object.entries(result.error.headers)) {\n res.header(key, value)\n }\n res.status(result.error.statusCode).json(result.error.body)\n return\n }\n if (result.auth) {\n authStorage.run(result.auth, () => { next() })\n } else {\n next()\n }\n })\n}\n\nfunction registerTools(server: McpServer, actions: Action[], context: SilkweaveContext) {\n for (const action of actions) {\n server.registerTool(pascalCase(action.name), {\n title: capitalCase(action.name),\n description: action.description,\n inputSchema: action.input\n }, async (input, extra) => {\n const logger = createLogger({\n stream: process.stderr,\n onLog: (level, data) => {\n extra.sendNotification({ method: 'notifications/message', params: { level, data } })\n },\n onProgress: ({ progress, total, message }) => {\n if (!extra._meta?.progressToken) { return }\n extra.sendNotification({\n method: 'notifications/progress',\n params: { progress, total, message, progressToken: extra._meta.progressToken }\n })\n }\n })\n const currentAuth = authStorage.getStore()\n const actionContext = context.fork({ logger, extra, ...(currentAuth ? { auth: currentAuth } : {}) })\n return action.run(input, actionContext)\n .then((result) => {\n const data = action.toolResult?.(result, actionContext) ?? smartToolResult(result)\n return data\n })\n .catch(handleToolError)\n })\n }\n}\n\nfunction createMcpServer(options: SilkweaveOptions, actions: Action[], context: SilkweaveContext): McpServer {\n const server = new McpServer({\n name: options.name,\n description: options.description,\n version: options.version\n }, {\n capabilities: { tools: {}, logging: {} }\n })\n registerTools(server, actions, context)\n return server\n}\n\nfunction createSessionTransport(transports: Record<string, StreamableHTTPServerTransport>): StreamableHTTPServerTransport {\n const eventStore = new InMemoryEventStore()\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n enableJsonResponse: false,\n eventStore,\n onsessioninitialized: (sId) => {\n console.log(`Session initialized with ID: ${sId}`)\n transports[sId] = transport\n }\n })\n transport.onerror = (error) => {\n console.error(error)\n }\n transport.onclose = () => {\n const sid = transport.sessionId\n if (sid && transports[sid]) {\n console.log(`Transport closed for session ${sid}, removing from transports map`)\n delete transports[sid]\n }\n }\n return transport\n}\n\nfunction mountMcpTransport(\n app: Express,\n transports: Record<string, StreamableHTTPServerTransport>,\n createServer: () => McpServer\n) {\n app.post('/mcp', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined\n try {\n if (sessionId && transports[sessionId]) {\n await transports[sessionId].handleRequest(req, res, req.body)\n return\n }\n\n if (!isInitializeRequest(req.body)) {\n res.status(404).json({\n jsonrpc: '2.0',\n error: { code: -32_000, message: 'Session not found' },\n id: null\n })\n return\n }\n\n const transport = createSessionTransport(transports)\n await createServer().connect(transport)\n await transport.handleRequest(req, res, req.body)\n } catch (error) {\n console.error('Error handling MCP request:', error)\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: '2.0',\n error: { code: -32_603, message: 'Internal server error' },\n id: null\n })\n }\n }\n })\n\n const handleSessionStream = async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send('Invalid or missing session ID')\n return\n }\n const transport = transports[sessionId]\n await transport.handleRequest(req, res)\n }\n\n app.get('/mcp', handleSessionStream)\n app.delete('/mcp', handleSessionStream)\n app.get('/mcp/resource/:id', handleSessionStream)\n}\n\nexport const http: AdapterFactory<HttpAdapterOptions> = ({ host, port, auth, ...mcpOptions }) => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'http' })\n const app = createMcpExpressApp({ ...mcpOptions, host })\n app.use(cors({ exposedHeaders: ['WWW-Authenticate', 'Mcp-Session-Id', 'Last-Event-Id', 'Mcp-Protocol-Version'], origin: '*' }))\n\n if (auth?.authorizationServers?.length && auth.resourceUrl) {\n app.get('/.well-known/oauth-protected-resource', (_req: Request, res: Response) => {\n const metadata = generateProtectedResourceMetadata(auth.resourceUrl!, auth.authorizationServers!)\n res.json(metadata)\n })\n }\n\n const oauthPaths = auth?.provider ? mountOAuthRoutes(app, auth) : new Set<string>()\n\n if (auth) {\n mountAuthMiddleware(app, auth, oauthPaths, context)\n }\n\n const transports: Record<string, StreamableHTTPServerTransport> = {}\n let mountedActions: Action[] = []\n\n app.get('/resource/:id', async (req: Request, res: Response) => {\n const id = req.params.id\n if (!id || typeof id !== 'string') { throw new Error('Invalid ID') }\n const resourceMeta: SideloadResource = JSON.parse(await readFile(`resources/${id}.json`, 'utf-8'))\n const buffer = await readFile(`resources/${id}`)\n res.status(200)\n res.header('Content-Type', resourceMeta.contentType)\n res.send(buffer)\n })\n\n mountMcpTransport(app, transports, () => createMcpServer(options, mountedActions, context))\n\n let httpServer: Server | undefined\n return {\n context,\n start: async (actions) => {\n mountedActions = actions\n httpServer = app.listen(port, host, (error) => {\n if (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n console.log(`MCP Streamable HTTP Server listening on http://${host}:${port}/mcp`)\n })\n },\n stop: async () => {\n if (httpServer) {\n await new Promise<void>((resolve, reject) => {\n return httpServer!.close((err) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n httpServer = undefined\n }\n }\n }\n}\n","import type { CallToolResult } from '@modelcontextprotocol/sdk/types'\nimport { SilkweaveError } from '@silkweave/core'\nimport { randomUUID } from 'node:crypto'\n\nexport function smartToolResult(data: string | object | object[]): CallToolResult {\n const text = typeof data === 'string' ? data : JSON.stringify(data)\n const mimeType = typeof data === 'string' ? 'text/plain' : 'application/json'\n const ext = typeof data === 'string' ? 'txt' : 'json'\n if (text.length > 4096) {\n const uri = `mcp://toolResult/${randomUUID()}.${ext}`\n const buffer = Buffer.from(text)\n const blob = buffer.toString('base64')\n return {\n content: [\n { type: 'text', text: `Received resource ${uri} with ${buffer.byteLength} bytes` },\n { type: 'resource', resource: { uri, mimeType, blob } }\n ]\n }\n } else {\n return {\n content: [{ type: 'text' as const, text }]\n }\n }\n}\n\nexport function jsonToolResult(data: object, isError = false): CallToolResult {\n const result: CallToolResult = { content: [{ type: 'text' as const, text: JSON.stringify(data) }] }\n if (isError) { result.isError = true }\n return result\n}\n\nexport function errorToolResult({ code, name, message }: SilkweaveError): CallToolResult {\n return {\n isError: true,\n content: [{\n type: 'text',\n text: JSON.stringify({ success: false, code, name, message })\n }]\n }\n}\n\nexport function handleToolError(error: unknown): CallToolResult {\n if (error instanceof SilkweaveError) {\n return jsonToolResult({ success: false, name: error.name, message: error.message, code: error.code }, true)\n } else if (error instanceof Error) {\n return jsonToolResult({ success: false, name: error.name, message: error.message, stack: error.stack }, true)\n } else {\n return jsonToolResult({ success: false, name: 'Unknown error', message: 'An unknown error occurred', error }, true)\n }\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { Action, AdapterFactory, SilkweaveContext } from '@silkweave/core'\nimport { createLogger } from '@silkweave/logger'\nimport { capitalCase, pascalCase } from 'change-case'\nimport { handleToolError, smartToolResult } from '../util/result.js'\n\nfunction registerTools(server: McpServer, actions: Action[], context: SilkweaveContext) {\n for (const action of actions) {\n server.registerTool(pascalCase(action.name), {\n title: capitalCase(action.name),\n description: action.description,\n inputSchema: action.input\n }, async (input, extra) => {\n const logger = createLogger({\n stream: false,\n onLog: (level, data) => {\n extra.sendNotification({ method: 'notifications/message', params: { level, data } })\n },\n onProgress: ({ progress, total, message }) => {\n if (!extra._meta?.progressToken) { return }\n extra.sendNotification({\n method: 'notifications/progress',\n params: { progress, total, message, progressToken: extra._meta.progressToken }\n })\n }\n })\n const actionContext = context.fork({ logger, extra })\n return action.run(input, actionContext)\n .then((result) => action.toolResult?.(result, actionContext) ?? smartToolResult(result))\n .catch(handleToolError)\n })\n }\n}\n\nexport const stdio: AdapterFactory = () => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'stdio' })\n const server = new McpServer({\n name: options.name,\n description: options.description,\n version: options.version\n }, {\n capabilities: { tools: {}, logging: {} }\n })\n return {\n context,\n start: async (actions) => {\n registerTools(server, actions, context)\n const transport = new StdioServerTransport()\n await server.connect(transport)\n },\n stop: async () => {\n await server?.close()\n }\n }\n }\n}\n","import { randomUUID } from 'crypto'\nimport { writeFile } from 'fs/promises'\n\nexport interface SideloadResource {\n id: string\n name: string\n contentType: string\n size: number\n}\n\nexport async function createSideloadResource(buffer: Buffer, { name, contentType }: Pick<SideloadResource, 'name' | 'contentType'>) {\n const id = randomUUID()\n const resource: SideloadResource = { id, name, contentType, size: buffer.length }\n await Promise.all([\n writeFile(`resources/${id}`, buffer),\n writeFile(`resources/${id}.json`, JSON.stringify(resource), 'utf-8')\n ])\n return resource\n}\n"],"mappings":"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","names":["randomUUID","randomUUID","randomUUID","McpServer","createLogger","capitalCase","pascalCase","registerTools","pascalCase","capitalCase","createLogger","McpServer","randomUUID"]}
|
|
1
|
+
{"version":3,"sources":["../src/adapter/cliProxy.ts","../src/adapter/http.ts","../src/util/result.ts","../src/adapter/stdio.ts","../src/util/sideload.ts"],"sourcesContent":["import { intro } from '@clack/prompts'\nimport { Client } from '@modelcontextprotocol/sdk/client'\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'\nimport { LoggingMessageNotificationSchema, ProgressNotificationSchema } from '@modelcontextprotocol/sdk/types.js'\nimport { AdapterFactory, unwrap } from '@silkweave/core'\nimport { createCLILogger } from '@silkweave/logger'\nimport { kebabCase } from 'change-case'\nimport { Command } from 'commander'\nimport { randomUUID } from 'crypto'\nimport { z } from 'zod'\nimport { JSONSchema } from 'zod/v4/core'\n\nexport interface CliProxyOptions {\n url: URL\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction addCliOption(command: Command, key: string, type: z.ZodType, defaultValue: any) {\n const description = type.description\n const flag = kebabCase(key)\n if (type instanceof z.ZodBoolean) {\n command.option(`--${flag}`, description, defaultValue)\n command.option(`--no-${flag}`)\n } else if (type instanceof z.ZodNumber) {\n command.option(`--${flag} <number>`, description, defaultValue)\n } else if (type instanceof z.ZodString || type instanceof z.ZodEnum) {\n command.option(`--${flag} <string>`, description, defaultValue)\n } else if (type instanceof z.ZodObject || type instanceof z.ZodRecord || type instanceof z.ZodArray) {\n command.option(`--${flag} <json>`, description ?? '', JSON.parse, defaultValue)\n } else {\n throw new Error(`Invalid zod type: ${type.def.type}`)\n }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction registerProxyCommand(\n program: Command,\n client: Client,\n tool: { name: string; description?: string; inputSchema: object },\n options: { name: string; version: string; description: string }\n) {\n const name = kebabCase(tool.name)\n const command = program.command(name)\n if (tool.description) { command.description(tool.description) }\n const schema = z.fromJSONSchema(tool.inputSchema as JSONSchema.JSONSchema)\n if (!(schema instanceof z.ZodObject)) { throw new Error('Invalid schema') }\n const shape = schema.shape\n for (const key of Object.keys(shape)) {\n const [type, { defaultValue }] = unwrap(shape[key])\n addCliOption(command, key, type, defaultValue)\n }\n command.action(async (args) => {\n const { silent } = program.opts<{ silent: boolean }>()\n const logger = createCLILogger()\n if (!silent) {\n intro(`${options.name} - ${tool.name}`)\n client.setNotificationHandler(LoggingMessageNotificationSchema, ({ params: { level, data } }) => {\n logger[level](data)\n })\n client.setNotificationHandler(ProgressNotificationSchema, ({ params: { progress, total, message } }) => {\n logger.info({ progress, total, message })\n })\n }\n const input = await schema.parseAsync(args)\n const response = await client.callTool({\n name: tool.name,\n arguments: input,\n _meta: { progressToken: randomUUID() }\n })\n process.stdout.write(JSON.stringify(response))\n })\n}\n\nexport const cliProxy: AdapterFactory<CliProxyOptions> = ({ url }) => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'cliProxy' })\n const program = new Command()\n .name(options.name)\n .description(options.description)\n .version(options.version)\n .option('-s, --silent', 'Silent mode, prevent log messages', false)\n\n return {\n context,\n start: async () => {\n const client = new Client({\n name: options.name,\n description: options.description,\n version: options.version\n })\n const transport = new StreamableHTTPClientTransport(url)\n await client.connect(transport)\n const { tools } = await client.listTools()\n for (const tool of tools) {\n registerProxyCommand(program, client, tool, options)\n }\n await program.parseAsync()\n await transport.close()\n },\n stop: async () => { }\n }\n }\n}\n","import { InMemoryEventStore } from '@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js'\nimport { createMcpExpressApp, CreateMcpExpressAppOptions } from '@modelcontextprotocol/sdk/server/express.js'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'\nimport { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js'\nimport { AuthConfig, AuthInfo, generateProtectedResourceMetadata, OAuthRequest, OAuthResponse, validateToken } from '@silkweave/auth'\nimport { Action, AdapterFactory, SilkweaveContext, SilkweaveOptions } from '@silkweave/core'\nimport { createLogger } from '@silkweave/logger'\nimport { capitalCase, pascalCase } from 'change-case'\nimport cors from 'cors'\nimport { randomUUID } from 'crypto'\nimport express, { Express, Request, Response } from 'express'\nimport { readFile } from 'fs/promises'\nimport { Server } from 'http'\nimport { AsyncLocalStorage } from 'node:async_hooks'\nimport { handleToolError, smartToolResult } from '../util/result.js'\nimport { SideloadResource } from '../util/sideload.js'\n\nconst authStorage = new AsyncLocalStorage<AuthInfo>()\n\nexport interface HttpAdapterOptions extends CreateMcpExpressAppOptions {\n host: string\n port: number\n auth?: AuthConfig\n}\n\nfunction mountOAuthRoutes(app: Express, auth: AuthConfig): Set<string> {\n const provider = auth.provider!\n const callbackPath = auth.callbackPath ?? '/auth/callback'\n\n const toOAuthReq = (req: Request): OAuthRequest => ({\n method: req.method,\n url: new URL(req.url, `${req.protocol}://${req.get('host')}`),\n headers: Object.fromEntries(Object.entries(req.headers).map(([k, v]) => [k, Array.isArray(v) ? v[0] : v])),\n body: req.body as Record<string, string> | undefined\n })\n\n const sendOAuth = (res: Response, oauthRes: OAuthResponse) => {\n for (const [key, value] of Object.entries(oauthRes.headers)) { res.header(key, value) }\n if (oauthRes.body) {\n res.status(oauthRes.status).send(typeof oauthRes.body === 'string' ? oauthRes.body : JSON.stringify(oauthRes.body))\n } else {\n res.status(oauthRes.status).end()\n }\n }\n\n app.get('/.well-known/oauth-authorization-server', (_req: Request, res: Response) => {\n sendOAuth(res, provider.metadata())\n })\n app.get('/authorize', async (req: Request, res: Response) => {\n sendOAuth(res, await provider.authorize(toOAuthReq(req)))\n })\n app.get(callbackPath, async (req: Request, res: Response) => {\n sendOAuth(res, await provider.callback(toOAuthReq(req)))\n })\n app.post('/token', express.urlencoded({ extended: false }), async (req: Request, res: Response) => {\n sendOAuth(res, await provider.token(toOAuthReq(req)))\n })\n app.post('/register', express.json(), async (req: Request, res: Response) => {\n sendOAuth(res, await provider.register(toOAuthReq(req)))\n })\n\n return new Set(['/.well-known/oauth-authorization-server', '/authorize', callbackPath, '/token', '/register'])\n}\n\nfunction mountAuthMiddleware(app: Express, auth: AuthConfig, oauthPaths: Set<string>, context: SilkweaveContext) {\n app.use(async (req: Request, res: Response, next: (err?: unknown) => void) => {\n if (req.path.startsWith('/.well-known/') || oauthPaths.has(req.path)) { return next() }\n const result = await validateToken(req.headers.authorization, auth, context.fork({ request: req }))\n if (result.error) {\n for (const [key, value] of Object.entries(result.error.headers)) {\n res.header(key, value)\n }\n res.status(result.error.statusCode).json(result.error.body)\n return\n }\n if (result.auth) {\n authStorage.run(result.auth, () => { next() })\n } else {\n next()\n }\n })\n}\n\nfunction registerTools(server: McpServer, actions: Action[], context: SilkweaveContext) {\n for (const action of actions) {\n server.registerTool(pascalCase(action.name), {\n title: capitalCase(action.name),\n description: action.description,\n inputSchema: action.input\n }, async (input, extra) => {\n const logger = createLogger({\n stream: process.stderr,\n onLog: (level, data) => {\n extra.sendNotification({ method: 'notifications/message', params: { level, data } })\n },\n onProgress: ({ progress, total, message }) => {\n if (!extra._meta?.progressToken) { return }\n extra.sendNotification({\n method: 'notifications/progress',\n params: { progress, total, message, progressToken: extra._meta.progressToken }\n })\n }\n })\n const currentAuth = authStorage.getStore()\n const actionContext = context.fork({ logger, extra, ...(currentAuth ? { auth: currentAuth } : {}) })\n return action.run(input, actionContext)\n .then((result) => {\n const data = action.toolResult?.(result, actionContext) ?? smartToolResult(result)\n return data\n })\n .catch(handleToolError)\n })\n }\n}\n\nfunction createMcpServer(options: SilkweaveOptions, actions: Action[], context: SilkweaveContext): McpServer {\n const server = new McpServer({\n name: options.name,\n description: options.description,\n version: options.version\n }, {\n capabilities: { tools: {}, logging: {} }\n })\n registerTools(server, actions, context)\n return server\n}\n\nfunction createSessionTransport(transports: Record<string, StreamableHTTPServerTransport>): StreamableHTTPServerTransport {\n const eventStore = new InMemoryEventStore()\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n enableJsonResponse: false,\n eventStore,\n onsessioninitialized: (sId) => {\n console.log(`Session initialized with ID: ${sId}`)\n transports[sId] = transport\n }\n })\n transport.onerror = (error) => {\n console.error(error)\n }\n transport.onclose = () => {\n const sid = transport.sessionId\n if (sid && transports[sid]) {\n console.log(`Transport closed for session ${sid}, removing from transports map`)\n delete transports[sid]\n }\n }\n return transport\n}\n\nfunction mountMcpTransport(\n app: Express,\n transports: Record<string, StreamableHTTPServerTransport>,\n createServer: () => McpServer\n) {\n app.post('/mcp', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined\n try {\n if (sessionId && transports[sessionId]) {\n await transports[sessionId].handleRequest(req, res, req.body)\n return\n }\n\n if (!isInitializeRequest(req.body)) {\n res.status(404).json({\n jsonrpc: '2.0',\n error: { code: -32_000, message: 'Session not found' },\n id: null\n })\n return\n }\n\n const transport = createSessionTransport(transports)\n await createServer().connect(transport)\n await transport.handleRequest(req, res, req.body)\n } catch (error) {\n console.error('Error handling MCP request:', error)\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: '2.0',\n error: { code: -32_603, message: 'Internal server error' },\n id: null\n })\n }\n }\n })\n\n const handleSessionStream = async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send('Invalid or missing session ID')\n return\n }\n const transport = transports[sessionId]\n await transport.handleRequest(req, res)\n }\n\n app.get('/mcp', handleSessionStream)\n app.delete('/mcp', handleSessionStream)\n app.get('/mcp/resource/:id', handleSessionStream)\n}\n\nexport const http: AdapterFactory<HttpAdapterOptions> = ({ host, port, auth, ...mcpOptions }) => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'http' })\n const app = createMcpExpressApp({ ...mcpOptions, host })\n app.use(cors({ exposedHeaders: ['WWW-Authenticate', 'Mcp-Session-Id', 'Last-Event-Id', 'Mcp-Protocol-Version'], origin: '*' }))\n\n if (auth?.authorizationServers?.length && auth.resourceUrl) {\n app.get('/.well-known/oauth-protected-resource', (_req: Request, res: Response) => {\n const metadata = generateProtectedResourceMetadata(auth.resourceUrl!, auth.authorizationServers!)\n res.json(metadata)\n })\n }\n\n const oauthPaths = auth?.provider ? mountOAuthRoutes(app, auth) : new Set<string>()\n\n if (auth) {\n mountAuthMiddleware(app, auth, oauthPaths, context)\n }\n\n const transports: Record<string, StreamableHTTPServerTransport> = {}\n let mountedActions: Action[] = []\n\n app.get('/resource/:id', async (req: Request, res: Response) => {\n const id = req.params.id\n if (!id || typeof id !== 'string') { throw new Error('Invalid ID') }\n const resourceMeta: SideloadResource = JSON.parse(await readFile(`resources/${id}.json`, 'utf-8'))\n const buffer = await readFile(`resources/${id}`)\n res.status(200)\n res.header('Content-Type', resourceMeta.contentType)\n res.send(buffer)\n })\n\n mountMcpTransport(app, transports, () => createMcpServer(options, mountedActions, context))\n\n let httpServer: Server | undefined\n return {\n context,\n start: async (actions) => {\n mountedActions = actions\n httpServer = app.listen(port, host, (error) => {\n if (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n console.log(`MCP Streamable HTTP Server listening on http://${host}:${port}/mcp`)\n })\n },\n stop: async () => {\n if (httpServer) {\n await new Promise<void>((resolve, reject) => {\n return httpServer!.close((err) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n })\n }\n httpServer = undefined\n }\n }\n }\n}\n","import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js'\nimport { SilkweaveError } from '@silkweave/core'\nimport { randomUUID } from 'node:crypto'\n\nexport function smartToolResult(data: string | object | object[]): CallToolResult {\n const text = typeof data === 'string' ? data : JSON.stringify(data)\n const mimeType = typeof data === 'string' ? 'text/plain' : 'application/json'\n const ext = typeof data === 'string' ? 'txt' : 'json'\n if (text.length > 4096) {\n const uri = `mcp://toolResult/${randomUUID()}.${ext}`\n const buffer = Buffer.from(text)\n const blob = buffer.toString('base64')\n return {\n content: [\n { type: 'text', text: `Received resource ${uri} with ${buffer.byteLength} bytes` },\n { type: 'resource', resource: { uri, mimeType, blob } }\n ]\n }\n } else {\n return {\n content: [{ type: 'text' as const, text }]\n }\n }\n}\n\nexport function jsonToolResult(data: object, isError = false): CallToolResult {\n const result: CallToolResult = { content: [{ type: 'text' as const, text: JSON.stringify(data) }] }\n if (isError) { result.isError = true }\n return result\n}\n\nexport function errorToolResult({ code, name, message }: SilkweaveError): CallToolResult {\n return {\n isError: true,\n content: [{\n type: 'text',\n text: JSON.stringify({ success: false, code, name, message })\n }]\n }\n}\n\nexport function handleToolError(error: unknown): CallToolResult {\n if (error instanceof SilkweaveError) {\n return jsonToolResult({ success: false, name: error.name, message: error.message, code: error.code }, true)\n } else if (error instanceof Error) {\n return jsonToolResult({ success: false, name: error.name, message: error.message, stack: error.stack }, true)\n } else {\n return jsonToolResult({ success: false, name: 'Unknown error', message: 'An unknown error occurred', error }, true)\n }\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { Action, AdapterFactory, SilkweaveContext } from '@silkweave/core'\nimport { createLogger } from '@silkweave/logger'\nimport { capitalCase, pascalCase } from 'change-case'\nimport { handleToolError, smartToolResult } from '../util/result.js'\n\nfunction registerTools(server: McpServer, actions: Action[], context: SilkweaveContext) {\n for (const action of actions) {\n server.registerTool(pascalCase(action.name), {\n title: capitalCase(action.name),\n description: action.description,\n inputSchema: action.input\n }, async (input, extra) => {\n const logger = createLogger({\n stream: false,\n onLog: (level, data) => {\n extra.sendNotification({ method: 'notifications/message', params: { level, data } })\n },\n onProgress: ({ progress, total, message }) => {\n if (!extra._meta?.progressToken) { return }\n extra.sendNotification({\n method: 'notifications/progress',\n params: { progress, total, message, progressToken: extra._meta.progressToken }\n })\n }\n })\n const actionContext = context.fork({ logger, extra })\n return action.run(input, actionContext)\n .then((result) => action.toolResult?.(result, actionContext) ?? smartToolResult(result))\n .catch(handleToolError)\n })\n }\n}\n\nexport const stdio: AdapterFactory = () => {\n return (options, baseContext) => {\n const context = baseContext.fork({ adapter: 'stdio' })\n const server = new McpServer({\n name: options.name,\n description: options.description,\n version: options.version\n }, {\n capabilities: { tools: {}, logging: {} }\n })\n return {\n context,\n start: async (actions) => {\n registerTools(server, actions, context)\n const transport = new StdioServerTransport()\n await server.connect(transport)\n },\n stop: async () => {\n await server?.close()\n }\n }\n }\n}\n","import { randomUUID } from 'crypto'\nimport { writeFile } from 'fs/promises'\n\nexport interface SideloadResource {\n id: string\n name: string\n contentType: string\n size: number\n}\n\nexport async function createSideloadResource(buffer: Buffer, { name, contentType }: Pick<SideloadResource, 'name' | 'contentType'>) {\n const id = randomUUID()\n const resource: SideloadResource = { id, name, contentType, size: buffer.length }\n await Promise.all([\n writeFile(`resources/${id}`, buffer),\n writeFile(`resources/${id}.json`, JSON.stringify(resource), 'utf-8')\n ])\n return resource\n}\n"],"mappings":"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","names":["randomUUID","randomUUID","randomUUID","McpServer","createLogger","capitalCase","pascalCase","registerTools","pascalCase","capitalCase","createLogger","McpServer","randomUUID"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silkweave/mcp",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Silkweave MCP Package",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"cors": "^2.8.6",
|
|
19
19
|
"express": "^5.2.1",
|
|
20
20
|
"zod": "^4.3.6",
|
|
21
|
-
"@silkweave/
|
|
22
|
-
"@silkweave/
|
|
23
|
-
"@silkweave/logger": "1.4.
|
|
21
|
+
"@silkweave/core": "1.4.1",
|
|
22
|
+
"@silkweave/auth": "1.4.1",
|
|
23
|
+
"@silkweave/logger": "1.4.1"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@eslint/js": "^10.0.1",
|