使用说明
Ollama MCP
暴露您的MCP服务器 当地API 作为工具,代理(Cursor、Claude Desktop等)可以使用本地模型进行聊天、完成和嵌入。
先决条件
- 奥拉玛 已安装并正在运行(默认值:
http://localhost:11434) - Python 3.10+
- 紫外线 (
curl -LsSf https://astral.sh/uv/install.sh | sh)
安装并运行
uv sync
uv run server.py
默认情况下,服务器使用 标准 传输(MCP客户端将其作为子进程启动)。还有两种基于HTTP的传输方式可供选择:
# SSE (Server-Sent Events) — legacy HTTP transport
uv run server.py --transport sse
# Streamable HTTP — MCP 2025-03-26 spec
uv run server.py --transport streamable-http
| 标志 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--transport |
OLLAMA_MCP_TRANSPORT |
stdio |
stdio, sse,或 streamable-http |
--host |
OLLAMA_MCP_HOST |
127.0.0.1 |
HTTP传输的绑定地址 |
--port |
OLLAMA_MCP_PORT |
8000 |
绑定HTTP传输端口 |
在SSE模式下运行时,端点为 http://<host>:<port>/sse;对于可流式传输的http,它是 http://<host>:<port>/mcp.
环境和自定义.env
服务器读取 OLLAMA_BASE_URL 从环境。您可以使用 .env 文件 在项目根目录中,这样您就不必在shell或MCP配置中设置它。
-
复制示例文件并根据需要进行编辑:
cp .env.example .env -
编辑
.env(这是理所当然的)。例子:OLLAMA_BASE_URL=http://localhost:11434如果Ollama在其他地方运行,请使用其他URL(例如。
http://192.168.1.10:11434或Docker主机)。可选:设置
OLLAMA_TIMEOUT=300(秒)用于长时间运行的几代或慢速机器。 -
当您运行服务器时(
uv run server.py或通过您的MCP客户端),它加载.env来自与相同的目录server.py在读取env变量之前。
| 变量 | 默认值 | 描述 |
|---|---|---|
OLLAMA_BASE_URL |
http://localhost:11434 |
Ollama API基本URL(无尾随斜杠)。 |
OLLAMA_TIMEOUT |
120 |
Ollama HTTP请求超时(分钟5),以秒为单位。大型型号增加。 |
OLLAMA_STREAM_READ_TIMEOUT |
3×超时 | 流请求的读取超时(聊天/生成) stream: true).如果世代久远,则设置。 |
OLLAMA_MCP_LOG_LEVEL |
INFO |
服务器日志级别: DEBUG, INFO, WARNING, ERROR. |
OLLAMA_MCP_TRANSPORT |
stdio |
运输: stdio, sse,或 streamable-http. |
OLLAMA_MCP_HOST |
127.0.0.1 |
HTTP/SSE传输的绑定地址。 |
OLLAMA_MCP_PORT |
8000 |
为HTTP/SSE传输绑定端口。 |
您仍然可以在MCP客户端配置中覆盖这些(例如Cursor的 env 块)或在你的壳;这些优先于 .env.
MCP配置
光标
在此仓库中,您可以复制示例并将其指向您的路径:
mkdir -p .cursor
cp .cursor/mcp.json.example .cursor/mcp.json
# Edit .cursor/mcp.json and set the path in "args" to your absolute path (e.g. pwd)
或手动添加到 ~/.cursor/mcp.json 或者你的项目 .cursor/mcp.json:
{
"mcpServers": {
"ollama": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/ollama-mcp",
"run",
"server.py"
]
}
}
}
替换 /ABSOLUTE/PATH/TO/ollama-mcp 与真实路径(例如输出 pwd 在回购中)。
使用自定义Ollama URL而不使用 .env 文件,添加 env 块:
"ollama": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/ollama-mcp", "run", "server.py"],
"env": {
"OLLAMA_BASE_URL": "http://192.168.1.10:11434",
"OLLAMA_TIMEOUT": "300"
}
}
HTTP/SSE客户端
对于通过HTTP连接而不是生成子进程的客户端,请先启动服务器:
# SSE
uv run server.py --transport sse --host 0.0.0.0 --port 8000
# Streamable HTTP
uv run server.py --transport streamable-http --host 0.0.0.0 --port 8000
然后将您的客户端指向相应的端点:
| 传输 | 端点 |
|---|---|
上海证券交易所 http://localhost:8000/sse |
|
| 流式HTTP | http://localhost:8000/mcp |
克劳德桌面
添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或操作系统上的等效配置路径:
{
"mcpServers": {
"ollama": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/ollama-mcp",
"run",
"server.py"
]
}
}
}
工具
| 工具 | 说明 |
|---|---|
ollama_version |
检查Ollama是否可用,并获取其版本(健康检查)。 |
list_models |
列出已安装的Olama型号 |
list_running_models |
列出当前加载到内存中的模型 |
show_model |
获取模型的详细信息(参数、尺寸等) |
chat |
多回合聊天(模型+消息数组)。支持可选 options, format,以及 keep_alive 控制加 stream: true Ollama流媒体(仍返回完整回复)。 |
generate |
单一提示完成。支持可选 options, format,以及 keep_alive 控制加 stream: true Ollama流媒体(仍返回完整回复)。 |
embed |
获取嵌入(模型+文本或字符串列表) |
copy_model |
将现有模型复制到新名称(例如备份或变体)。 |
pull_model |
从注册表中提取模型 |
delete_model |
删除已安装的模型 |
测试
单元测试 (嘲笑Ollama API;不需要服务器):
uv run pytest tests/ -v
集成测试 (将MCP服务器作为子进程运行,并发送JSON-RPC;可选Ollama以获得真实的工具结果):
uv run python scripts/run_integration_tests.py
- 检查:初始化握手,
tools/list(所有可用工具),tools/call list_models,tools/call generate. - 如果Ollama不跑步,
list_models和generate仍然返回(错误消息或超时);该脚本验证协议和工具接线。 - 可选环境:
OLLAMA_MCP_INTEGRATION_TIMEOUT(默认值15),OLLAMA_MCP_INTEGRATION_GENERATE_TIMEOUT(默认值60)以调整超时。
CI: .github/workflows/test.yml 在push/PR上运行单元测试和集成脚本。不需要Ollama服务(测试是模拟的;集成脚本验证协议和工具接线)。
许可证
麻省理工学院