/api/chat端点添加工具,而其他所有Ollama API端点透明代理你可以根据偏好以多种方式安装ollama-mcp-bridge:
使用uvx即时安装:
uvx ollama-mcp-bridge
pip install --upgrade ollama-mcp-bridge
docker-compose up
这会使用包含的docker-compose.yml文件:
host.docker.internal:11434)CORS_ORIGINS环境变量配置)# 克隆仓库
git clone https://github.com/jonigl/ollama-mcp-bridge.git
cd ollama-mcp-bridge
# 使用uv安装依赖
uv sync
# 启动Ollama(如果尚未运行)
ollama serve
# 运行桥接(推荐)
ollama-mcp-bridge
如果你想以可编辑模式安装项目(用于开发):
# 以可编辑模式安装项目
uv tool install --editable .
# 如下运行:
ollama-mcp-bridge
/api/chat端点):当收到/api/chat端点上的聊天完成请求时:
/api/chat、/health和/version之外的所有端点都完全代理到底层Ollama服务器,不做修改。在mcp-config.json创建你的服务器配置文件:
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"./mock-weather-mcp-server",
"run",
"main.py"
],
"env": {
"MCP_LOG_LEVEL": "ERROR"
}
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/tmp"
]
}
}
}
[!警告] Docker命令限制:在Docker中运行时,MCP服务器应使用容器内可用的命令:
- ✅
npx用于基于Node.js的MCP服务器- ✅
uvx用于基于Python的MCP服务器- ✅ 容器内的直接可执行文件
- ❌
docker命令(除非配置了Docker-in-Docker)- ❌ 主机机器上的本地文件路径
配置跨源资源共享(CORS),允许前端应用程序的请求:
# 允许所有来源(默认,不建议用于生产)
ollama-mcp-bridge
# 允许特定来源
CORS_ORIGINS="http://localhost:3000,https://myapp.com" ollama-mcp-bridge
# 允许多个来源及不同端口
CORS_ORIGINS="http://localhost:3000,http://localhost:8080,https://app.example.com" ollama-mcp-bridge
环境变量:
CORS_ORIGINS:允许的来源的逗号分隔列表(默认:*)
*允许所有来源(日志中显示警告)CORS_ORIGINS="http://localhost:3000,https://myapp.com" ollama-mcp-bridgeMAX_TOOL_ROUNDS:最大工具执行轮次数(默认:不限)
--max-tool-roundsCLI参数覆盖(CLI优先)MAX_TOOL_ROUNDS=5 ollama-mcp-bridgeOLLAMA_URL:Ollama服务器的URL(默认:http://localhost:11434)
--ollama-urlCLI参数覆盖OLLAMA_URL=http://192.168.1.100:11434 ollama-mcp- bridgeSYSTEM_PROMPT:可选系统提示,附加到所有转发的/api/chat请求
SYSTEM_PROMPT环境变量或--system-promptCLI标志设置/api/chat请求的messages数组开头添加一条系统消息(角色:system),除非请求已经以系统消息开头。SYSTEM_PROMPT="您是一个简洁的助手。" ollama-mcp-bridgeCORS日志:
*(所有来源)时显示警告[!警告] 使用
CORS_ORIGINS="*"允许所有来源,不建议用于生产。始终指定确切的来源以确保安全。
[!注意] 提供了一个示例MCP服务器脚本在mock-weather-mcp-server/main.py。
# 使用默认设置启动(配置:./mcp-config.json,主机:0.0.0.0,端口:8000)
ollama-mcp-bridge
# 使用自定义配置文件启动
ollama-mcp-bridge --config /path/to/custom-config.json
# 自定义主机和端口
ollama-mcp-bridge --host 0.0.0.0 --port 8080
# 自定义Ollama服务器URL(本地或云端)
ollama-mcp-bridge --ollama-url http://192.168.1.100:11434
# 限制工具执行轮次(防止过多调用)
ollama-mcp-bridge --max-tool-rounds 5
# 设置一个系统提示,附加到所有/api/chat请求
ollama-mcp-bridge --system-prompt "您是一个简洁的助手。"
# 组合选项
ollama-mcp-bridge --config custom.json --host 0.0.0.0 --port 8080 --ollama-url http://remote-ollama:11434 --max-tool-rounds 10
# 检查版本和可用更新
ollama-mcp-bridge --version
[!提示] 如果使用
uvx运行桥接,请将命令指定为uvx ollama-mcp-bridge而不是ollama-mcp-bridge。
[!注意] 该桥接支持流式响应和思考模式。你会收到生成时的增量响应,工具调用和中间思考消息会在Ollama和所有连接的MCP工具之间自动代理。
--config:MCP配置文件路径(默认:mcp-config.json)--host:绑定服务器的主机(默认:0.0.0.0)--port:绑定服务器的端口(默认:8000)--ollama-url:Ollama服务器URL(默认:http://localhost:11434)--max-tool-rounds:最大工具执行轮次(默认:不限)--reload:启用开发期间的自动重载--version:显示版本信息,检查更新并退出--system-prompt:可选系统提示,附加到/api/chat请求(默认:无)API可在http://localhost:8000访问。
POST /api/chat — 聊天端点(与Ollama API相同,但带有MCP工具支持)
/api/chat、/health和/version)都完全代理到底层Ollama服务器,不做修改。你可以像平常一样使用现有的Ollama客户端和库。GET /health — 健康检查端点(不代理)GET /version — 版本信息和更新检查[!重要]
/api/chat是唯一集成MCP工具的端点。所有其他端点都透明代理到Ollama。/health和/version是桥接特有的。
该桥接作为Ollama API的即插即用代理,但所有连接服务器中的所有MCP工具都可用于每个/api/chat请求。桥接自动处理多次工具执行直到完成,并实时流式传输响应。你可以使用现有的Ollama客户端和库,无论是本地还是云端Ollama模型,只需指向这个桥接而不是你的Ollama服务器。
curl -N -X POST http://localhost:8000/api/chat \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:0.6b",
"messages": [
{
"role": "system",
"content": "您是一个天气助手。"
},
{
"role": "user",
"content": "今天巴黎的天气如何?"
}
],
"think": true,
"stream": true,
"options": {
"temperature": 0.7,
"top_p": 0.9
}
}'
[!提示] 使用
/docs进行交互式API探索和测试。
该项目有两种类型的测试:
# 安装测试依赖
uv sync --extra test
# 运行单元测试(无需服务器)
uv run pytest tests/test_unit.py -v
这些测试检查:
# 首先,在一个终端中启动服务器
ollama-mcp-bridge
# 然后,在另一个终端中运行集成测试
uv run pytest tests/test_api.py -v
这些测试检查:
# 快速手动测试(服务器必须正在运行)
curl -X GET "http://localhost:8000/health"
# 检查版本信息和更新状态
curl -X GET "http://localhost:8000/version"
curl -X POST "http://localhost:8000/api/chat" \
-H "Content-Type: application/json" \
-d '{"model": "qwen3:0.6b", "messages": [{"role": "user", "content": "有哪些可用的工具?"}]}'
[!注意] 测试需要服务器在localhost:8000上运行。确保在运行pytest之前启动服务器。