Ollama MCP Server

Integrations

  • Enables seamless communication with local Ollama LLM instances, providing capabilities for task decomposition, result evaluation, and direct model execution with configurable parameters.

  • Provides a Python interface for utilizing the MCP server's tools programmatically, allowing developers to implement task decomposition, result evaluation, and model execution in Python applications.

ollama-MCP-服务器

与 Ollama 通信的模型上下文协议 (MCP) 服务器

概述

该 MCP 服务器实现了本地 Ollama LLM 实例和 MCP 兼容应用程序之间的无缝集成,提供了高级任务分解、评估和工作流管理。

主要特点:

  • 复杂问题的任务分解
  • 评估和验证结果
  • 管理和运行 Ollama 模型
  • 通过 MCP 协议实现标准化通信
  • 高级错误处理和详细的错误消息
  • 性能优化(连接池、LRU缓存)

成分

资源

服务器实现了以下资源:

  • task:// - 用于访问单个任务的 URI 方案
  • result:// - 访问评估结果的 URI 方案
  • model:// - 用于访问可用的 Ollama 模型的 URI 方案。

每个资源都配置了适当的元数据和 MIME 类型,以实现最佳的 LLM 交互。

提示和工具关系

在 MCP 服务器中,提示和工具紧密相关,但具有不同的作用。

  • 提示:类似模式的功能,为法学硕士提供特定的思维方式和结构
  • 工具:充当实际执行操作的处理程序

每个工具都需要一个相应的模式(提示),以便有效地将 LLM 的思维技能与实际的系统功能结合起来。

迅速的

服务器提供了一些特殊的提示:

  • 分解任务- 将复杂任务分解为可管理的子任务
    • 获取详细任务描述和可选参数
    • 返回依赖关系和估计复杂性的结构化细分
  • 评估结果- 根据指定标准分析任务结果
    • 获取结果和评估参数
    • 返回带有分数和改进建议的详细评估

工具

该服务器实现了几个强大的工具:

  • 添加任务
    • 必需参数: name (字符串)、 description (字符串)
    • 可选参数: priority (数字)、 deadline (字符串)、 tags (数组)
    • 在系统中创建一个新任务并返回其标识符。
    • 对应架构:任务创建的数据验证架构
  • 分解任务
    • 必需参数: task_id (字符串)、 granularity (字符串:“高”|“中”|“低”)
    • 可选参数: 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 模型的灵活性。

模型规范优先级

模型按以下优先顺序指定:

  1. 调用工具时的参数( model参数)
  2. MCP 配置文件env部分
  3. 环境变量( OLLAMA_DEFAULT_MODEL
  4. 默认值( 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=info

设置Ollama

确保 Ollama 已安装并运行在适当的型号上:

# Ollamaをインストール(まだインストールされていない場合) curl -fsSL https://ollama.com/install.sh | sh # 推奨モデルをダウンロード ollama pull llama3 ollama pull mistral ollama pull qwen2

快速入门

安装

pip install ollama-mcp-server

Claude桌面设置

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 } })

发展

项目设置

  1. 克隆存储库:
git clone https://github.com/yourusername/ollama-MCP-server.git cd ollama-MCP-server
  1. 创建并激活虚拟环境:
python -m venv venv source venv/bin/activate # Windowsの場合: venv\Scripts\activate
  1. 安装开发依赖项:
uv sync --dev --all-extras

本地开发

该项目包含一些有用的开发脚本:

运行服务器

./run_server.sh

选项:

  • --debug :以调试模式运行(日志级别:DEBUG)
  • --log=LEVEL :指定日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)

运行测试

./run_tests.sh

选项:

  • --unit :仅运行单元测试
  • --integration :仅运行集成测试
  • --all :运行所有测试(默认)
  • --verbose :详细测试输出

构建并发布

准备分发包:

  1. 同步依赖项并更新锁文件:
uv sync
  1. 构建软件包分发版:
uv build

这将在dist/目录中创建源和轮子分布。

  1. 发布到 PyPI:
uv publish

注意:您必须在环境变量或命令标志中配置您的 PyPI 凭据:

  • 令牌: --tokenUV_PUBLISH_TOKEN
  • 或用户名/密码: --username / UV_PUBLISH_USERNAME--password / UV_PUBLISH_PASSWORD

调试

MCP 服务器通过 stdio 运行,因此调试可能很困难。为了获得最佳调试体验,我们强烈建议使用MCP Inspector

要使用npm启动 MCP Inspector,请运行以下命令:

npx @modelcontextprotocol/inspector uv --directory /path/to/ollama-MCP-server run ollama-mcp-server

启动时,检查器将显示一个 URL,您可以在浏览器中访问该 URL 来开始调试。

建筑师

贡献

欢迎投稿!请随意提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支( git checkout -b feature/amazing-feature
  3. 提交更改( git commit -m 'Add some amazing feature'
  4. 推送到分支( git push origin feature/amazing-feature
  5. 打开拉取请求

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

ID: wqucds7u9n