Intégrations

Model Context Protocol (MCP)

Expose Thunderbit comme serveur MCP pour que Claude, Cursor, Windsurf et Claude Code puissent lire des URLs

MCP est un protocole ouvert pour brancher des outils dans les hôtes LLM. Une fois Thunderbit branché comme serveur MCP, chaque client compatible MCP — Claude Desktop, Cursor, Windsurf, Claude Code, Zed — obtient gratuitement un Tool read_url.

Installation

npm install @modelcontextprotocol/sdk zod

Serveur (TypeScript)

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';

const API = 'https://openapi.thunderbit.com/openapi/v1';
const H = { Authorization: `Bearer ${process.env.THUNDERBIT_API_KEY}` };

const server = new Server(
  { name: 'thunderbit', version: '0.1.0' },
  { capabilities: { tools: {} } },
);

server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: 'read_url',
      description: 'Fetch a URL and return clean Markdown.',
      inputSchema: {
        type: 'object',
        properties: {
          url: { type: 'string' },
          renderMode: { type: 'string', enum: ['basic', 'advanced'], default: 'basic' },
        },
        required: ['url'],
      },
    },
  ],
}));

server.setRequestHandler(CallToolRequestSchema, async (req) => {
  const { url, renderMode = 'basic' } = req.params.arguments as any;
  const res = await fetch(`${API}/distill`, {
    method: 'POST',
    headers: { ...H, 'Content-Type': 'application/json' },
    body: JSON.stringify({ url, renderMode }),
  });
  const json = await res.json();
  return { content: [{ type: 'text', text: json.data.markdown }] };
});

await server.connect(new StdioServerTransport());

Branche dans Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json :

{
  "mcpServers": {
    "thunderbit": {
      "command": "node",
      "args": ["/abs/path/to/server.js"],
      "env": { "THUNDERBIT_API_KEY": "tb_live_..." }
    }
  }
}

Redémarre Claude Desktop — read_url apparaît dans le sélecteur de Tools.

Branche dans Cursor / Windsurf / Claude Code

Les trois lisent la config MCP depuis un JSON similaire. Voir la doc de chaque éditeur — la forme mcpServers est identique.

Astuces

  • Ajoute un second Tool extract_data adossé à /extract pour les extractions structurées
  • Pour les jobs batch, expose read_urls (au pluriel) adossé à /batch/distill et poll dans le handler
  • Garde le serveur en stdio pour les hôtes desktop ; passe en SSE si tu héberges à distance

Liens connexes