多客户端MCP协议工具

一个基于Python的多客户端MCP协议工具,允许同时连接到多个MCP服务器,自动绑定工具到LLM模型,并通过CLI或Streamlit聊天界面进行操作。

  • by bhavuk1409
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bhavuk1409/mcp-client

使用说明

MCP多客户端

A. 用于与多个MCP(模型上下文协议)通信的Python客户端 服务器一次,建立在 langchain-mcp-adapters 和一个 Groq-托管 LLM连接到 stdio 和 streamable HTTP MCP服务器并排, 将他们的工具绑定到模型,并让它自动调用它们。船舶 有两个入口点:可脚本化的CLI演示和Streamlit聊天UI。


它的作用

  • 多服务器MCP客户端 --连接到多个MCP服务器 同时通过 MultiServerMCPClient,混合 stdio (本地流程) 和 streamable_http (远程)传输在一个配置中。
  • 自动工具绑定 --发现所有连接的工具 服务器并将其绑定到LLM,因此模型决定何时调用 什么工具。
  • 有两种方法可以运行它:
    • client1.py --一个最小的CLI脚本:发送一个提示符,让LLM调用 如果需要,打印最终答案。
    • client2.py --具有完整对话历史记录的Streamlit聊天应用程序, 正确的工具消息顺序,没有叙述的“状态更新”填充。
  • Groq主持法学硕士 --用途 ChatGroq (llama-3.1-8b-instant 默认情况下) 用于快速推理。

存储库布局

├── client1.py            # Minimal CLI: single prompt -> tool calls -> answer
├── client2.py             # Streamlit chat app (multi-turn, full tool loop)
├── main.py                # Default project entrypoint (scaffold placeholder)
├── pyproject.toml         # Project configuration
├── uv.lock                # Dependency lock file
└── README.md              # This file

快速入门

1.安装

git clone https://github.com/bhavuk1409/mcp-client.git
cd mcp-client

uv sync

2.配置

创造一个 .env 使用Groq API密钥提交:

GROQ_API_KEY=your_groq_api_key

编辑 SERVERS 顶部的字典 client1.py / client2.py 指向 在您自己的MCP服务器上——此仓库中的路径是 原作者的机器和 不会按原样工作:

SERVERS = {
    "math": {
        "transport": "stdio",
        "command": "/path/to/uv",
        "args": ["run", "fastmcp", "run", "/path/to/your/mcp_server/main.py"],
    },
    "expense": {
        "transport": "streamable_http",
        "url": "https://your-remote-mcp-server.example.com/mcp",
    },
}

3.跑步

CLI演示 --发送一个硬编码的提示并打印结果:

uv run python client1.py

简化聊天应用程序:

uv run streamlit run client2.py

运作原理

  1. MultiServerMCPClient 连接到中的每台服务器 SERVERS 和电话 get_tools() 将他们的工具收集到一个列表中。
  2. 这些工具与Groq LLM绑定 llm.bind_tools(tools).
  3. 在用户提示下,LLM直接回答或返回一个或多个 tool_calls.
  4. 每次工具调用都是通过以下方式执行的 tool.ainvoke(args),结果如下 附加回对话中,如 ToolMessages
  5. LLM将再次调用,并显示完整的历史记录(提示+工具结果) 以产生最终答案。

配置参考

字段 描述
transport "stdio" 对于本地子进程服务器, "streamable_http" 用于远程HTTP MCP服务器
command / args For stdio 服务器——用于启动服务器进程的可执行文件和参数
url For streamable_http 服务器——服务器的MCP端点
env 传递给的可选环境变量 stdio 服务器进程

许可证

麻省理工学院