系列文章目录

借助MCP尝试创建自己的Agent(一)
借助MCP尝试创建自己的Agent(二)



构建Claude桌面版联网功能和Github仓库管理功能

MCP架构包括客户端(Client)、服务器(Server)和本地资源三个部分,上一篇博客中的天气查询服务与本文中的网页抓取和github仓库管理为服务器的拓展使用,本质上就是基于Claude桌面(Client),来扩展新的工具。本文将要添加的功能,网上有github资料库,分别是:

  • Fetch server1 : 抓取互联网网页内容,将内容提取为markdown格式文档
  • github server 2 :通过Github API,实现文件操作、仓库管理、搜索等功能

一、实现github server

1. 功能展示

自动总结与查找仓库

MCP在github服务中添加了很多有趣的服务,可以让它帮忙总结某个主题下星最多的仓库,如帮我整理github上关于自动驾驶star最多的3个仓库
在这里插入图片描述

管理和创建仓库

帮我管理我的仓库,创建一个仓库:可以帮我创建一个关于LLMs算法的github仓库吗?我将用它作为LLMs的学习笔记仓库?
在这里插入图片描述
创建好的仓库还有模有样的,条理清晰,看上去很像那么回事:
在这里插入图片描述

2. 功能实现

开发者关于给出的实现样例封装的都很好,不需要再像天气服务那样一步步地配置文件,或者写python文件,可以直接通过dockernpx进行配置,下面我将介绍两种配置方式的具体操作。

通过npx配置

(1)确保你的系统中安装,并配置好了npx工具,在windows powershell中可以查看

npx --version

(2)在claude_desktop_config文件中配置下面的命令,输入github token即可,本节的最后会详细给出githubtoekn的获取过程

{
  "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学习分享,我是会编程的加缪,欢迎关注我,与我交流!


  1. Fetch MCP server ↩︎

  2. Github MCP server ↩︎

Logo

Agent 垂直技术社区,欢迎活跃、内容共建,欢迎商务合作。wx: diudiu5555

更多推荐