Ollama Integration
STDIOMCP server enabling seamless integration between local Ollama LLM instances and MCP applications.
MCP server enabling seamless integration between local Ollama LLM instances and MCP applications.
Ollamaと通信するModel Context Protocol (MCP) サーバー
このMCPサーバーは、ローカルのOllama LLMインスタンスとMCP互換アプリケーションの間でシームレスな統合を可能にし、高度なタスク分解、評価、ワークフロー管理を提供します。
主な機能:
サーバーは以下のリソースを実装しています:
各リソースには、最適なLLMとの対話のための適切なメタデータとMIMEタイプが設定されています。
MCPサーバーでは、プロンプトとツールは密接に関連していますが、異なる役割を持っています。
各ツールには対応するスキーマ(プロンプト)が必要であり、これによりLLMの思考能力と実際のシステム機能を効果的に連携させることができます。
サーバーはいくつかの特殊なプロンプトを提供します:
decompose-task - 複雑なタスクを管理しやすいサブタスクに分解
evaluate-result - 指定された基準に対してタスク結果を分析
サーバーはいくつかの強力なツールを実装しています:
add-task
name
(文字列), description
(文字列)priority
(数値), deadline
(文字列), tags
(配列)decompose-task
task_id
(文字列), granularity
(文字列: "high"|"medium"|"low")max_subtasks
(数値)decompose-task
プロンプトevaluate-result
result_id
(文字列), criteria
(オブジェクト)detailed
(ブール値)evaluate-result
プロンプトrun-model
model
(文字列), prompt
(文字列)temperature
(数値), max_tokens
(数値)サーバーは、より詳細で構造化されたエラーメッセージを提供します。これにより、クライアントアプリケーションはエラーをより効果的に処理できます。エラーレスポンスの例:
{ "error": { "message": "Task not found: task-123", "status_code": 404, "details": { "provided_id": "task-123" } } }
これらの設定は 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
パラメータ)env
セクションOLLAMA_DEFAULT_MODEL
)llama3
)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をインストール(まだインストールされていない場合) curl -fsSL https://ollama.com/install.sh | sh # 推奨モデルをダウンロード ollama pull llama3 ollama pull mistral ollama pull qwen2
pip install ollama-mcp-server
パス: ~/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モデルに対して直接クエリを実行するには:
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/
ディレクトリにソースとホイールの配布物が作成されます。
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を表示します。
貢献は歓迎します!お気軽にプルリクエストを提出してください。
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)このプロジェクトはMITライセンスの下でライセンスされています - 詳細はLICENSEファイルを参照してください。