本地LLM对话代理

基于Ollama和模型上下文协议(MCP)的Python对话AI代理,支持工具扩展和交互式聊天。

  • by sebrestin
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sebrestin/ollama_mcp

使用说明

具有模型上下文协议(MCP)的Ollama AI代理

基于Python的会话式AI代理,利用 奥拉玛 用于本地LLM推理和 模型上下文协议(MCP) 用于可扩展的工具使用。该代理充当MCP客户端,连接到MCP服务器以执行天气获取和日期检索等工具。

🌟 特性

  • 模型上下文协议(MCP):使用标准化协议将代理(客户端)与工具(服务器)连接起来。
  • 交互式聊天界面:具有流式响应的会话代理。
  • 思维方式:显示模型思维过程的可选推理显示。
  • 天气数据:使用Open-Meteo API获取历史天气数据。
  • Docker支持:完全容器化设置编排代理、工具服务器和Ollama。
  • Dev容器:VS Code dev容器配置,便于开发。

🏗️ 项目结构

该项目分为代理客户端和工具服务器:

ollama_mcp/
├── agent/                  # MCP Client ( The AI Agent )
│   ├── agent.py            # Core Agent class
│   ├── main.py             # Entry point for the Agent
│   └── toolbox.py          # MCP Tool handling
├── tools/                  # DEPRECATED (Split into search_tools/ and weather_tools/)
├── search_tools/           # MCP Server for Search Tools
│   ├── main.py             # Entry point
│   └── tools.py            # Search tool definitions
├── weather_tools/          # MCP Server for Weather Tools
│   ├── main.py             # Entry point
│   └── tools.py            # Weather tool definitions
├── mcp_server_config.json  # Configuration for connecting Agent to Tools
├── dockers/
│   ├── Dockerfile          # Shared container image
│   └── docker-compose.yml  # Orchestration
└── requirements.txt        # Dependencies

🚀 入门指南

先决条件

  • Docker和Docker Compose
  • 支持Docker GPU的NVIDIA GPU(推荐)
  • Python 3.12+(如果在本地运行)

选项1:Docker(推荐)

  1. 克隆仓库:

    git clone <repository-url>
    cd ollama_mcp
    
  2. 启动服务: 这将启动Ollama容器、天气工具服务器、搜索工具服务器和代理。

    docker-compose -f dockers/docker-compose.yml up -d
    
  3. 拉取所需模型:

    docker exec -it ollama_mcp-ollama-1 ollama pull qwen3
    

    (注意:容器名称可能会有所不同,请与 docker ps)

  4. 运行代理: 由于代理以交互方式运行,您可能希望直接运行它:

    # If building a separate agent container, or running locally, see below.
    # The default compose setup runs services.
    

    修正:The docker-compose.yml 可能会建立环境。如果你想聊天,你通常会运行代理脚本。

    如果要在容器内以交互方式运行代理:

    docker-compose -f dockers/docker-compose.yml run --rm app python /workspaces/ollama_mcp/agent/main.py
    

    (假设环境允许连接到正在运行的工具服务)

方案2:地方发展

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 启动工具服务器: 打开两个终端窗口/选项卡。

    1号航站楼(气象工具):

    python weather_tools/main.py
    

    (从端口8000开始)

    终端2(搜索工具):

    python search_tools/main.py
    

    (从端口8001开始)

  3. 配置代理: 编辑 mcp_server_config.json 指向您的本地服务器:

    {
      "mcpServers": {
        "weather_tools": {
          "url": "http://localhost:8000/sse"
        },
        "search_tools": {
          "url": "http://localhost:8001/sse"
        }
      }
    }
    
  4. 启动代理: 在单独的终端中:

    python agent/main.py
    

🛠️ 可用工具

MCP服务器提供工具:

天气工具(weather_tools/)

  • get_weather(lat, lon, start_date, end_date):从Open-Meteo Archive API获取历史天气数据。
  • current_date():返回当前日期。

搜索工具(search_tools/)

  • web_search(query, num_results):使用DuckDuckGo HTML端点在网络上搜索查询(不需要JS)。
  • fetch_url(url, max_length):从URL获取内容并返回纯文本内容(删除脚本/样式)。

🔧 定制

添加新工具

  1. 在中定义函数 search_tools/tools.py 或 weather_tools/tools.py (或创建新服务器)。
  2. 在相应的 main.py.
  3. 重新启动工具服务器。代理将在下次启动时自动发现新工具。

📦 依赖项

  • mcp:模型上下文协议SDK。
  • ollama:Ollama的Python客户端。
  • pandas, openmeteo-requests:用于天气工具。