使用说明
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
运作原理
MultiServerMCPClient连接到中的每台服务器SERVERS和电话get_tools()将他们的工具收集到一个列表中。- 这些工具与Groq LLM绑定
llm.bind_tools(tools). - 在用户提示下,LLM直接回答或返回一个或多个
tool_calls. - 每次工具调用都是通过以下方式执行的
tool.ainvoke(args),结果如下 附加回对话中,如ToolMessages - LLM将再次调用,并显示完整的历史记录(提示+工具结果) 以产生最终答案。
配置参考
| 字段 | 描述 |
|---|---|
transport |
"stdio" 对于本地子进程服务器, "streamable_http" 用于远程HTTP MCP服务器 |
command / args |
For stdio 服务器——用于启动服务器进程的可执行文件和参数 |
url |
For streamable_http 服务器——服务器的MCP端点 |
env |
传递给的可选环境变量 stdio 服务器进程 |
许可证
麻省理工学院
