Ollama MCP服务器
Ollama的完整模型上下文协议(MCP)服务器 28工具,允许通过MCP协议使用Ollama模型。
特性
- ✅ 28套完整工具 适用于Ollama的所有功能
- ✅ 流媒体支持 用于聊天和文本生成
- ✅ 模型管理 (拉取、删除、复制、创建、更新)
- ✅ 嵌入生成 (单次和批量)
- ✅ 上下文管理 用于多回合对话
- ✅ 批量操作 为了高效处理
- ✅ 系统监控 以及健康检查
- ✅ 远程访问 通过0.0.0.0:4838
安装
先决条件
- Python 3.10或更高版本
- Ollama已安装并正在运行
- 至少一个Ollama模型(例如。,
ollama pull llama2)
安装
- 克隆存储库或提取文件
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 调整配置 (可选):
cp env.example .env
# Edit .env if needed用法
启动服务器
# Direct
python -m mcp_server.server
# Or with start script
./start.sh
# Or with uvicorn
uvicorn mcp_server.server:app --host 0.0.0.0 --port 4838服务器默认运行在 0.0.0.0:4838.
API终点
健康检查
curl http://localhost:4838/health列出工具
curl -X POST http://localhost:4838/mcp/tools/list呼叫工具
curl -X POST http://localhost:4838/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"name": "ollama_list_models",
"arguments": {}
}'JSON-RPC 2.0
curl -X POST http://localhost:4838/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'可用工具
模型管理
ollama_list_models-列出所有型号ollama_show_model-显示模型详细信息ollama_pull_model-下载模型ollama_delete_model-删除模型ollama_copy_model-复制模型ollama_create_model-从模型文件创建模型
文本生成
ollama_generate-生成文本ollama_generate_stream-流媒体生成
聊天功能
ollama_chat-聊天完成ollama_chat_stream-流媒体聊天
嵌入
ollama_embeddings-生成嵌入ollama_create_embeddings-批量嵌入
系统与监控
ollama_check_health-健康检查ollama_get_version-Ollama版本ollama_list_processes-正在运行的进程ollama_get_models_info-所有型号信息
其他工具
ollama_update_model-更新模型ollama_get_modelfile-获取模型文件ollama_validate_model-验证模型ollama_get_model_size-型号尺寸ollama_search_models-搜索型号ollama_check_blobs-Blob状态ollama_save_context-保存上下文ollama_load_context-加载上下文ollama_clear_context-清晰的上下文ollama_batch_generate-批量生成ollama_compare_models-比较模型
配置
环境变量
创建一个 .env 文件:
# MCP Server Configuration
MCP_HOST=0.0.0.0
MCP_PORT=4838
# Ollama API Configuration
OLLAMA_HOST=localhost
OLLAMA_PORT=11434
OLLAMA_TIMEOUT=60
# Logging
LOG_LEVEL=INFO
LOG_FORMAT=json防火墙配置
对于远程访问,必须打开端口4838:
# UFW (Ubuntu/Debian)
sudo ufw allow 4838/tcp
# firewalld (RHEL/CentOS)
sudo firewall-cmd --add-port=4838/tcp --permanent
sudo firewall-cmd --reload示例用法
Python客户端
import httpx
# Call tool
async with httpx.AsyncClient() as client:
response = await client.post(
"http://localhost:4838/mcp/tools/call",
json={
"name": "ollama_generate",
"arguments": {
"model": "llama2",
"prompt": "Explain Python in one sentence.",
}
}
)
print(response.json())cURL示例
生成文本
curl -X POST http://localhost:4838/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"name": "ollama_generate",
"arguments": {
"model": "llama2",
"prompt": "What is Machine Learning?"
}
}'聊天
curl -X POST http://localhost:4838/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"name": "ollama_chat",
"arguments": {
"model": "llama2",
"messages": [
{"role": "user", "content": "Hello!"}
]
}
}'项目结构
RL-MCP Server/
├── src/
│ └── mcp_server/
│ ├── __init__.py
│ ├── server.py # Main server
│ ├── client.py # Ollama API client
│ ├── config.py # Configuration
│ ├── handlers.py # Tool handlers
│ ├── exceptions.py # Exceptions
│ └── utils/ # Utilities
├── tests/ # Tests
├── examples/ # Examples
├── requirements.txt # Dependencies
├── pyproject.toml # Project configuration
├── README_DE.md # German version
├── README_EN.md # This file
└── LICENSE # License发展
运行测试
pytest代码格式化
black src/
ruff check src/许可证
看 许可证 文件。
作者
罗宾·奥利弗·卢卡斯
- 网站:https://rl-dev.de
- 电子邮件:robin@rl-dev.de
支持
如有疑问或问题,请创建问题或联系作者。
