本地MCP示例:LangGraph客户端+FastMCP服务器+Ollama
此存储库演示了一个最小的本地设置,其中Python客户端(LangChain/LangGraph)连接到本地模型上下文协议(MCP)服务器(使用 fastmcp)并使用Olama LLM(qwen3:30b).
- MCP服务器提供了一个示例工具:
add_numbers(num1, num2). - 客户端通过可流式传输的HTTP连接到MCP服务器,动态发现工具,并在以用户语言(默认为英语)响应的同时流式传输更新。
- 所有组件都通过Docker Compose运行。Ollama数据(模型、密钥、历史)保存在
./ollama_data.
先决条件
- Docker(最新)和Docker Compose(v2)
- 约20-30GB的可用磁盘空间可供下载和运行
qwen3:30b本地(如果需要,您可以更改模型)
快速开始
- 克隆存储库
git clone https://github.com/claudobahn/langgraph-mcp-ollama-example
cd langgraph-mcp-ollama-example- 启动服务(Ollama+MCP服务器)
docker compose up -d --build ollama mcp-server- 将模型拉入Ollama容器内(仅限首次)
docker exec -it ollama ollama pull qwen3:30b- 您可以从主机上检查Ollama是否健康:
curl http://localhost:11434/api/tags以交互方式运行客户端
选项A:交互式提示
docker compose run --rm client
# Then type your prompt at the terminal选项B:非交互式提示(管道输入)
echo "Montre un exemple d'utilisation d'outil." | docker compose run -T --rm client客户端连接到:
- MCP服务器位于
http://mcp-server:13744/mcp - 奥拉马
http://ollama:11434
默认情况下,客户端使用 qwen3:30b 启用推理模式,并以用户语言(默认为英语)进行响应。
什么在跑
- Ollama服务
- 图片: ollama/ollama - 端口: 127.0.0.1:11434 在主机上暴露 - 持久数据: ./ollama_data 安装到 /root/.ollama
- MCP服务器(FastMCP)
- 定义于 mcp-server/server.py - 跑 FastMCP("math") 并公开了一个工具: - add_numbers(num1: int, num2: int) -> int - 通过以下方式提供服务 transport="streamable-http" 在…上 0.0.0.0:13744
- 客户端(LangGraph+MCP工具)
- 定义于 client/client.py - 发现MCP工具 load_mcp_tools(session) - LLM ChatOllama (型号 qwen3:30b,温度0.8,推理模式) - 流更新使用 langgraph.prebuilt.create_react_agent
存储库结构
langgraph-mcp-ollama-example/
├─ client/
│ ├─ Dockerfile
│ ├─ client.py
│ └─ requirements.txt
├─ mcp-server/
│ ├─ Dockerfile
│ ├─ requirements.txt
│ └─ server.py
├─ docker-compose.yml
├─ README.md
└─ ollama_data/
├─ models/ ... (persisted by Ollama)
└─ ...常见任务
- 重建并重新启动所有内容:
docker compose down
docker compose up -d --build- 更新/拉取其他模型(示例:
llama3.1):
docker exec -it ollama ollama pull llama3.1然后更新 model= 在……里面 client/client.py 如果你想把它设为默认值。
故障排除
- 客户端无法连接到Ollama
- 确保 ollama 容器健康: docker ps 和 curl http://localhost:11434/api/tags - 拉动所需的模型: docker exec -it ollama ollama pull qwen3:30b
- 客户端无法连接到MCP服务器
- 确保 mcp-server 正在运行: docker compose ps - 日志: docker compose logs -f mcp-server
- 启动订购
- 如果过早运行客户端时出现连接错误,请启动 ollama 和 mcp-server 首先,等待健康/准备就绪,然后运行客户端。
许可证
本项目按照“MIT无署名”许可证按原样提供,不作任何保证。
备注
- 您可以在中自定义提示、系统消息语言和模型参数
client/client.py.
