Мутация Клиническое испытание Соответствие MCP
Сервер протокола контекста модели (MCP), который позволяет Claude Desktop искать совпадения в clincialtrials.gov на основе мутаций.
Статус
В настоящее время это первая фаза разработки. Она работает над получением испытаний на основе заданных мутаций в запросе Клода. Однако все еще есть ошибки и дальнейшие улучшения и дополнения, которые необходимо реализовать.
Related MCP server: MedAdapt Content Server
Обзор
Этот проект следует принципам Agentic Coding для создания системы, которая интегрирует Claude Desktop с API clinicaltrials.gov. Сервер позволяет делать запросы на естественном языке о генетических мутациях и возвращает обобщенную информацию о соответствующих клинических испытаниях.
Каждый узел в потоке следует шаблону узла PocketFlow с методами prep , exec и post :
Структура проекта
Этот проект организован в соответствии с парадигмой агентного кодирования:
Требования (под руководством человека):
Поиск и обобщение клинических испытаний, связанных с определенными генетическими мутациями.
Предоставьте информацию о мутациях в качестве контекстных ресурсов
Полная интеграция с Claude Desktop
Проектирование потока (совместное):
Пользователь спрашивает Клода Десктопа о генетической мутации
Клод называет наш инструмент MCP-сервера
Сервер запрашивает API clinicaltrials.gov
Сервер обрабатывает и суммирует результаты
Сервер возвращает форматированные результаты Клоду
Утилиты (совместные):
clinicaltrials/query.py: обрабатывает вызовы API к clinicaltrials.govutils/call_llm.py: Утилиты для работы с Клодом
Проектирование узлов (под управлением ИИ):
utils/node.py: реализует базовые классы Node и BatchNode с шаблоном prep/exec/postclinicaltrials/nodes.py: определяет специализированные узлы для запросов и обобщенийclinicaltrials_mcp_server.py: организует выполнение потока
Реализация (под управлением ИИ):
FastMCP SDK для обработки деталей протокола
Обработка ошибок на всех уровнях
Ресурсы для распространенных мутаций
Компоненты
Сервер MCP ( clinicaltrials_mcp_server.py )
Основной сервер, реализующий интерфейс Model Context Protocol, использующий официальный Python SDK. Он:
Регистрирует и предоставляет инструменты для использования Клодом
Предоставляет ресурсы с информацией о распространенных мутациях
Обеспечивает связь с Claude Desktop
Модуль запроса ( clinicaltrials/query.py )
Отвечает за запросы к API clinicaltrials.gov с помощью:
Надежная обработка ошибок
Проверка входных данных
Подробная регистрация
Суммировщик ( llm/summarize.py )
Обрабатывает и форматирует данные клинических испытаний:
Организует испытания по фазам
Извлекает ключевую информацию (идентификатор NCT, резюме, условия и т. д.)
Создает читабельную сводку разметки
Реализация шаблона узла
В этом проекте реализован шаблон PocketFlow Node, который обеспечивает модульный, удобный в обслуживании подход к построению рабочих процессов ИИ:
Базовые классы узлов ( utils/node.py )
Узел : базовый класс с методами
prep,execиpostдля обработки данных.BatchNode : расширение для пакетной обработки нескольких элементов
Поток : организует выполнение узлов в последовательности.
Узлы внедрения ( clinicaltrials/nodes.py )
QueryTrialsNode :
# Queries clinicaltrials.gov API def prep(self, shared): return shared["mutation"] def exec(self, mutation): return query_clinical_trials(mutation) def post(self, shared, mutation, result): shared["trials_data"] = result shared["studies"] = result.get("studies", []) return "summarize"РезюмироватьTrialsNode :
# Formats trial data into readable summaries def prep(self, shared): return shared["studies"] def exec(self, studies): return format_trial_summary(studies) def post(self, shared, studies, summary): shared["summary"] = summary return None # End of flow
Поток исполнения
Сервер MCP создает и запускает поток:
Этот шаблон разделяет подготовку, выполнение и постобработку, делая код более поддерживаемым и тестируемым. Для получения более подробной информации см. проектную документацию .
Использование
Установите зависимости с помощью uv:
uv pip install -r requirements.txtНастройте рабочий стол Claude:
Конфигурация в
~/Library/Application Support/Claude/claude_desktop_config.jsonуже должна быть настроена
Запустите Claude Desktop и задайте такие вопросы:
«Какие клинические испытания доступны для мутаций EGFR L858R?»
«Проводятся ли какие-либо испытания мутаций BRAF V600E?»
«Расскажите мне об испытаниях перестроек ALK»
Используйте ресурсы, задавая вопросы:
«Можете ли вы рассказать мне больше о мутации KRAS G12C?»
Интеграция с Claude Desktop
Вы можете настроить этот проект как инструмент Claude Desktop MCP. Используйте заполнители путей в своей конфигурации и замените их на ваши фактические пути:
Переменные пути:
{PATH_TO_VENV}: Полный путь к каталогу вашей виртуальной среды.{PATH_TO_PROJECT}: полный путь к каталогу, содержащему файлы вашего проекта.
Инструкция по установке:
Клонируйте репозиторий на локальный компьютер.
Установите uv, если у вас его еще нет:
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS/Linux # or iwr -useb https://astral.sh/uv/install.ps1 | iex # Windows PowerShellСоздайте виртуальную среду и установите зависимости за один шаг:
uv venv .venv uv pip install -r requirements.txtПри необходимости активируйте виртуальную среду:
source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # WindowsОпределите полный путь к вашей виртуальной среде и каталогу проекта.
Обновите свою конфигурацию, используя эти конкретные пути.
Примеры:
На macOS/Linux:
"command": "/Users/username/projects/mutation_trial_matcher/.venv/bin/python"В Windows:
"command": "C:\\Users\\username\\projects\\mutation_trial_matcher\\.venv\\Scripts\\python.exe"
Советы по поиску пути:
Чтобы найти точный путь к интерпретатору Python в виртуальной среде, выполните:
which python(macOS/Linux)where python(Windows, после активации venv)
В качестве пути к проекту используйте полный путь к каталогу, содержащему
clinicaltrials_mcp_server.py.
Будущие улучшения
Полный список запланированных улучшений и будущих работ можно найти в документе future_work.md .
Зависимости
Этот проект опирается на следующие ключевые зависимости:
Python 3.7+ — базовая среда выполнения
PocketFlow (
pocketflow>=0.0.1) — фреймворк для создания модульных рабочих процессов ИИ с использованием шаблона NodeMCP SDK (
mcp[cli]>=1.0.0) - Официальный SDK Model Context Protocol для создания инструментов Claude DesktopЗапросы (
requests==2.31.0) - HTTP-библиотека для выполнения вызовов API к clinicaltrials.govPython-dotenv (
python-dotenv==1.1.0) — для загрузки переменных среды из файлов .env
Все зависимости можно установить с помощью uv, как описано в инструкции по установке.
Поиск неисправностей
Если Claude Desktop отключается от сервера MCP:
Проверьте логи по адресу:
~/Library/Logs/Claude/mcp-server-clinicaltrials-mcp.logПерезагрузить рабочий стол Клода
Убедитесь, что сервер работает правильно.
Процесс разработки
Этот проект был разработан с использованием подхода кодирования с помощью ИИ, следуя принципам агентного кодирования, где люди проектируют, а агенты ИИ реализуют. Оригинальная программа на main была создана 2025-04-30. Реализация была создана с помощью парного программирования с:
Виндсерфинг
ЧатGPT 4.1
Клод 3.7 Сонет
Эти помощники на основе искусственного интеллекта сыграли важную роль в переводе высокоуровневых требований к проектированию в функциональный код, помогли с интеграцией API и структурировали проект в соответствии с передовыми практиками.
Обработка ограничения на количество символов .windsurfrules
Файл PocketFlow .windsurfrules из репозитория шаблонов содержит комплексные правила проекта, но Windsurf устанавливает ограничение в 6000 символов для файлов правил. Это означает, что вы не можете включить весь набор правил непосредственно в свой проект, а важные правила могут быть опущены или усечены.
Для решения этой проблемы рекомендуется два решения:
1. Использование памяти Windsurf 🪁 для хранения правил
Вы можете использовать функцию памяти Windsurf для хранения полного набора правил PocketFlow, даже если они превышают лимит файла .windsurfrules . Такой подход позволяет ссылаться на все соглашения проекта и передовые практики в общении с Windsurf, гарантируя, что ничего не будет потеряно из-за усечения. Пошаговые инструкции и подробное сравнение файлов памяти и правил см. в docs/memory_vs_windsurfrules.md .
2. Использование Context7 для доступа к рекомендациям
Важное примечание : этот проект основан на репозитории PocketFlow-Template-Python , который включает в себя полный файл .windsurfrules . Однако Windsurf имеет ограничение в 6000 символов для файлов правил, что означает, что полные правила PocketFlow не могут быть полностью загружены в память Windsurf.
Чтобы устранить это ограничение, мы создали подробные инструкции по использованию сервера Context7 MCP для доступа к рекомендациям PocketFlow во время разработки. Такой подход позволяет вам использовать всю мощь шаблонов проектирования и лучших практик PocketFlow, не ограничиваясь ограничением по количеству символов.
Для получения подробных инструкций по использованию Context7 с PocketFlow, пожалуйста, обратитесь к нашему руководству Context7 . Это руководство включает в себя:
Пошаговая инструкция по настройке Context7 MCP в Windsurf
Подсказки на естественном языке для доступа к документации PocketFlow
Примеры получения конкретных шаблонов реализации
Как сохранить важные закономерности в качестве воспоминаний для дальнейшего использования
Следуя этому руководству, вы сможете соблюдать принципы агентного кодирования PocketFlow при разработке и расширении этого проекта.
Благодарности
Этот проект был создан с использованием PocketFlow-Template-Python в качестве отправной точки. Особая благодарность первоначальным участникам этого проекта за предоставление основы и структуры, которые сделали эту реализацию возможной.
Проект следует методологии агентного кодирования, описанной в исходном шаблоне.
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE .
⚠️ Отказ от ответственности
Этот проект является прототипом и предназначен только для исследовательских и демонстрационных целей. Он не должен использоваться для принятия медицинских решений или в качестве замены профессиональной медицинской консультации, диагностики или лечения. Из-за ограничений больших языковых моделей (LLM) информация, предоставляемая этим инструментом, может быть неполной, неточной или устаревшей. Пользователи должны проявлять осторожность и консультироваться с квалифицированными специалистами в области здравоохранения, прежде чем принимать какие-либо решения на основе результатов этой системы.