UNPKG

@foundrole/ai-job-search-mcp

Version:

Easy-to-use MCP proxy server that connects AI assistants like Claude to job search services. Simply run with npx for instant job search capabilities in your AI conversations.

35 lines 1.77 kB
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { extractClientInfoFromParent } from "./client-detector.js"; import { proxyServer } from "./proxy-server.js"; export const startStdioServer = async ({ url, }) => { // Detect original client from parent process const originalClientInfo = await extractClientInfoFromParent(); console.error(`[PROXY] Using client identity: ${originalClientInfo.name}@${originalClientInfo.version}`); const createHttpClient = async () => { const transport = new StreamableHTTPClientTransport(new URL(url)); const client = new Client(originalClientInfo, { capabilities: {} }); // Type assertion needed due to MCP SDK type incompatibility: // StreamableHTTPClientTransport.sessionId is string|undefined but Transport expects string await client.connect(transport); return client; }; // Create HTTP client with original client identity const httpClient = await createHttpClient(); const serverVersion = httpClient.getServerVersion(); const serverCapabilities = httpClient.getServerCapabilities(); const stdioServer = new Server(serverVersion, { capabilities: serverCapabilities, }); const stdioTransport = new StdioServerTransport(); await stdioServer.connect(stdioTransport); await proxyServer({ client: httpClient, server: stdioServer, serverCapabilities, }); return stdioServer; }; //# sourceMappingURL=stdio-server.js.map