## 4. MCP 端点 `POST /mcp` 供 agent 接入的 MCP(Model Context Protocol)Streamable HTTP 端点。无状态: 每个 POST 是一条 JSON-RPC 2.0 消息,应答是单条 `application/json`;不开 SSE 流、 不发会话 id,GET / DELETE 回 405。鉴权与 `/graph/v1/` 相同(见 §0)。 客户端配置(支持远程 MCP 的 agent 框架通用形状): ```json {"mcpServers": {"fetchpaper": { "url": "https://fetchpaper.com/mcp", "headers": {"x-api-key": "<密钥>"} }}} ``` 支持的方法:`initialize`、`ping`、`tools/list`、`tools/call`;notification (如 `notifications/initialized`)回 202 空 body。协议版本协商 `2025-06-18` / `2025-03-26`。 13 个工具与 REST 端点一一对应,参数名与对应章节的查询参数相同 (`paper_id` / `author_id` 即路径里的 id;过滤参数见 §1.1): | 工具 | 对应端点 | |---|---| | `paper_search` | §1.1 `GET /paper/search` | | `paper_search_bulk` | §1.2 `GET /paper/search/bulk` | | `paper_search_match` | §1.3 `GET /paper/search/match` | | `paper_autocomplete` | §1.4 `GET /paper/autocomplete` | | `paper_get` | §1.5 `GET /paper/{paper_id}` | | `paper_citations` | §1.6 `GET /paper/{paper_id}/citations` | | `paper_references` | §1.7 `GET /paper/{paper_id}/references` | | `paper_authors` | §1.8 `GET /paper/{paper_id}/authors` | | `paper_batch` | §1.9 `POST /paper/batch`(`ids` 数组) | | `author_search` | §2.1 `GET /author/search` | | `author_get` | §2.2 `GET /author/{author_id}` | | `author_papers` | §2.3 `GET /author/{author_id}/papers` | | `author_batch` | §2.4 `POST /author/batch`(`ids` 数组) | `tools/call` 示例: ```json {"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "paper_search", "arguments": {"query": "transformer", "limit": 5, "fields": "title,year,citationCount"}}} ``` 应答的数据在 `result.content[0].text`(JSON 字符串)与 `result.structuredContent`(同内容的 JSON 对象)。查询按不动(参数错、 id 不存在)时 `result.isError=true`,`text` 里是 `{"error", "status"}`, 与 REST 面 4xx 同一份文案 —— 换写法重试有意义;数据目录问题同 §0 口径回 500。