使用MCP工具绞合Olama试剂
一个本地AI代理 链剂 和Ollama,运行 qwen2.5:3b 为M2 MacBook优化的模型。代理连接到模型上下文协议(MCP)服务器,该服务器提供用于扩展功能的各种API工具。
特性
- 🤖 本地法学硕士:跑步
qwen2.5:3bOllama型号(快速、轻便,非常适合M2 Mac) - 🔧 MCP工具:通过FastMCP服务器可扩展的工具系统
- 💬 交互式CLI:用于与代理交互的简单聊天界面
- 🐳 Docker化:所有内容都在Docker容器中运行,便于设置
- 📊 工具调用可见性:实时查看工具的使用情况
可用工具
MCP服务器提供以下工具:
- 计算器:基本添加(
add(x, y)) - 笑话:从icanhazdajoke.com获取随机爸爸笑话
- 猫的事实:从catfact.ninja中随机获取猫的事实
- IP查询:获取任何IP地址的地理位置和ISP信息
- 编程报价:从quotable.io获取鼓舞人心的科技名言
需求
- Docker和Docker Compose
- M2 MacBook(针对Apple Silicon进行了优化)
- ~3GB可用磁盘空间(适用于qwen2.5:3b型号)
快速开始
- 克隆存储库:
git clone
cd play_with_strands- 启动所有服务:
docker-compose up -d这将:
- 启动MCP服务器(端口8000) - 启动Ollama服务(端口11434) - 下载 qwen2.5:3b 自动建模(仅限首次) - 启动代理客户端
- 以交互方式运行代理:
docker-compose run --rm mcp_agent- 开始聊天:
You: hi
Agent: Hello! How can I assist you today?
You: add 4 and 5
🔧 Tool #1: add
Agent: The sum of 4 and 5 is 9.
You: tell me a joke
🔧 Tool #1: get_joke
Agent: Why don't scientists trust atoms? Because they make up everything!项目结构
play_with_strands/
├── docker-compose.yml # Service orchestration
├── mcp_server/
│ ├── Dockerfile # MCP server container
│ └── server.py # FastMCP server with tools
├── mcp_agent/
│ ├── Dockerfile # Agent client container
│ └── client.py # Agent logic with Ollama integration
└── README.md # This file建筑
┌─────────────────┐
│ Ollama │ ← Runs qwen2.5:3b model
│ (port 11434) │
└────────┬────────┘
│
│ HTTP API
│
┌────────▼────────┐
│ mcp_agent │ ← Agent client (strands-agents)
│ │ - Connects to MCP server
│ │ - Uses Ollama for LLM
│ │ - CLI chat interface
└────────┬────────┘
│
│ Streamable HTTP
│
┌────────▼────────┐
│ mcp_server │ ← FastMCP server
│ (port 8000) │ - Provides tools
│ │ - API integrations
└─────────────────┘配置
更改模型
要使用其他Ollama模型,请编辑 docker-compose.yml:
environment:
- OLLAMA_MODEL=your-model-name并更新 ollama-init 服务下载您的模型:
curl -X POST http://ollama:11434/api/pull -d '{"name":"your-model-name"}'流行的替代方案:
qwen3:8b-更大,更强大(M2速度较慢)mistral-速度和质量的良好平衡llama3.2-Meta的最新型号
添加新工具
编辑 mcp_server/server.py 添加新工具:
@mcp.tool(description="Your tool description")
def your_tool(param: str) -> str:
"""Your tool implementation."""
# Your code here
return "result"添加工具后,重新生成:
docker-compose build mcp_server
docker-compose up -d发展
仅重建代理
docker-compose build mcp_agent查看日志
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f mcp_agent停止一切
docker-compose down清理(包括体积)
docker-compose down -v运作原理
- 工具调用检测:代理使用stdout捕获和正则表达式解析来检测何时调用工具,显示
🔧 Tool #X: name通知。
- 响应处理:捕获响应以防止重复,然后使用
Agent:前缀。
- 模型选择:
qwen2.5:3b选择M2 MacBook的速度——它足够快,可以进行实时对话,同时仍然有能力。
- MCP协议:代理使用流式HTTP与MCP服务器通信,允许异步调用工具。
故障排除
型号未下载
如果模型没有自动下载:
docker-compose exec ollama ollama pull qwen2.5:3b代理无法连接到服务器
确保 mcp_server 正在运行:
docker-compose ps检查服务器是否可访问:
curl http://localhost:8000/mcp/反应缓慢
- 这
qwen2.5:3b模型针对速度进行了优化。如果您需要更好的质量,请切换到qwen3:8b(速度会变慢)。 - 确保Docker分配了足够的资源(设置→ 资源)。
许可证
MIT许可证-随意使用和修改!
致谢
贡献
欢迎投稿!请随意:
- 向MCP服务器添加更多工具
- 改进代理的系统提示
- 针对不同硬件进行优化
- 添加测试或文档
