Skip to main content
Glama
ANINDASAU

Multi-Agent Research Assistant MCP Server

by ANINDASAU

Мультиагентный исследовательский ассистент и MCP-сервер

Этот проект реализует задание в двух небольших частях:

  1. Рабочий процесс LangGraph с несколькими агентами: один супервизор и два специализированных работника.

  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

  • Модель Ollama, например llama3.2

Репозиторий уже содержит требуемое виртуальное окружение в 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. Супервизор возвращает один окончательный ответ.

Вопрос по умолчанию также можно запустить без аргумента:

python main.py

6. Запуск демонстрации MCP

Клиент вызывает оба инструмента 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

Предоставить агенту анализа инструмент сравнения двух фрагментов

tools/analysis_tool.py

Обернуть работников как инструменты для супервизора

ask_research_agent и ask_analysis_agent

Добавить системные подсказки, специфичные для ролей

Каждый модуль агента определяет свою подсказку

Создать 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?"

connection refused от Ollama

Запустите Ollama и убедитесь, что модель существует:

ollama serve
ollama list
ollama pull llama3.2

Модель не вызывает инструменты

Используйте чат-модель с поддержкой инструментов, формулируйте вопрос явно и попробуйте пример совместной работы из раздела 5. Небольшие или старые модели могут отвечать напрямую, не используя инструменты.

База знаний не возвращает ответ

Исследовательский агент ищет только в локальном файле. Добавьте больше абзацев в data/knowledge_base.txt и повторите вопрос.

11. Важное примечание о границах

Это простая учебная реализация. База знаний — это имитация локального источника данных, погода и новости — имитация результатов MCP, а маршрутизация LLM тестируется вручную с помощью Ollama. Детерминированные инструменты покрыты автоматическими тестами.

Related MCP Connectors

Related MCP Servers