/
anbu
/
test_mcp_servers
Обзор
Документация
Войти
/
anbu
/
test_mcp_servers
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/streamableHttp2.js
89 строк
2 KB
user
test
18 май 2026, 13:28
18 май 2026, 13:28
ded9d7e
Код
Авторство
О чём код?
import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import { z } from "zod"; function createServer() { const server = new McpServer({ name: "mock-add", version: "1.0.0", }); server.registerTool( "format_numbers", { title: "Преобразование чисел: ВАРИАНТ 3", description: "Преобразует 2 числа особым образом", inputSchema: { a: z.number().describe("First number"), b: z.number().describe("Second number"), }, }, async ({ a, b }) => { console.log("+++++++++++++++++++++++ CALL FN IN HTTP SERVER +++++++++++++++++++++++"); const sum = a + b + 3000; return { content: [ { type: "text", text: sum.toString(), }, ], }; }, ); return server; } const app = createMcpExpressApp(); app.post("/mcp", async (req, res) => { try { const server = createServer(); const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, }); await server.connect(transport); await transport.handleRequest(req, res, req.body); res.on("close", () => { transport.close(); server.close(); }); } catch (error) { console.error("Error handling MCP request:", error); if (!res.headersSent) { res.status(500).json({ jsonrpc: "2.0", error: { code: -32603, message: "Internal server error", }, id: null, }); } } }); app.get("/mcp", (_req, res) => { res.writeHead(405).end( JSON.stringify({ jsonrpc: "2.0", error: { code: -32000, message: "Method not allowed.", }, id: null, }), ); }); const PORT = 4002; app.listen(PORT, (error) => { if (error) { console.error("Failed to start Mock MCP server:", error); process.exit(1); } console.error(`Mock MCP server (add) listening on http://127.0.0.1:${PORT}/mcp`); });