통합
Model Context Protocol (MCP)
Thunderbit를 MCP server로 노출해 Claude, Cursor, Windsurf, Claude Code가 URL을 읽도록
MCP 는 LLM 호스트에 Tool 을 꽂기 위한 오픈 프로토콜입니다. Thunderbit 를 MCP server 로 한 번 연결해 두면 모든 MCP 호환 클라이언트 —— Claude Desktop, Cursor, Windsurf, Claude Code, Zed —— 가 자동으로 read_url Tool 을 갖게 됩니다.
설치
npm install @modelcontextprotocol/sdk zodServer (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());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_..." }
}
}
}Claude Desktop 을 재시작하면 —— Tool 선택기에 read_url 이 나타납니다.
Cursor / Windsurf / Claude Code 에 연결
세 에디터 모두 비슷한 JSON 으로 MCP 설정을 읽습니다. 각 에디터 문서를 참고하세요 —— mcpServers 형태는 동일합니다.
팁
- 구조화 추출이 필요하면
/extract를 백엔드로 하는 두 번째 Toolextract_data를 추가하세요 - 배치 작업의 경우
/batch/distill을 백엔드로 하는read_urls(복수형) 를 노출하고 핸들러 안에서 폴링하세요 - 데스크톱 호스트는 stdio 기반으로 두고, 원격 호스팅이라면 SSE 로 전환하세요
관련 문서
- Vercel AI SDK —— 같은 패턴, 다른 호스트
- Agent Read-URL Tool