
借助MCP尝试创建自己的Agent(三)
本文介绍了如何将已有工具融合到claude客户端中,结合之前的内容基本涵盖了LLMs扩展server的所有方法,可以按照这个思路来构建适合自己的agent。
系列文章目录
借助MCP尝试创建自己的Agent(一)
借助MCP尝试创建自己的Agent(二)
借助MCP尝试创建自己的Agent(三)
构建Claude桌面版联网功能和Github仓库管理功能
MCP架构包括客户端(Client)、服务器(Server)和本地资源三个部分,上一篇博客中的天气查询服务与本文中的网页抓取和github仓库管理为服务器的拓展使用,本质上就是基于Claude桌面(Client),来扩展新的工具。本文将要添加的功能,网上有github资料库,分别是:
一、实现github server
1. 功能展示
自动总结与查找仓库
MCP在github服务中添加了很多有趣的服务,可以让它帮忙总结某个主题下星最多的仓库,如帮我整理github上关于自动驾驶star最多的3个仓库
管理和创建仓库
帮我管理我的仓库,创建一个仓库:可以帮我创建一个关于LLMs算法的github仓库吗?我将用它作为LLMs的学习笔记仓库?
创建好的仓库还有模有样的,条理清晰,看上去很像那么回事:
2. 功能实现
开发者关于给出的实现样例封装的都很好,不需要再像天气服务那样一步步地配置文件,或者写python文件,可以直接通过docker
或npx
进行配置,下面我将介绍两种配置方式的具体操作。
通过npx
配置
(1)确保你的系统中安装,并配置好了npx
工具,在windows powershell中可以查看
npx --version
(2)在claude_desktop_config
文件中配置下面的命令,输入github token即可,本节的最后会详细给出github
toekn的获取过程
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
通过docker
配置
其次是docker
,其实docker也没有特别复杂,只是多了拉镜像的环节,我使用的docker 桌面版
,如果使用docker方法,一定要确认docker是启动状态
(1)搜索相关需要的镜像,如找到mcp/github
,直接拉取该镜像即可,使用命令行的朋友可以使用docker pull mcp/github
拉取镜像,总之,要确保本地有该镜像
可以通过命令行的docker images
命令查看是否存在该镜像
(2)在claude_desktop_config
中加入以下内容
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
github token获取
【点击个人头像】—【Settings】—【Developer settings】—【Personal access tokens】
点击生成新的token。如果你想让claude帮你管理你的仓库的话,那么在生成新的token时,一定要给这个token充足的权限。
以上便是Github server
的所有内容,欢迎大家探索和使用新的功能。
二、实现Fetch Server
1. 功能实现
Fetch server的实现同样是给出了三种功能基于uvx
,基于docker
,基于pip installation
,这些方法与github server的实现大同小异,配置好环境后,直接在claude_desktop_config
添加即可。所以这里不再赘述,仅给出claude_desktop_config
配置uvx
的直接添加即可,安装了uv
后不需要额外安装
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
}
}
docker
配置与第一节中的方法一致
"mcpServers": {
"fetch": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/fetch"]
}
}
pip
配置需要有python环境,并且安装pip install mcp-server-fetch
,最后再到配置文件中配置
"mcpServers": {
"fetch": {
"command": "python",
"args": ["-m", "mcp_server_fetch"]
}
}
2. 发现问题与解决方案
有趣的是,配置好之后,重启claude客户端访问网页时,显示它并不能访问网页
但是可以将它训练时间之间(2024年4月)的网页整理为我想要的.html
格式或者.markdown
格式
所以,接下来将对该功能进行修复,基本思路参考借助MCP尝试创建自己的Agent(二)中关于天气查询服务设置的解决办法,查看源代码以解决问题.
这里我仅仅按照之前的操作配置了fetch文件需要的环境,将所有运行代码融合到了一个.py文件中, claude现在可以正常的总结网页的信息了,但是当我提供带有日期的链接给它时,它会觉得这是一个未来的日期,还是与它训练的时间有关系。
实验了好多次,发现该功能时而有效,时而无效…在arxiv上最新发布的论文信息是可以总结的,后续将再深入研究
通过最近这三篇博客,我们可以看到,通过claude客户端可以拓展各种各样的功能,拓展方式可以是利用网上编辑好的资源,也可以用过python代码自己DIY。从这几次实践中,我发现MCP的server功能,本质上是定义一个可供LLMs识别的工具的API接口,然后通过LLMs(客户端)调用这些工具接口来完成这些任务。 所以,理论上来说,通过开发更多的工具和API接口,能丰富LLMs的功能,让它称为自己称手的agent。
以上便是今天的MCP学习分享,我是会编程的加缪
,欢迎关注我,与我交流!
更多推荐
所有评论(0)