Tour de France MCP

Quickstart

Connect an MCP client to the public Tour de France endpoint.

The server is deployed publicly over HTTPS. There is nothing to install and no authentication to configure — point any MCP client at the endpoint below.

Streamable HTTP endpoint
https://tour-de-france.andru.codes/mcp

Add it to a client

claude mcp add --transport http tour-de-france https://tour-de-france.andru.codes/mcp

Then start a session and ask about the race — the tdf_* tools appear automatically.

Add the server to your client's MCP config (e.g. Cursor's mcp.json):

{
  "mcpServers": {
    "tour-de-france": {
      "type": "http",
      "url": "https://tour-de-france.andru.codes/mcp"
    }
  }
}

Talk to the transport directly. First initialize (grab the Mcp-Session-Id response header), then call a tool with that session id.

# 1) initialize — note the Mcp-Session-Id response header
curl -si https://tour-de-france.andru.codes/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

# 2) call a tool (replace <SID> with the session id from step 1)
curl -s https://tour-de-france.andru.codes/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Mcp-Session-Id: <SID>' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"tdf_stages","arguments":{"year":2026}}}'

Run it locally

Prefer to run your own copy? The server is a small Node project.

Clone and build

git clone https://github.com/QuantGeekDev/tour-de-france-mcp.git
cd tour-de-france-mcp
npm install
npm run build

Start the HTTP server

npm start   # http-stream transport on http://127.0.0.1:8080/mcp

The transport (port 8080, endpoint /mcp, CORS *) is configured in src/index.ts.

Point your client at localhost

Use http://127.0.0.1:8080/mcp instead of the public URL in any of the configs above.

For a stdio-based client, run node dist/index.js after switching the transport in src/index.ts back to stdio. The public deployment uses HTTP.

On this page