使用说明
具有模型上下文协议(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(推荐)
-
克隆仓库:
git clone <repository-url> cd ollama_mcp -
启动服务: 这将启动Ollama容器、天气工具服务器、搜索工具服务器和代理。
docker-compose -f dockers/docker-compose.yml up -d -
拉取所需模型:
docker exec -it ollama_mcp-ollama-1 ollama pull qwen3(注意:容器名称可能会有所不同,请与
docker ps) -
运行代理: 由于代理以交互方式运行,您可能希望直接运行它:
# 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:地方发展
-
安装依赖项:
pip install -r requirements.txt -
启动工具服务器: 打开两个终端窗口/选项卡。
1号航站楼(气象工具):
python weather_tools/main.py(从端口8000开始)
终端2(搜索工具):
python search_tools/main.py(从端口8001开始)
-
配置代理: 编辑
mcp_server_config.json指向您的本地服务器:{ "mcpServers": { "weather_tools": { "url": "http://localhost:8000/sse" }, "search_tools": { "url": "http://localhost:8001/sse" } } } -
启动代理: 在单独的终端中:
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获取内容并返回纯文本内容(删除脚本/样式)。
🔧 定制
添加新工具
- 在中定义函数
search_tools/tools.py或weather_tools/tools.py(或创建新服务器)。 - 在相应的
main.py. - 重新启动工具服务器。代理将在下次启动时自动发现新工具。
📦 依赖项
mcp:模型上下文协议SDK。ollama:Ollama的Python客户端。pandas,openmeteo-requests:用于天气工具。
