本地AI代理工具

一个基于strands-agents和Ollama构建的本地AI代理,运行qwen2.5:3b模型,通过MCP服务器提供多种API工具扩展功能。

  • by ArminRezz
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ArminRezz/local_strands_mcp_ollama_qwen2.5-3b

使用说明

使用MCP工具绞合Olama试剂

一个本地AI代理 链剂 和Ollama,运行 qwen2.5:3b 为M2 MacBook优化的模型。代理连接到模型上下文协议(MCP)服务器,该服务器提供用于扩展功能的各种API工具。

特性

  • 🤖 本地法学硕士:跑步 qwen2.5:3b Ollama型号(快速、轻便,非常适合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型号)

快速开始

  1. 克隆存储库:

    git clone <your-repo-url>
    cd play_with_strands
    
  2. 启动所有服务:

    docker-compose up -d
    

    这将:

    • 启动MCP服务器(端口8000)
    • 启动Ollama服务(端口11434)
    • 下载 qwen2.5:3b 自动建模(仅限首次)
    • 启动代理客户端
  3. 以交互方式运行代理:

    docker-compose run --rm mcp_agent
    
  4. 开始聊天:

    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

运作原理

  1. 工具调用检测:代理使用stdout捕获和正则表达式解析来检测何时调用工具,显示 🔧 Tool #X: name 通知。

  2. 响应处理:捕获响应以防止重复,然后使用 Agent: 前缀。

  3. 模型选择: qwen2.5:3b 选择M2 MacBook的速度——它足够快,可以进行实时对话,同时仍然有能力。

  4. 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服务器添加更多工具
  • 改进代理的系统提示
  • 针对不同硬件进行优化
  • 添加测试或文档