@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
JavaScript
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