MCP代理
./clients/mcp_client.py 是一个使用DSPy与MCP服务器交互的CLI。目标是提供与Claude Desktop类似的体验。特别是,DSPy代理使用MCP服务器中定义的工具定义来自主和迭代地使用工具来完成用户的请求。
CLI程序采用与Claude Desktop使用的格式相同的配置文件,并加载配置中的所有服务器。所有服务器上的工具都可供代理使用。
运行项目
运行项目的有用命令可以在 Makefile.
快速启动
- 创建一个
.env在项目目录中创建文件并添加OPENAI_API_KEY关键和价值。 - 调整此路径
/Users/shanekercheval/repos/mcp-client-agent/servers在……里面./servers/mcp_fake_server_config.json相应地 make buildmake chat
- 启动 chat 使用CLI命令 ./servers/mcp_fake_server_config.json 配置以启动MCP服务器 ./servers/mcp_fake_server.py - 这个MCP服务器包含一些琐碎的工具,如 count_characters 或 calulator_multiply - 此命令使用 openai/gpt-4o-mini 作为模型(DSPy模型路径格式化),需要 OPENAI_API_KEY 设置在 .env 文件
示例使用 make chat 命令和 mcp_fake_server.py:
将以下两个文本中的字符数相乘:“它们闻起来像花,它们同意精英们的观点。它们不需要戴刀、苏打水、苏打水或苏打水。在一天中,它们总是戴着巨大的装饰品。与彼此的衣服一起,它们带着牛奶;这种元素是在不同种类的苏打水中产生的。当立方体胡子悬挂起来时,它非常干净。朗科斯会和我们一起欢笑和喝酒。在底线的顶部,有一些惩罚,在底线的顶端也有一些惩罚。我不是。”
这 count_characters 和 calculator_multiply 应该使用工具,结果应该是 455 * 381 = 173,355.
启动Claude时出错
在通过安装服务器后启动Claude时,我收到了这些错误 uv run mcp install ./servers/mcp_fake_server.py。使用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命令执行此操作的方法。
