Skip to main content
Glama
ANINDASAU

Multi-Agent Research Assistant MCP Server

by ANINDASAU

マルチエージェントリサーチアシスタント & MCPサーバー

このプロジェクトは、この課題を2つの小さな部分に分けて実装しています。

  1. 1つのスーパーバイザーと2つの専門ワーカーを持つLangGraphマルチエージェントワークフロー。

  2. 2つのツールと、それらのツールを呼び出すクライアントを持つFastMCPサーバー。

言語モデルはOllamaを使用するため、OpenAI APIキーは不要です。

1. このプロジェクトが示すもの

スーパーバイザーは質問を受け取り、適切なワーカーを選択します。

User question
		 |
		 v
Supervisor Agent
		 |------------------------------|
		 v                              v
Research Agent                 Analysis Agent
		 |                              |
		 v                              v
Knowledge-base tool             Comparison tool

両方のワーカーが必要な質問の場合、スーパーバイザーはまずリサーチエージェントに証拠を要求し、その証書をアナリシスエージェントに渡します。

MCP部分はLangGraph部分から独立しています。

MCP Client ---> FastMCP Server
										|------ get_weather(city)
										|------ get_news(topic)

Related MCP server: AIE8-MCP Server

2. 前提条件

  • Windows PowerShell

  • Python 3.10以降

  • Ollama

  • llama3.2などのOllamaモデル

リポジトリには、要求された仮想環境がすでにmultivenvに含まれています。

3. インストール

プロジェクトディレクトリでPowerShellを開きます。

cd D:\LLMEngg_8-Multi-Agent-Research-Assistant-MCP-Server
.\multivenv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
Copy-Item .env.example .env

PowerShellでアクティベーションが許可されない場合は、すべてのコマンドで仮想環境を直接使用してください。

.\multivenv\Scripts\python.exe -m pip install -r requirements.txt

別のシステムPythonを使用しないでください。そうしないと、langchain_coreなどのインポートが見つからない場合があります。

4. Ollamaの設定

別のターミナルでOllamaを起動します。Ollamaがデスクトップアプリケーションとしてすでに実行されている場合は、ollama serveをスキップしてください。

ollama serve
ollama pull llama3.2

.envのデフォルト設定は次のとおりです。

OLLAMA_MODEL=llama3.2
OLLAMA_BASE_URL=http://localhost:11434

別のモデルを使用することもできますが、LangGraphで十分に機能するチャットとツール呼び出しをサポートしている必要があります。例:

OLLAMA_MODEL=qwen2.5:7b

5. マルチエージェントアシスタントの実行

リサーチ専用の質問を実行します。

python main.py "What does MCP do?"

これはリサーチエージェントにルーティングされ、data/knowledge_base.txtを検索します。

分析の質問を実行します。

python main.py "Compare these two ideas: solar power uses sunlight; wind power uses moving air."

これはアナリシスエージェントにルーティングされ、compare_textsを使用します。

コラボレーションの質問を実行します。

python main.py "Research solar and wind power, then compare their main trade-offs."

この質問には両方のワーカーが必要です。期待されるワークフローは次のとおりです。

  1. スーパーバイザーがask_research_agentを呼び出します。

  2. リサーチエージェントがsearch_knowledge_baseを呼び出します。

  3. スーパーバイザーが証書をask_analysis_agentに送信します。

  4. アナリシスエージェントがcompare_textsを呼び出します。

  5. スーパーバイザーが最終的な回答を1つ返します。

デフォルトの質問は、引数なしでも実行できます。

python main.py

6. MCPデモの実行

クライアントは2つのFastMCPツールを呼び出します。

python -m mcp_client.client

期待される出力は次のようになります。

Weather: Cloudy, 15 C
News: Mock headline: New developments in artificial intelligence are being monitored by the research team.

クライアントはFastMCPのインプロセスクライアント転送を使用するため、デモは信頼性が高く、ローカルで簡単に実行できます。それでも実際のMCPクライアント/サーバープロトコルを使用します。スタンドアロンサーバーは、MCP互換ホスト用に次のコマンドで起動できます。

python mcp_server/server.py

そのスタンドアロンサーバーはMCP stdio転送を使用します。

7. テストの実行

python -m pytest -q

テストは、Ollamaやモデルのダウンロードを必要とせずに、決定論的なツールをカバーしています。LangGraphの構築も、モデルリクエストを行わずに確認できます。

$env:OLLAMA_MODEL = "llama3.2"
python -c "from agents.supervisor import build_supervisor; build_supervisor(); print('Supervisor created')"

8. ファイル構成

agents/
	model.py             Shared ChatOllama configuration
	research_agent.py    Research worker created with create_react_agent
	analysis_agent.py    Analysis worker created with create_react_agent
	supervisor.py        Supervisor and wrapped worker tools

tools/
	research_tool.py     Local knowledge-base lookup tool
	analysis_tool.py     Structured two-text comparison tool

data/
	knowledge_base.txt   Local evidence used by the Research Agent

mcp_server/
	server.py            FastMCP server and its two tools

mcp_client/
	client.py            Client demonstration calling both MCP tools

main.py                Command-line entry point for the Supervisor
tests/                  Deterministic tool tests
requirements.txt        Python dependencies
.env.example            Ollama configuration template

9. 課題の目的のチェックリスト

課題の目的

実装

スーパーバイザーエージェントを構築する

agents/supervisor.py

create_react_agentを使用してリサーチエージェントを構築する

agents/research_agent.py

create_react_agentを使用してアナリシスエージェントを構築する

agents/analysis_agent.py

リサーチエージェントに情報検索ツールを提供する

tools/research_tool.py と data/knowledge_base.txt

アナリシスエージェントに2つのスニペットを比較するツールを提供する

tools/analysis_tool.py

ワーカーをスーパーバイザー用のツールとしてラップする

ask_research_agent と ask_analysis_agent

ロール固有のシステムプロンプトを追加する

各エージェントモジュールが独自のプロンプトを定義

少なくとも2つのツールを持つMCPサーバーを構築する

mcp_server/server.py

ツールを呼び出すMCPクライアントをデモする

mcp_client/client.py

リサーチ、分析、コラボレーションのシナリオをテストする

セクション5のコマンド

10. トラブルシューティング

No module named langchain_core

システムのPythonが使用されています。multivenvをアクティブにするか、直接インタープリタのパスを使用してください。

.\multivenv\Scripts\python.exe main.py "What does MCP do?"

Ollamaからのconnection refused

Ollamaを起動し、モデルが存在することを確認してください。

ollama serve
ollama list
ollama pull llama3.2

モデルがツールを呼び出さない

ツール対応のチャットモデルを使用し、質問を明確にして、セクション5のコラボレーションの例を試してください。小さいモデルや古いモデルは、ツールを使用せずに直接回答する場合があります。

ナレッジベースが回答を返さない

リサーチエージェントはローカルファイルのみを検索します。data/knowledge_base.txtに段落を追加して、質問を再実行してください。

11. 重要な範囲の注記

これは単純な教育用の実装です。ナレッジベースはモックのローカルデータソースであり、天気とニュースはモックのMCP結果であり、LLMルーティングはOllamaを使用して手動でテストされています。決定論的なツールは自動テストでカバーされています。

Related MCP Connectors

Related MCP Servers