Skip to main content
Glama

Data Gouv MCP Server

by csonigo
index.ts1.69 kB
import express from "express"; import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { Tools } from "./mcp/Tools.js"; import getRawBody from "raw-body"; const server = new Server( { name: "Data Gouv MCP Server", version: "0.1.0", }, { capabilities: { tools: { listChanged: true } } } ); const app = express(); server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: Tools.TOOLS, })); server.setRequestHandler(CallToolRequestSchema, async (request) => { const tools = new Tools(); const { name } = request.params; switch (name) { case "search-company": return tools.searchCompany( (request.params.arguments as { query: string }).query ); default: throw new Error(`Tool ${name} not found`); } }); let transport: SSEServerTransport | undefined = undefined; app.get("/sse", async (req, res) => { transport = new SSEServerTransport("/messages", res); await server.connect(transport); }); app.post("/messages", async (req, res) => { if (!transport) { res.status(400); res.json({ error: "No transport" }); return; } const rawBody = await getRawBody(req, { limit: "1mb", encoding: "utf-8", }); const messageBody = JSON.parse(rawBody.toString()); console.log(messageBody); if (!messageBody.params) { messageBody.params = {}; } await transport.handlePostMessage(req, res, messageBody); }); app.listen(3001, () => { console.log("Server is running on port 3001"); });

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/csonigo/datagouv-mcp-server'

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