Skip to main content
Glama
cyanheads

clinicaltrialsgov-mcp-server

npm Docker Version Framework

MCP SDK License TypeScript

Публичный хостинг сервера: https://clinicaltrials.caseyjhand.com/mcp


Обзор

Семь инструментов для поиска, обнаружения, анализа и подбора клинических исследований:

Название инструмента

Описание

clinicaltrials_search_studies

Поиск исследований с помощью полнотекстовых запросов, фильтров, пагинации, сортировки и выбора полей.

clinicaltrials_get_study_record

Получение одного исследования по NCT ID. Возвращает полную запись: протокол, критерии включения, исходы, группы, вмешательства, контакты и локации.

clinicaltrials_get_study_count

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

clinicaltrials_get_field_values

Поиск допустимых значений для полей API (статус, фаза, тип исследования и т.д.) с подсчетом для каждого значения.

clinicaltrials_get_field_definitions

Просмотр дерева полей модели данных исследования — названия, типы, вложенность. Поддерживает навигацию по поддеревьям и поиск по ключевым словам.

clinicaltrials_get_study_results

Извлечение исходов, нежелательных явлений, потока участников и исходных данных из завершенных исследований. Опциональный режим сводки сокращает полезную нагрузку с ~200 КБ до ~5 КБ.

clinicaltrials_find_eligible

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

Ресурс

Описание

clinicaltrials://{nctId}

Получение одного клинического исследования по NCT ID. Полный JSON.

Промпт

Описание

analyze_trial_landscape

Адаптивный рабочий процесс для анализа ландшафта исследований на основе данных с использованием инструментов подсчета и поиска.

Related MCP server: Healthcare MCP Server

Инструменты

clinicaltrials_search_studies

Основной инструмент поиска с полными возможностями запросов ClinicalTrials.gov.

  • Полнотекстовые и специфические для полей запросы (заболевание, вмешательство, спонсор, локация, название, исход)

  • Фильтры по статусу и фазе с типизированными значениями перечислений

  • Географическая фильтрация по координатам и расстоянию

  • Расширенная поддержка выражений AREA[] Essie для сложных запросов

  • Выбор полей для уменьшения размера полезной нагрузки (полные записи весят ~70 КБ каждая)

  • Пагинация с токенами курсора, сортировка по любому полю


clinicaltrials_get_study_results

Получение опубликованных результатов для завершенных исследований.

  • Показатели исходов со статистикой, нежелательными явлениями, потоком участников, исходными характеристиками

  • Фильтрация на уровне разделов (запрашивайте только нужные данные)

  • Опциональный режим сводки сжимает полные результаты (~200 КБ) до основных метаданных (~5 КБ на исследование)

  • Пакетная обработка нескольких NCT ID за один вызов с отчетом о частичном успехе

  • Отдельное отслеживание исследований без результатов и ошибок получения

clinicaltrials_find_eligible

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

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

  • Формирует оптимизированные API-запросы с демографическими фильтрами (возрастной диапазон, пол, здоровые добровольцы)

  • Возвращает исследования с полями критериев включения и локаций для оценки вызывающей стороной

  • Предоставляет полезные подсказки, если подходящих исследований не найдено (расширение условий, корректировка фильтров)

Функции

Построено на @cyanheads/mcp-ts-core:

  • Декларативные определения инструментов/ресурсов/промптов со схемами Zod и функциями форматирования

  • Унифицированная обработка ошибок — обработчики выбрасывают исключения, фреймворк перехватывает и классифицирует их

  • Двойной транспорт: stdio и Streamable HTTP из одной кодовой базы

  • Подключаемая аутентификация (none, jwt, oauth) для HTTP-транспорта

  • Структурированное логирование с опциональной трассировкой OpenTelemetry

