Skip to main content
Glama

Apifox MCP Server

by Tzott
index.ts1.98 kB
import dotenv from 'dotenv'; import express from 'express'; import { ENV } from './shared/ENV'; import { EndpointMCPServer } from './server/EndpointMCPServer'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import type { Express } from 'express'; import { ServerResponse, IncomingMessage } from 'http'; dotenv.config(); const APIFOX_USER_ACCESS_TOKEN = process.env.APIFOX_USER_ACCESS_TOKEN; if (!APIFOX_USER_ACCESS_TOKEN) { console.log('APIFOX_USER_ACCESS_TOKEN environment variable is not set, please set it in .env'); process.exit(1); } function createMcpServer(app: Express) { const mcpServer = new McpServer({ name: `Apifox MCP Server`, version: '0.1.0', }); const sseUrl = '/sse'; const messagesUrl = '/messages'; let sseTransport: SSEServerTransport | undefined = undefined; app.get(sseUrl, async (_req, res) => { console.log('New SSE connection established', sseUrl); sseTransport = new SSEServerTransport(messagesUrl, res as unknown as ServerResponse<IncomingMessage>); await mcpServer.connect(sseTransport); }); app.post(messagesUrl, async (req, res) => { if (!sseTransport) { res.sendStatus(400); return; } await sseTransport.handlePostMessage( req as unknown as IncomingMessage, res as unknown as ServerResponse<IncomingMessage>, ); }); const baseUrl = `http://localhost:${ENV.PORT}`; console.log(`SSE endpoint: ${baseUrl}${sseUrl}`); console.log(`Message endpoint: ${baseUrl}${messagesUrl}`); return mcpServer; } async function main() { const app = express(); const mcpServer = createMcpServer(app); [new EndpointMCPServer(mcpServer)].map((server) => { return server.registerTools(); }); app.listen(ENV.PORT, () => { console.log(`HTTP server listening on port ${ENV.PORT}`); }); } main().catch((error) => { console.log('失败', error); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tzott/apifox-mcp-demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server