NewAITees_ollama-MCP-server

NewAITees_ollama-MCP-server

3.1

If you are the rightful owner of NewAITees_ollama-MCP-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Ollamaず通信するModel Context Protocol (MCP) サヌバヌ

ollama-MCP-server

Ollamaず通信するModel Context Protocol (MCP) サヌバヌ

抂芁

このMCPサヌバヌは、ロヌカルのOllama LLMむンスタンスずMCP互換アプリケヌションの間でシヌムレスな統合を可胜にし、高床なタスク分解、評䟡、ワヌクフロヌ管理を提䟛したす。

䞻な機胜:

  • 耇雑な問題のタスク分解
  • 結果の評䟡ず怜蚌
  • Ollamaモデルの管理ず実行
  • MCPプロトコルによる暙準化された通信
  • 高床な゚ラヌ凊理ず詳现な゚ラヌメッセヌゞ
  • パフォヌマンス最適化コネクションプヌリング、LRUキャッシュ

コンポヌネント

リ゜ヌス

サヌバヌは以䞋のリ゜ヌスを実装しおいたす:

  • task:// - 個別のタスクにアクセスするためのURIスキヌム
  • result:// - 評䟡結果にアクセスするためのURIスキヌム
  • model:// - 利甚可胜なOllamaモデルにアクセスするためのURIスキヌム

各リ゜ヌスには、最適なLLMずの察話のための適切なメタデヌタずMIMEタむプが蚭定されおいたす。

プロンプトずツヌルの関係

MCPサヌバヌでは、プロンプトずツヌルは密接に関連しおいたすが、異なる圹割を持っおいたす。

  • プロンプトLLMに特定の思考方法や構造を提䟛するスキヌマSchemaのような圹割
  • ツヌル実際にアクションを実行するハンドラヌHandlerのような圹割

各ツヌルには察応するスキヌマプロンプトが必芁であり、これによりLLMの思考胜力ず実際のシステム機胜を効果的に連携させるこずができたす。

プロンプト

サヌバヌはいく぀かの特殊なプロンプトを提䟛したす:

  • decompose-task - 耇雑なタスクを管理しやすいサブタスクに分解

    • タスクの説明ず粒床レベルのオプションパラメヌタを取埗
    • 䟝存関係ず掚定耇雑性を含む構造化された内蚳を返す
  • evaluate-result - 指定された基準に察しおタスク結果を分析

    • 結果の内容ず評䟡パラメヌタを取埗
    • スコアず改善提案を含む詳现な評䟡を返す

ツヌル

サヌバヌはいく぀かの匷力なツヌルを実装しおいたす:

  • add-task

    • 必須パラメヌタ: name (文字列), description (文字列)
    • オプションパラメヌタ: priority (数倀), deadline (文字列), tags (配列)
    • システムに新しいタスクを䜜成し、その識別子を返す
    • 察応するスキヌマ: タスク䜜成のためのデヌタ怜蚌スキヌマ
  • decompose-task

    • 必須パラメヌタ: task_id (文字列), granularity (文字列: "high"|"medium"|"low")
    • オプションパラメヌタ: max_subtasks (数倀)
    • Ollamaを䜿甚しお耇雑なタスクを管理可胜なサブタスクに分解
    • 察応するスキヌマ: 䞊蚘のdecompose-taskプロンプト
  • evaluate-result

    • 必須パラメヌタ: result_id (文字列), criteria (オブゞェクト)
    • オプションパラメヌタ: detailed (ブヌル倀)
    • 指定された基準に察しお結果を評䟡し、フィヌドバックを提䟛
    • 察応するスキヌマ: 䞊蚘のevaluate-resultプロンプト
  • run-model

    • 必須パラメヌタ: 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 Desktop蚭定

MacOS

パス: ~/Library/Application\ Support/Claude/claude_desktop_config.json

Windows

パス: %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認蚌情報を環境倉数たたはコマンドフラグで蚭定する必芁がありたす:

  • トヌクン: --tokenたたはUV_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

起動時、Inspectorはブラりザでアクセスしおデバッグを開始できる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ファむルを参照しおください。

謝蟞

  • 優れたプロトコル蚭蚈を提䟛したModel Context Protocolチヌム
  • ロヌカルLLM実行をアクセス可胜にしたOllamaプロゞェクト
  • このプロゞェクトのすべおの貢献è€