ollama MCP服务器
Ollama通信Model Context Protocol (MCP) 服务器
概要
这个MCP服务器在本地Ollama LLM实例和MCP在兼容应用程序之间无缝集成,提供高级任务分解、评估和工作流管理。
主要功能:
- 复杂问题的任务分解
- 评估和验证结果
- Ollama管理和运行模型
- MCP协议标准化通信
- 高级错误处理和详细错误消息
- 性能优化(连接池、LRU高速缓存
组件
资源
服务器实现以下资源:
- 任务:// -访问单个任务URI方案
- 结果:// -用于访问评估结果URI方案
- 型号:// -可用Ollama用于访问模型URI方案
对于每个资源LLM和适当的元数据进行交互MIME类型已设置。
提示和工具关系
MCP在服务器上,提示和工具密切相关,但具有不同的角色。
- 提示:LLM提供特定思考方法和构造的方案(Schema)之类的角色
- 工具:像实际执行动作的处理程序(Handler)一样的角色
每个工具都需要相应的模式(提示)LLM的思考能力和实际的系统功能有效地联合起来。
提示
服务器提供一些特殊提示:
- 分解任务 -将复杂任务分解为易于管理的子任务
- 获取任务说明和粒度级别选项参数 - 返回包含依赖关系和估计复杂性的结构化明细
- 评估结果 -分析指定标准的任务结果
- 获取结果内容和评估参数 - 返回包括分数和改进建议的详细评估
工具
服务器实现了一些强大的工具:
- 添加任务
- 所需参数: name (文字列), description (文字列) - 可选参数: priority (数値), deadline (文字列), tags (配列) - 在系统中创建新任务并返回其标识符 - 对应的架构:用于创建任务的数据验证架构
- 分解任务
- 所需参数: task_id (文字列), granularity (文字列: "high"|"medium"|"low") - 可选参数: max_subtasks (数値) - Ollama将复杂任务分解为可管理的子任务 - 对应的架构:上述decompose-task提示
- 评估结果
- 所需参数: result_id (文字列), criteria (对象) - 可选参数: detailed (布尔值) - 针对指定标准评估结果并提供反馈 - 对应的架构:上述evaluate-result提示
- 运行模型
- 所需参数: model (文字列), prompt (文字列) - 可选参数: temperature (数値), max_tokens (数値) - 使用指定的参数Ollama运行模型 - 对应的架构:Ollama模型执行参数验证方案
新功能和改进
扩展错误处理
服务器提供更详细、结构化的错误消息。这使客户端应用程序能够更有效地处理错误。错误响应示例:
{
"error": {
"message": "Task not found: task-123",
"status_code": 404,
"details": {
"provided_id": "task-123"
}
}
}性能优化
- 连接滑轮:共享HTTP使用连接池可以提高请求性能并降低资源利用率。
- LRU高速缓存:高速缓存对相同或类似请求的响应可缩短响应时间Ollama减少了服务器的负载。
这些设置 config.py 中所述修改相应参数的值
# パフォーマンス関連設定
cache_size: int = 100 # キャッシュに保存する最大エントリ数
max_connections: int = 10 # 同時接続の最大数
max_connections_per_host: int = 10 # ホストごとの最大接続数
request_timeout: int = 60 # リクエストタイムアウト(秒)模型指定功能
概要
Ollama-MCP-Server以多种方式Ollama提供可指定模型的灵活功能。
模型指定优先级
模型按以下优先级指定:
- 调用工具时的参数(
model参数) - MCP在动态输入提示中单击
env区域 - 环境变数(
OLLAMA_DEFAULT_MODEL) - 默认值(
llama3)
MCP使用配置文件指定模型
Claude Desktop中描述的相应参数的值MCP可以使用配置文件指定模型:
{
"mcpServers": {
"ollama-MCP-server": {
"command": "python",
"args": [
"-m",
"ollama_mcp_server"
],
"env": [
{"model": "llama3:latest"}
]
}
}
}确认可用模型
服务器启动时,将检查配置的模型是否存在。如果未找到模型,则输出警告日志。此外run-model工具返回可用的模型列表,用户可以选择有效的模型。
错误处理改进
如果指定的模型不存在或发生通信错误,将提供详细的错误消息。错误消息包含可用的模型列表,帮助用户快速解决问题。
测试
项目包括全面的测试套件:
- 单元测试:测试单个组件的功能
- 集成测试:测试端到端工作流
要运行测试:
# すべてのテストを実行
python -m unittest discover
# 特定のテストを実行
python -m unittest tests.test_integration设定
环境变数
OLLAMA_HOST=http://localhost:11434
DEFAULT_MODEL=llama3
LOG_LEVEL=infoOllama设置
Ollama请确保已安装并在正确的模型上运行:
# Ollamaをインストール(まだインストールされていない場合)
curl -fsSL https://ollama.com/install.sh | sh
# 推奨モデルをダウンロード
ollama pull llama3
ollama pull mistral
ollama pull qwen2快速启动
安装
pip install ollama-mcp-serverClaude Desktop设定
MacOS
路径: ~/Library/Application\ Support/Claude/claude_desktop_config.json
视窗
路径: %APPDATA%/Claude/claude_desktop_config.json
開発/未公開サーバーの設定
"mcpServers": {
"ollama-MCP-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/ollama-MCP-server",
"run",
"ollama-MCP-server"
],
"ENV":["model":"deepseek:r14B"]
}
}公開サーバーの設定
"mcpServers": {
"ollama-MCP-server": {
"command": "uvx",
"args": [
"ollama-MCP-server"
]
}
}使用例
任务分解
要将复杂任务分解为可管理的子任务,请执行以下操作:
result = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "decompose-task",
"arguments": {
"task_id": "task://123",
"granularity": "medium",
"max_subtasks": 5
}
})结果评似
要为特定标准评估结果:
evaluation = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "evaluate-result",
"arguments": {
"result_id": "result://456",
"criteria": {
"accuracy": 0.4,
"completeness": 0.3,
"clarity": 0.3
},
"detailed": true
}
})Ollama运行模型
Ollama要直接查询模型:
response = await mcp.use_mcp_tool({
"server_name": "ollama-MCP-server",
"tool_name": "run-model",
"arguments": {
"model": "llama3",
"prompt": "量子コンピューティングを簡単な言葉で説明してください",
"temperature": 0.7
}
})开発
项目设置
- 克隆存储库:
git clone https://github.com/yourusername/ollama-MCP-server.git
cd ollama-MCP-server- 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate # Windowsの場合: venv\Scripts\activate- 安装开发依赖关系:
uv sync --dev --all-extras本地开发
项目包含一个方便的开发脚本:
运行服务器
./run_server.sh可选:
--debug:在调试模式下运行(日志级别:DEBUG)--log=LEVEL:指定日志级别(DEBUG,INFO,WARNING,ERROR,CRITICAL)
运行测试
./run_tests.sh可选:
--unit:仅运行设备测试--integration:仅运行集成测试--all:运行所有测试(默认值)--verbose:详细测试输出
构建和发布
要准备分发包,请执行以下操作:
- 同步从属关系并更新锁定文件:
uv sync- 构建包分发:
uv build因此dist/将在目录中创建源和控制盘分发。
- PyPI发布:
uv publish注意:PyPI必须使用环境变量或命令标志设置凭据:
- 标记:
--token在工作空间的边缘UV_PUBLISH_TOKEN - 或用户名/密码:
--username/UV_PUBLISH_USERNAME打开--password/UV_PUBLISH_PASSWORD
调试
MCP服务器是stdio中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。最佳调试 为了体验MCP检查员对较大场景进行渲染期间已观察到该故障。
来修改标记元素的显示属性MCP Inspector要启动,请执行以下命令:
npx @modelcontextprotocol/inspector uv --directory /path/to/ollama-MCP-server run ollama-mcp-server启动时Inspector可以在浏览器中访问并开始调试URL列表框中,此格式对应于条目“无”。
阿基特
貢献
贡献欢迎!请随意提交拉式请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉式请求
许可证
这个项目MIT许可证下的许可证-详细信息LICENSE请参见文件。