Специфично для ClinicalTrials.gov:

  • Типизированный клиент для ClinicalTrials.gov REST API v2

  • Публичный API — аутентификация или ключи API не требуются

  • Повторные попытки с экспоненциальной задержкой (3 попытки) и ограничением частоты запросов (~1 запрос/сек)

  • Обнаружение HTML-ошибок и фабрики структурированных ошибок

Начало работы

Публичный хостинг

Публичный экземпляр доступен по адресу https://clinicaltrials.caseyjhand.com/mcp — установка не требуется. Укажите его в любом MCP-клиенте через Streamable HTTP:

{
  "mcpServers": {
    "clinicaltrialsgov-mcp-server": {
      "type": "streamable-http",
      "url": "https://clinicaltrials.caseyjhand.com/mcp"
    }
  }
}

Самостоятельный хостинг / Локально

Добавьте в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json):

{
  "mcpServers": {
    "clinicaltrialsgov-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["clinicaltrialsgov-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}

Или для Streamable HTTP:

MCP_TRANSPORT_TYPE=http
MCP_HTTP_PORT=3010

Предварительные требования

  • Bun v1.2.0 или выше (или Node.js >= 22.0.0)

Установка

  1. Клонируйте репозиторий:

git clone https://github.com/cyanheads/clinicaltrialsgov-mcp-server.git
  1. Перейдите в директорию:

cd clinicaltrialsgov-mcp-server
  1. Установите зависимости:

bun install

Конфигурация

Вся конфигурация опциональна — сервер работает с настройками по умолчанию без ключей API.

Переменная

Описание

По умолчанию

CT_API_BASE_URL

Базовый URL API ClinicalTrials.gov.

https://clinicaltrials.gov/api/v2

CT_REQUEST_TIMEOUT_MS

Тайм-аут запроса в миллисекундах.

30000

CT_MAX_PAGE_SIZE

Максимальный размер страницы.

200

MCP_TRANSPORT_TYPE

Транспорт: stdio или http.

stdio

MCP_HTTP_PORT

Порт для HTTP-сервера.

3010

MCP_AUTH_MODE

Режим аутентификации: none, jwt, oauth.

none

MCP_LOG_LEVEL

Уровень логирования (RFC 5424).

info

LOGS_DIR

Директория для лог-файлов (только Node.js).

<project-root>/logs

OTEL_ENABLED

Включить трассировку OpenTelemetry.

false

Запуск сервера

Локальная разработка

  • Сборка и запуск продакшн-версии:

bun run build
bun run start:http   # or start:stdio
  • Запуск в режиме разработки (с watch):

bun run dev:http     # or dev:stdio
  • Запуск проверок и тестов:

bun run devcheck     # Lints, formats, type-checks
bun run test         # Runs test suite

Docker

docker build -t clinicaltrialsgov-mcp-server .
docker run -p 3010:3010 clinicaltrialsgov-mcp-server

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

Директория

Назначение

src/mcp-server/tools/

Определения инструментов (*.tool.ts).

src/mcp-server/resources/

Определения ресурсов (*.resource.ts).

src/mcp-server/prompts/

Определения промптов (*.prompt.ts).

src/services/clinical-trials/

Клиент API ClinicalTrials.gov и типы.

src/config/

Парсинг переменных окружения и валидация через Zod.

tests/

Модульные и интеграционные тесты.

Руководство по разработке

См. CLAUDE.md для получения рекомендаций по разработке и архитектурных правил. Кратко:

  • Обработчики выбрасывают исключения, фреймворк перехватывает — никаких try/catch в логике инструментов

  • Используйте ctx.log для логирования в рамках запроса, никаких вызовов console

  • Регистрируйте новые инструменты и ресурсы в файлах index.ts

Вклад в проект

Ишью и пулл-реквесты приветствуются. Перед отправкой запустите проверки:

bun run devcheck
bun run test

Лицензия

Apache-2.0 — подробности см. в LICENSE.

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/cyanheads/clinicaltrialsgov-mcp-server'

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