使用说明
Ollama MCP服务器
健壮的模型上下文协议(MCP)服务器暴露了Ollama支持的web工具。服务器是用TypeScript实现的,并为Node.js运行时打包。
特性
- 双重运输支持:
- 工作室 用于本地集成(Claude Desktop等)
- 可流式传输的HTTP 用于具有完整SSE支持的远程/web部署
- 会话管理 具有用于HTTP传输的有状态连接
- 承载令牌身份验证 用于HTTP传输(可配置)
- 经过验证的工具输入 使用
zod在联系Ollama之前保证合同 - 集中式HTTP客户端 Axios支持超时和一致的错误转换
- 检查员集成 通过
@modelcontextprotocol/inspector用于交互式调试
需求
- Node.js 20+
- npm 9+
- 有效的
OLLAMA_API_KEY
安装
npm install
配置
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
OLLAMA_API_KEY |
✅ | — | Ollama web API的承载令牌 |
PORT |
❌ | 3000 |
HTTP服务器端口(仅限HTTP模式) |
HOST |
❌ | 127.0.0.1 |
HTTP服务器绑定地址 |
MCP_AUTH_ENABLED |
❌ | true |
启用/禁用承载令牌身份验证 |
MCP_AUTH_TOKEN |
❌ | dev-token-change-me |
HTTP身份验证的秘密令牌 |
开始前导出变量:
export OLLAMA_API_KEY="your-ollama-token"
export MCP_AUTH_TOKEN="your-secret-token" # For HTTP mode
可用脚本
| 脚本 | 描述 |
|---|---|
npm run build |
将TypeScript源代码编译为 dist/ |
npm start |
启动STDIO服务器(别名 start:stdio) |
npm run start:stdio |
使用STDIO传输启动MCP服务器 |
npm run start:http |
使用流式HTTP传输启动MCP服务器 |
npm run inspector |
使用STDIO服务器启动MCP检查器 |
npm run inspector:http |
启动MCP检查器(手动连接到HTTP) |
npm run dev |
构建+运行检查器(STDIO) |
npm run dev:http |
构建+启动HTTP服务器 |
用法
STDIO模式(本地集成)
最适合Claude Desktop、本地CLI工具或衍生子流程。
npm run build
npm start
Claude桌面配置
添加到您的Claude桌面配置(claude_desktop_config.json):
{
"mcpServers": {
"ollama-web-tools": {
"command": "node",
"args": ["/path/to/ollama-mcp-server/dist/index.js"],
"env": {
"OLLAMA_API_KEY": "your-ollama-token"
}
}
}
}
HTTP模式(远程/web部署)
最适合远程服务器、web集成或多客户端场景。
npm run build
npm run start:http
服务器启动时间 http://127.0.0.1:3000/mcp 默认情况下。
HTTP端点
| 方法 | 端点 | 描述 |
|---|---|---|
POST |
/mcp |
JSON-RPC请求(初始化、工具调用等) |
GET |
/mcp |
服务器到客户端通知的SSE流 |
DELETE |
/mcp |
终止会话 |
认证
默认情况下,HTTP模式需要承载令牌身份验证:
# With auth (default)
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer your-secret-token" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0.0"},"capabilities":{}},"id":1}'
# Disable auth for development
MCP_AUTH_ENABLED=false npm run start:http
会话流
-
初始化 (POST无
mcp-session-id):curl -X POST http://localhost:3000/mcp \ -H "Authorization: Bearer $MCP_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0.0"},"capabilities":{}},"id":1}'响应包括
mcp-session-id头球 -
后续请求 (POST与
mcp-session-id):curl -X POST http://localhost:3000/mcp \ -H "Authorization: Bearer $MCP_AUTH_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "mcp-session-id: YOUR_SESSION_ID" \ -d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}' -
SSE流 (使用
mcp-session-id):curl -N http://localhost:3000/mcp \ -H "Authorization: Bearer $MCP_AUTH_TOKEN" \ -H "Accept: text/event-stream" \ -H "mcp-session-id: YOUR_SESSION_ID" -
终止会话 (删除):
curl -X DELETE http://localhost:3000/mcp \ -H "Authorization: Bearer $MCP_AUTH_TOKEN" \ -H "mcp-session-id: YOUR_SESSION_ID"
MCP检验员测试
STDIO模式
npm run build
npm run inspector
HTTP模式
# Terminal 1: Start server (disable auth for easier testing)
MCP_AUTH_ENABLED=false npm run start:http
# Terminal 2: Open inspector
npm run inspector:http
在检查器UI中:
- 选择 “流式HTTP” 作为运输类型
- 输入URL:
http://localhost:3000/mcp - 点击 连接
工具参考
web_search
通过Ollama API进行网络搜索。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | ✅ | 搜索查询 |
max_results |
整数 | ❌ | 结果限制(1-20) |
输出:Ollama的JSON字符串化搜索结果。
web_fetch
通过Ollama API获取URL的内容。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url |
字符串(URL) | ✅ | 要获取的URL |
输出:Ollama的JSON字符串化响应体。
体系结构概述
src/
├── index.ts # STDIO entrypoint
├── http-server.ts # HTTP/SSE entrypoint (Fastify)
├── mcp-server.ts # MCP server definition & tool registration
└── tools.ts # Ollama API client & implementations
| 文件 | 描述 |
|---|---|
index.ts |
STDIO传输,将MCP服务器连接到stdin/stdout |
http-server.ts |
使用流式HTTP传输、会话、SSE和身份验证来加速服务器 |
mcp-server.ts |
MCP服务器工厂、工具定义、错误规范化 |
tools.ts |
Axios客户端、Ollama API调用、Zod架构验证 |
错误处理和日志记录
- HTTP失败被包裹在
OllamaApiError并翻译成McpError实例 - STDIO模式记录到stderr
- HTTP模式使用Fastify的内置记录器
故障排除
| 问题 | 解决方案 |
|---|---|
OLLAMA_API_KEY is required |
启动前设置环境变量 |
Unauthorized: Missing Bearer token |
添加 Authorization: Bearer <token> 头球 |
Forbidden: Invalid token |
检查 MCP_AUTH_TOKEN 匹配您的标题 |
Invalid or missing session ID |
先初始化,然后使用返回的会话ID |
| 呼叫Ollama超时 | 检查网络连接或增加Axios超时 |
| 检查器连接问题 | 确保端口 6274/6277 是免费的 |
安全注意事项
- HTTP模式绑定到
127.0.0.1默认情况下 --改变HOST到0.0.0.0仅在必要时 - 始终设定一个强大的
MCP_AUTH_TOKEN生产中 - 从不提交代币 到版本控制
贡献
- 叉子或树枝
- 安装依赖项:
npm install - 在适用的情况下,通过测试进行更改
- 验证构建:
npm run build - 提交PR
许可证
在此处指定您选择的许可证(例如,MIT、Apache-2.0)。更新 package.json 因此。
