mcpField
M
MCP-Agent

MCP-Agent

github.com/shane-kercheval框架与 SDK2488 周前更新

关于 MCP-Agent

使用 DSPy 与 MCP 服务交互的命令行工具,提供类似 Claude Desktop 的体验。自动读取 MCP 配置,让 Agent 调用来自多个服务的工具完成任务。

主要功能

  1. 01DSPy Agent 自动工具调用
  2. 02支持 Claude Desktop 配置格式
  3. 03多服务工具集成
  4. 04OpenAI 模型集成

适用场景

  1. 01通过 Agent 自动完成复杂任务
  2. 02与本地 MCP 服务交互
  3. 03开发和测试 MCP 服务

MCP 相关

该 CLI 加载 MCP 配置文件中定义的服务,使 DSPy Agent 能够访问和调用这些服务暴露的所有工具。

详细介绍

MCP-Agent

./clients/mcp_client.py 是一个命令行工具,使用 DSPy 与 MCP 服务交互。目标是提供与 Claude Desktop 类似的体验。特别是,DSPy Agent 使用 MCP 服务中定义的工具定义来自主且迭代地使用工具以完成用户的请求。

该命令行程序采用 Claude Desktop 使用的同一格式的配置文件,并加载配置中的所有服务。所有服务中的工具都可供 Agent 使用。

运行项目

运行项目的有用命令可在 Makefile 中找到。

快速开始

  • 在项目目录中创建 .env 文件,并添加 OPENAI_API_KEY 键和值。
  • 相应调整 ./servers/mcp_fake_server_config.json 中的路径 /Users/shanekercheval/repos/mcp-client-agent/servers
  • make build
  • make chat
    • 使用 ./servers/mcp_fake_server_config.json 配置启动 chat 命令行命令,以启动 MCP 服务 ./servers/mcp_fake_server.py
      • 此 MCP 服务包含 count_characters 或 calulator_multiply 等琐碎工具
    • 此命令使用 openai/gpt-4o-mini 作为模型(DSPy 模型路径格式),需要在 .env 文件中设置 OPENAI_API_KEY

使用 make chat 命令和 mcp_fake_server.py 的示例:

将以下两个文本的字符数相乘:"Lorem ipsum odor amet, consectetuer adipiscing elit. Nisl ligula molestie nec a sodales morbi vel. Diam interdum metus ante semper, lorem ornare massa. Accumsan dapibus lacus venenatis; elementum varius nascetur nibh sodales ipsum. Suspendisse mauris cubilia sit elit netus mattis. Rhoncus vivamus ridiculus nostra sociosqu bibendum. Eleifend ultricies orci proin maecenas justo felis sagittis. Elit blandit mattis dis consectetur morbi quisque penatibus." 和 "Lorem ipsum odor amet, consectetuer adipiscing elit. Proin maximus condimentum fusce nam, dictum adipiscing maximus. Lacinia pellentesque magna senectus adipiscing massa cras elementum tortor. Habitant hendrerit sodales, consectetur amet conubia ullamcorper. Suscipit aliquet curae lobortis imperdiet, montes lectus. Hendrerit penatibus commodo semper laoreet viverra eu elit nisl."

应使用 count_characters 和 calculator_multiply 工具,结果应为 455 * 381 = 173,355。

启动 Claude 时的错误

在通过 uv run mcp install ./servers/mcp_fake_server.py 安装服务后启动 Claude 时,我收到了这些错误。使用 Docker 容器时不会发生这些错误。一个问题是 uv 命令似乎找不到,除非我提供路径(通过 which uv 找到)。另一个问题是 MCP 服务无法从它尝试导入的不同目录中找到文件。

以下是我收到的错误(tail -n 20 -F ~/Library/Logs/Claude/mcp*.log 帮助我进行调试):

Error in MCP connection to server Demo: Error: spawn uv ENOENT
[error] Could not start MCP server Demo: Error: spawn uv ENOENT

解决方案是向 command 添加完整路径,并添加 --directory 标志引用服务导入的源文件的项目目录:

{
  "mcpServers": {
    "fake-server": {
      "command": "/Users/shanekercheval/.local/bin/uv",
      "args": [
        "run",
        "--directory", 
        "/Users/shanekercheval/repos/mcp-client-agent",
        "--with",
        "mcp",
        "mcp",
        "run",
        "servers/mcp_fake_server.py"
      ]
    }
  }
}

似乎没有办法直接从 install 命令中执行此操作。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。