Skip to main content
Glama
pickleton89

Mutation Clinical Trial Matching MCP

by pickleton89

Мутация Клиническое испытание Соответствие MCP

Сервер протокола контекста модели (MCP), который позволяет Claude Desktop искать совпадения в clincialtrials.gov на основе мутаций.

Статус

В настоящее время это первая фаза разработки. Она работает над получением испытаний на основе заданных мутаций в запросе Клода. Однако все еще есть ошибки и дальнейшие улучшения и дополнения, которые необходимо реализовать.

Related MCP server: MedAdapt Content Server

Обзор

Этот проект следует принципам Agentic Coding для создания системы, которая интегрирует Claude Desktop с API clinicaltrials.gov. Сервер позволяет делать запросы на естественном языке о генетических мутациях и возвращает обобщенную информацию о соответствующих клинических испытаниях.

flowchart LR Claude[Claude Desktop] <-->|MCP Protocol| Server[MCP Server] subgraph Flow[PocketFlow] QueryNode[Query Node] -->|trials_data| SummarizeNode[Summarize Node] end Server -->|mutation| Flow QueryNode -->|API Request| API[Clinicaltrials.gov API] API -->|Trial Data| QueryNode Flow -->|summary| Server Server -->|Return| Claude

Каждый узел в потоке следует шаблону узла PocketFlow с методами prep , exec и post :

Структура проекта

Этот проект организован в соответствии с парадигмой агентного кодирования:

  1. Требования (под руководством человека):

    • Поиск и обобщение клинических испытаний, связанных с определенными генетическими мутациями.

    • Предоставьте информацию о мутациях в качестве контекстных ресурсов

    • Полная интеграция с Claude Desktop

  2. Проектирование потока (совместное):

    • Пользователь спрашивает Клода Десктопа о генетической мутации

    • Клод называет наш инструмент MCP-сервера

    • Сервер запрашивает API clinicaltrials.gov

    • Сервер обрабатывает и суммирует результаты

    • Сервер возвращает форматированные результаты Клоду

  3. Утилиты (совместные):

    • clinicaltrials/query.py : обрабатывает вызовы API к clinicaltrials.gov

    • utils/call_llm.py : Утилиты для работы с Клодом

  4. Проектирование узлов (под управлением ИИ):

    • utils/node.py : реализует базовые классы Node и BatchNode с шаблоном prep/exec/post

    • clinicaltrials/nodes.py : определяет специализированные узлы для запросов и обобщений

    • clinicaltrials_mcp_server.py : организует выполнение потока

  5. Реализация (под управлением ИИ):

    • 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 )

  1. 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"
  2. Резюмировать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 создает и запускает поток:

# Create nodes query_node = QueryTrialsNode() summarize_node = SummarizeTrialsNode() # Create flow flow = Flow(start=query_node) flow.add_node("summarize", summarize_node) # Run flow with shared context shared = {"mutation": mutation} result = flow.run(shared)

Этот шаблон разделяет подготовку, выполнение и постобработку, делая код более поддерживаемым и тестируемым. Для получения более подробной информации см. проектную документацию .

Использование

  1. Установите зависимости с помощью uv:

    uv pip install -r requirements.txt
  2. Настройте рабочий стол Claude:

    • Конфигурация в ~/Library/Application Support/Claude/claude_desktop_config.json уже должна быть настроена

  3. Запустите Claude Desktop и задайте такие вопросы:

    • «Какие клинические испытания доступны для мутаций EGFR L858R?»

    • «Проводятся ли какие-либо испытания мутаций BRAF V600E?»

    • «Расскажите мне об испытаниях перестроек ALK»

  4. Используйте ресурсы, задавая вопросы:

    • «Можете ли вы рассказать мне больше о мутации KRAS G12C?»


Интеграция с Claude Desktop

Вы можете настроить этот проект как инструмент Claude Desktop MCP. Используйте заполнители путей в своей конфигурации и замените их на ваши фактические пути:

"mutation-clinical-trials-mcp": { "command": "{PATH_TO_VENV}/bin/python", "args": [ "{PATH_TO_PROJECT}/clinicaltrials_mcp_server.py" ], "description": "Matches genetic mutations to relevant clinical trials and provides summaries." }

Переменные пути:

  • {PATH_TO_VENV} : Полный путь к каталогу вашей виртуальной среды.

  • {PATH_TO_PROJECT} : полный путь к каталогу, содержащему файлы вашего проекта.

Инструкция по установке:

  1. Клонируйте репозиторий на локальный компьютер.

  2. Установите uv, если у вас его еще нет:

    curl -LsSf https://astral.sh/uv/install.sh | sh # macOS/Linux # or iwr -useb https://astral.sh/uv/install.ps1 | iex # Windows PowerShell
  3. Создайте виртуальную среду и установите зависимости за один шаг:

    uv venv .venv uv pip install -r requirements.txt
  4. При необходимости активируйте виртуальную среду:

    source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows
  5. Определите полный путь к вашей виртуальной среде и каталогу проекта.

  6. Обновите свою конфигурацию, используя эти конкретные пути.

Примеры:

  • На 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 ) — фреймворк для создания модульных рабочих процессов ИИ с использованием шаблона Node

  • MCP SDK ( mcp[cli]>=1.0.0 ) - Официальный SDK Model Context Protocol для создания инструментов Claude Desktop

  • Запросы ( requests==2.31.0 ) - HTTP-библиотека для выполнения вызовов API к clinicaltrials.gov

  • Python-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) информация, предоставляемая этим инструментом, может быть неполной, неточной или устаревшей. Пользователи должны проявлять осторожность и консультироваться с квалифицированными специалистами в области здравоохранения, прежде чем принимать какие-либо решения на основе результатов этой системы.


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/pickleton89/mutation-clinical-trial-matching-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server