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 zodServeur (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_dataadossé à/extractpour les extractions structurées - Pour les jobs batch, expose
read_urls(au pluriel) adossé à/batch/distillet poll dans le handler - Garde le serveur en stdio pour les hôtes desktop ; passe en SSE si tu héberges à distance
Liens connexes
- Vercel AI SDK — même pattern, hôte différent
- Tool Read-URL pour agent