UNPKG

@foundrole/ai-job-search-mcp

Version:

Run your job search from your AI assistant. Connect FoundRole to Claude, ChatGPT, Cursor, or any MCP client and search live jobs right away — no sign-up. Sign in once (your AI does it for you) to save and track applications on a Kanban board, set follow-u

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