ResearchTwin MCP Server
ResearchTwin MCP Server
ResearchTwin MCP Server — это постоянный уровень действий для ResearchTwin, агента долгосрочных исследовательских проектов. Он предоставляет агенту, размещённому в OpenTrek, реальные MCP-инструменты для записи исследовательской работы, сохранения состояния проекта и требований научного руководителя, а также для формирования отчётов о прогрессе на основе фактических данных.
Репозиторий задуман как эталонная реализация уровня конкурса: RAG отвечает на вопросы по исследовательским материалам, а MCP выполняет явные, проверяемые изменения в записи проекта.
Все приведённые примеры вымышлены и анонимизированы. Операционные данные должны находиться в runtime_data/ и намеренно исключены из Git.
Обзор
Исследовательский ассистент должен делать больше, чем просто отвечать на один вопрос. ResearchTwin ведёт долговременную запись того, что происходило в развивающемся проекте:
конкретные действия, результаты, блокеры и следующие шаги;
текущий этап проекта, задачи, риски и решения;
структурированные требования научного руководителя;
еженедельные, встречные или этапные отчёты, собираемые из сохранённых фактов.
Сервер предназначен для вызова агентом ResearchTwin в OpenTrek. Он не заменяет агента, LLM или существующую базу знаний ResearchTwin_Docs.
Related MCP server: AgentBase
Зачем MCP
У RAG и MCP разные обязанности:
Возможность | Ответственность |
ResearchTwin_Docs RAG | Извлекать и объяснять уже доступные статьи, заметки и технические материалы. |
ResearchTwin MCP Server | Сохранять и извлекать состояние управления исследованиями через явные вызовы инструментов. |
ResearchTwin Agent | Решать, когда извлекать, записывать, запрашивать и обобщать; превращать естественный язык в структурированные аргументы инструментов. |
Такое разделение делает запись проекта детерминированной и проверяемой. MCP-серверу не нужно запускать ещё одну LLM только для того, чтобы сохранить структурированное действие или создать отчёт из сохранённых фактов.
Архитектура
flowchart LR
U[Researcher] --> A[OpenTrek ResearchTwin Agent]
A -->|retrieve and reason| R[ResearchTwin_Docs RAG]
R --> K[Research papers and technical material]
A -->|MCP function calls| M[ResearchTwin MCP Server]
M --> T[Six research-management tools]
T --> S[JSON persistence layer]
S --> D[Runtime research records and reports]См. docs/architecture.md о границах компонентов, правилах персистентности и точках расширения.
Возможности
Официальная интеграция с Python MCP SDK.
Streamable HTTP как основной MCP-транспорт на /mcp.
Дополнительный совместимый транспорт SSE через командную строку, если выбран при запуске.
Шесть узконаправленных инструментов вместо монолитного серверного скрипта.
UTF-8 JSON-персистентность с атомарной заменой и блокировками в рамках процесса.
UUID-идентификаторы записей и временные метки ISO 8601 с учётом часового пояса.
Структурированные ответы об успехе и ошибках, подходящие для обработки инструментами агента.
Инструкции по запуску, тестированию, смоук-тесту и интеграции с OpenTrek в Windows PowerShell.
MCP-инструменты
Инструмент | Используйте, когда агенту нужно… |
record_research_activity | Сохранить выполненную работу, результаты экспериментов, блокеры, чтение или следующие шаги. |
list_research_activities | Вспомнить историю работы с фильтрами по дате, типу или тегам. |
update_project_status | Объединить или заменить текущий этап, списки задач, риски и решения. |
get_project_status | Прочитать текущий снимок проекта перед планированием или отчётом. |
record_advisor_instruction | Сохранить структурированное требование научного руководителя, приоритет, срок и последующие действия. |
generate_research_report | Создать еженедельный, встречный или этапный Markdown-отчёт из сохранённых данных. |
Полный контракт входных, выходных данных и ошибок — в docs/mcp_tools.md.
Структура проекта
ResearchTwin-MCP-Server/
├── server.py # Repository-root launch entry point
├── src/researchtwin_mcp/
│ ├── config.py # RESEARCHTWIN_* settings validation
│ ├── server.py # MCP server and transport startup
│ ├── models/ # Validation helpers and schemas
│ ├── storage/ # Shared JSON persistence layer
│ └── tools/ # Activity, status, advisor, and report tools
├── scripts/
│ ├── start_server.ps1
│ └── smoke_test.py
├── tests/
├── docs/
├── examples/sample_data/ # Fictional, commit-safe demo data
└── runtime_data/ # Local operational data; ignored by GitТребования
Windows PowerShell (документированный рабочий процесс)
Python 3.11 или новее; Python 3.11.x — рекомендуемая среда для конкурса
Сетевой доступ только когда OpenTrek запускается с другого устройства в локальной сети
Установка
Из нового сеанса Windows PowerShell:
Set-Location C:\work\OpenTrek\ResearchTwin-MCP-Server
python --version
where.exe python
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python --version
where.exe python
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e ".[dev]"Первый результат from where.exe python должен быть интерпретатором виртуального окружения после активации. Если PowerShell блокирует активацию для текущего сеанса, используйте документированную процедуру политики выполнения в рамках процесса, затем активируйте окружение снова; не ослабляйте системную политику без необходимости.
Конфигурация
Сервер считывает следующие переменные окружения из окружения процесса:
Переменная | По умолчанию | Значение |
RESEARCHTWIN_HOST | 0.0.0.0 | Адрес привязки. Сохранение этого значения по умолчанию позволяет доверенным клиентам в локальной сети достигать сервиса. |
RESEARCHTWIN_PORT | 8000 | TCP-порт, используемый выбранным транспортом. |
RESEARCHTWIN_DATA_DIR | runtime_data | Локальная директория персистентности; при относительном пути разрешается относительно корня репозитория. |
RESEARCHTWIN_LOG_LEVEL | INFO | Уровень журналирования Python. |
.env.example — это только справочный/шаблонный файл; сервер не загружает .env автоматически. Задайте значения в сеансе PowerShell или используйте внешний загрузчик окружения, если он уже есть в вашем развёртывании:
$env:RESEARCHTWIN_HOST = "0.0.0.0"
$env:RESEARCHTWIN_PORT = "8000"
$env:RESEARCHTWIN_DATA_DIR = "runtime_data"
$env:RESEARCHTWIN_LOG_LEVEL = "INFO"Не помещайте ключи, личные идентификаторы или IP-адрес конкретного пользователя в исходный код или в коммитируемую конфигурацию.
Запуск
С активным виртуальным окружением:
python server.pyОсновная конечная точка по умолчанию:
http://<LAN_IPV4>:8000/mcpТолько для локальной машины замените <LAN_IPV4> на 127.0.0.1. Для OpenTrek на другом доверенном устройстве в локальной сети используйте соответствующий IPv4-адрес хоста Windows. Также доступен вспомогательный скрипт:
.\scripts\start_server.ps1Streamable HTTP — обычный режим. Для явной совместимости с SSE запустите python server.py --transport sse и зарегистрируйте полученную конечную точку /sse, как описано в руководстве по интеграции с OpenTrek. SSE — это отдельно выбранный режим транспорта, а не альтернативный URL для регистрации рядом с /mcp.
Тестирование
Запустите модульные тесты из корня репозитория:
pytest -vЗапустите локальный смоук-тест MCP Streamable HTTP после установки зависимостей:
python scripts\smoke_test.pyСмоук-тест проверяет фактическое подключение по протоколу, обнаружение инструментов и цикл записи/списка действий. Он использует изолированные временные данные, а не вашу директорию runtime_data/.
Интеграция с OpenTrek
Регистрация в OpenTrek должна использовать выбор STREAMABLE в интерфейсе и такой формат URL:
http://<LAN_IPV4>:8000/mcpНе придумывайте значение transportType JSON вручную. Выберите STREAMABLE на странице регистрации MCP в OpenTrek, введите URL, сохраните и убедитесь, что все шесть инструментов обнаружены. См. docs/open_trek_integration.md о поиске IPv4 в локальной сети, совместимости с SSE, проверках VPN и безопасном процессе устранения неполадок брандмауэра.
Демонстрационный сценарий
Сквозная демонстрация может показать разницу между извлечением знаний и постоянным действием:
Агент использует RAG, чтобы объяснить вымышленную статью RNN-PPO или методическую заметку.
Исследователь говорит, что эксперимент RNN-PPO завершён, но обучение всё ещё нестабильно.
Агент вызывает record_research_activity с результатом, проблемой и следующим шагом.
Вымышленное требование научного руководителя сосредоточиться на обобщении записывается с помощью record_advisor_instruction.
Агент проверяет статус проекта, затем вызывает generate_research_report для групповой встречи.
Полученный Markdown-отчёт основан на сохранённых записях, а не на ответе за один ход. Описанный сценарий с комментариями — в docs/demo_flow.md.
Конфиденциальность и безопасность Git
.gitignore репозитория исключает .venv/, pycache/, байт-код Python, .env, кэши pytest и Ruff, runtime_data/ и файлы журналов. Эти пути могут содержать локальную исследовательскую активность, контекст научного руководителя, отчёты, учётные данные или данные, специфичные для машины.
Только вымышленные, анонимные фикстуры в examples/sample_data/ безопасны для коммита. Перед любым коммитом или push проверьте:
git status
git diff --checkНикогда не коммитьте реальные сообщения научного руководителя, реальное содержимое статей, стенограммы чатов, ключи, данные VPN или личную информацию.
Дорожная карта
Перейти от JSON-файлов к долговечному многопользовательскому хранилищу, когда потребуется.
Добавить точки интеграции ResearchTwin Memory и ResearchTwin_Core.
Добавить рабочие процессы интеллектуального анализа статей и цитирования вокруг существующего уровня RAG.
Добавить защищённую панель для просмотра истории проекта и отчётов.
Улучшить демонстрационную историю для конкурса, не раскрывая реальные исследовательские данные.
Документация
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides persistent memory and task management for coding agents via MCP tools, enabling mid-session recall and capture of durable knowledge.993MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to persistently store and semantically search shared knowledge via MCP tools.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables agents to create and manage persistent task logs, decisions, dead ends, questions, and handoffs, with file staleness detection and activity reporting.62MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage task state through MCP, including creating, updating, and tracking tasks, with support for client-side encryption and secure local credential storage.94MIT
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Project management MCP for AI agents with safe task reads and writes.
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sevenboom77/ResearchTwin-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server