Claude MCP 体验: 实现一个 Arxiv 论文搜索工具
本文最后更新于 2024年12月13日 晚上
MCP 介绍
Anthropic (Claude) 在 11 月 25 日推出了一个协议: MCP (Model Context Protocol)。[1]
协议的目的是解决各类无法联网的 ChatBot 的信息孤岛问题。
比如 ChatGPT 在 ChatGPT Search 的加持下,可以做到搜索最新的网页信息并分析:
但是 Claude 在内的许多模型目前还不支持:
除此之外,许多时候我们希望访问一些自定义的数据源,比如本地的数据库等。
这些需求目前只能通过自己写代码 + 用 GPT 的 API 来进行操作。
MCP 的出现实际上就是用来解决这个问题:作为一个中间层,提供一个统一的协议和 SDK 来对接各类数据源。
目前 Claude 在 https://modelcontextprotocol.io/introduction 已经提供了完整开源的 python SDK 和 TypeScript SDK
这个玩意也是我最近琢磨 Claude Desktop APP 的配置的时候才发现的,目前支持 MCP 的 Client 在 这里 可以看到:
Client | Resources | Prompts | Tools | Sampling | Roots | Notes |
---|---|---|---|---|---|---|
Claude Desktop App | ✅ | ✅ | ✅ | ❌ | ❌ | Full support for all MCP features |
Zed | ❌ | ✅ | ❌ | ❌ | ❌ | Prompts appear as slash commands |
Sourcegraph Cody | ✅ | ❌ | ❌ | ❌ | ❌ | Supports resources through OpenCTX |
Firebase Genkit | ⚠️ | ✅ | ✅ | ❌ | ❌ | Supports resource list and lookup through tools. |
Continue | ✅ | ✅ | ✅ | ❌ | ❌ | Full support for all MCP features |
GenAIScript | ❌ | ❌ | ✅ | ❌ | ❌ | Supports tools. |
如果你开通了 Claude Pro 并且有 Claude Desktop,可以通过官网的这个 DEMO:https://modelcontextprotocol.io/quickstart 来实现一个获取天气和天气警报的联网查询功能。
实践:实现一个 Arxiv 论文搜索工具
我自己也通过简单修改了一下 quickstart [4],利用 python sdk 来实现了一个符合自己需求的 Arxiv 论文获取工具。
完整的代码在:https://github.com/Lincest/mcp-papersearch
简单介绍一下具体的使用方式:
1 - 安装环境
uv 是一个 rust 编写的 python 包管理器,和 virtualenv 这些差不多,由于官网用的是 uv,于是就沿用一下。
1 |
|
clone 仓库:
1 |
|
安装依赖:
1 |
|
2 - 配置 Claude
需要编辑 ~/Library/Application\ Support/Claude/claude_desktop_config.json
(windows路径在:$env:AppData\Claude\claude_desktop_config.json
)
1 |
|
内容为:
1 |
|
把上面的路径按注释内容改一下,删除注释,然后重新启动 Claude Desktop:
这时候会发现右下角出现了个锤子🔨:
就说明运行成功了。
3 - 测试
case 01: 搜索近期的论文
问 Claude 一个简单的问题,比如
搜索一下最近3天的 MoE Inference 相关论文
这时候会弹出一个窗口,就表示 Claude 识别到了应该调用我们的 papersearch 来搜索。
点击 Allow 后,发现他很智能的调用了两次,一次在3天内没找到后,又扩展范围到了30天来搜索:
case 02: 搜索指定的论文
比如我们要搜索 https://arxiv.org/abs/2308.12066 这篇论文,标题是「Pre-gated MoE: An Algorithm-System Co-Design for Fast and Scalable Mixture-of-Expert Inference」
提问:
总结
目前的 case 写的还很潦草,大部分就是直接让 claude 自己生成了然后简单改一改。
以后用来接入一些 DB 估计会比较好用。
更多有趣的官方 demo
这里提供了更多有趣的官方推荐的 MCP Tools 和用法,几个个人觉得比较有意思的:
- 实现和 Github 的交互: https://github.com/modelcontextprotocol/servers/tree/main/src/github
- 实现和 Obsidian 的交互:https://github.com/calclavia/mcp-obsidian
- 获取 Web 内容:https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
通过 Fetch 获取 web 信息
通过官方提供的 fetch, 不需要下载任何代码,仅仅需要配置:
1 |
|
就可以实现 web search 的功能了,例如查看北京天气: