protein-mcp-server
Публичный сервер: https://protein.caseyjhand.com/mcp
Инструменты
Семь инструментов, охватывающих весь цикл исследования структуры — поиск, получение, поиск гомологов, отслеживание лигандов, сравнение, профилирование корпуса и аннотирование — для экспериментальных (PDB) и предсказанных (AlphaFold) структур из одного интерфейса:
Инструмент | Описание |
| Поиск экспериментальных и предсказанных структур по свободному тексту, последовательности или фильтрам по организму/методу/разрешению, с опциональными разбивками по фасетам. |
| Получение метаданных и URL файлов координат по ID — экспериментальные (PDB), предсказанные (AlphaFold) или наилучшие доступные — с частичным успехом пакетной обработки и опциональным включением координат. |
| Поиск гомологов по последовательности (RCSB mmseqs2) или гомологов по структуре (Foldseek) по последовательности, PDB ID или UniProt-аксессору. |
| Преобразование названий/формул лигандов в ID компонентов, поиск структур, содержащих лиганд, или картирование остатков сайта связывания. |
| Структурное выравнивание нескольких структур (TM-align / jFATCAT) относительно эталона или в виде полной попарной матрицы. |
| Профилирование PDB на распределения и тренды с серверными фасетами — подсчёты, гистограммы, временные ряды и перекрёстные таблицы. |
| Получение функций UniProt и природных вариантов, а также членства в доменах/семействах InterPro с GO-терминами. |
protein_search_structures
Федеративный поиск по экспериментальным (PDB) и предсказанным (вычислительным моделям) структурам через RCSB Search v2.
Фильтры по свободному тексту, последовательности белка (запускает поиск подобия mmseqs2), а также по организму / методу / разрешению
content_typeограничивает поиск значениямиexperimental,predictedилиall— по умолчаниюallявляется настоящим объединением обеих вселенных, поэтому вычислительные модели появляются рядом с записями PDBКаждый результат указывает свой
source; экспериментальные результаты обогащены заголовком, методом, разрешением и организмом, а вычислительные модели несут UniProt-аксессор, извлечённый из их IDОпциональные
facetsвозвращают разбивку по методу / организму / году выпуска вместе с результатами без дополнительного вызова, каждый из которых сообщает, сколько совпадений не имеют значения для этого измерения; каждое измерение может быть указано один разПередавайте ID результатов напрямую в
protein_get_structure
protein_get_structure
Получение структур с метаданными и URL файлов координат, разрешение по провайдерам через source.
source: experimentalпринимает ID записей PDB, пакетно в одном вызове RCSB GraphQL; он также разрешает ID вычислительных моделей, возвращаемые поиском (AF_*/MA_*), которые возвращаются какsource: predictedс указанием провайдера моделированияsource: predictedпринимает UniProt-аксессоры и возвращает модель AlphaFold с уверенностью pLDDT/PAEsource: best_availableпринимает UniProt-аксессоры и возвращает лучшую федеративную модель (экспериментальную, если она существует, иначе лучшее предсказание)Частичный успех по каждому ID — неразрешённые ID перечисляются в
failed[], а не как ошибка уровня пакетаinclude_coordsвстраивает содержимое координат; когда пакет превышает бюджет ответа, возвращается сводка размеров по каждой структуре, так что вы можете повторить вызов сsections: [ids]для конкретных структурКаждый ответ содержит блок
attributionс указанием лицензий и цитат исходных данных (см. Лицензирование исходных данных)
protein_find_similar
Поиск структурно или эволюционно родственных белков по последовательности или по структуре.
by: sequenceвыполняет синхронный поиск RCSB mmseqs2;by: structureвыполняет асинхронный поиск Foldseek по экспериментальным и предсказанным базам данныхЗапрос по сырой однобуквенной последовательности, PDB ID или UniProt-аксессору
Цели Foldseek по умолчанию:
pdb100+afdb50; переопределите черезdatabases(например,afdb-swissprot,BFVD)Асинхронные задания, превышающие бюджет опроса, возвращают
status: computingсticketId— повторите вызов сticket_id, установленным в это значение, чтобы опросить то же задание вместо повторной отправкиКаждый результат указывает движок и исходную базу данных, из которой он получен
protein_track_ligands
Обнаружение лигандов и анализ сайтов связывания по всему PDB.
mode: find_ligandпреобразует название или формулу в ID химических компонентов с формулой, весом, SMILES и InChIKeymode: structures_with_ligandвозвращает записи PDB, содержащие лиганд, по точному ID компонентаmode: binding_siteвозвращает остатки белка, выстилающие карман лиганда в структуре, с расстояниями контактовСайты связывания доступны только для экспериментальных структур — вычисляются из депонированных координат (предсказанные модели не содержат связанных лигандов)
protein_compare_structures
Структурное выравнивание нескольких структур (до настроенного предела PROTEIN_MAX_COMPARE_STRUCTURES) через сервис структурного сравнения RCSB.
Методы:
tm-align,fatcat-rigid,fatcat-flexiblereference: firstвыравнивает каждую структуру относительно первой;reference: all_pairsвычисляет полную попарную матрицуОпциональный
chainдля каждой структуры ограничивает выравнивание одной цепьюСтруктура, повторяющаяся в
structures[], сравнивается один раз — повтор добавил бы только самовыравнивание и зеркальную пару, которые механизм возобновления не может отличить от оригиналаКаждая пара — это независимое асинхронное задание, распределяемое с ограничением параллелизма и частичным успехом по каждой паре — пара, всё ещё вычисляющаяся по истечении бюджета, возвращает
status: computingсuuidзадания, а неудачная пара ухудшает свою строку, не затрагивая остальныеПовторите вызов с соответствующим элементом
{ a, b, uuid }вresume[](скопированным изpairs[]предыдущего ответа), чтобы опросить задание вычисляющейся пары вместо повторной отправкиВозвращает TM-score, RMSD и количество выровненных остатков для каждой пары, а также
modeledResiduesиcoverage— каждый в виде кортежа[a, b], где coverage — процент 0–100 от количества смоделированных остатков этой структуры
protein_analyze_collection
Профилирование PDB на распределения и тренды по опциональному ограничивающему запросу — на основе серверного фасетного движка RCSB (один вызов, компактные корзины, без выгрузки строк).
Группировка по
method,organism,polymer_type,resolution,release_yearилиmolecular_weightОдно измерение
group_byдля разбивки или два различных измерения для перекрёстной таблицы (первое вкладывает второе); повторяющееся измерение отклоняетсяintervalзадаёт ширину корзины для гистограмм значений или период для гистограмм дат (year/month/quarter)Ограничьте область с помощью свободного текста
query,organism,methodилиmax_resolution;content_typeвыбирает вселенную структурbucket_limitограничивает количество корзин на уровень измерения, а не на ответ — перекрёстная таблица применяет его отдельно к родительскому измерению и к вложенному дочернему внутри каждой родительской корзины, поэтому возвращается доbucket_limit × (1 + bucket_limit)корзин. Каждый уровень отмечает собственное усечение, аbucketsReturnedдаёт фактическое общее количествоКаждое измерение сообщает
missingValueCount— совпадения в области, не имеющие значения для этого атрибута, которые поэтому не попадают ни в одну корзину (разбивка поresolutionне охватывает записи ЯМР, и ниmethod, ниresolutionне охватывают вычислительные модели)
protein_get_annotations
Последовательность и функциональная аннотация белка.
Функции UniProt (домены, сайты связывания, посттрансляционные модификации) и природные варианты последовательности
Членство в доменах/семействах InterPro (Pfam, PROSITE, …) с соответствующими GO-терминами
Укажите UniProt-аксессор напрямую или PDB ID — разрешается в UniProt-аксессор через перекрёстную ссылку на последовательность структуры
Мультицепная запись PDB может соответствовать нескольким аксессорам; по умолчанию выбирается детерминированная цепь с наименьшим авторским индексом, альтернативы перечислены в
ambiguity. Передайтеchain(ID авторской цепи, напримерA), чтобы выбрать конкретнуюincludeограничивает, какие классы аннотаций извлекаются:features,domains,variantsилиallКаждый ответ содержит блок
attributionс указанием лицензий и цитат исходных данных (см. Лицензирование исходных данных)
Related MCP server: UniProt MCP Server
Ресурсы
Тип | Имя | Описание |
Ресурс |
| Сводка экспериментальной структуры для записи PDB — заголовок, метод, разрешение, организм, цепи и связанные лиганды. |
Ресурс |
| Сводка предсказанной структуры для UniProt-аксессора из AlphaFold DB — средний pLDDT, доли доверительных диапазонов, URL моделей и версия. |
Все данные ресурсов также доступны через инструменты — pdb://{entry_id} соответствует protein_get_structure для source: experimental, а af://{uniprot} — для source: predicted. Многие MCP-клиенты поддерживают только инструменты и не отображают ресурсы; сводки остаются доступными через инструменты.
Возможности
Построено на @cyanheads/mcp-ts-core:
Декларативные определения инструментов и ресурсов — один файл на примитив, фреймворк обрабатывает регистрацию и валидацию
Единая обработка ошибок — обработчики выбрасывают исключения, фреймворк перехватывает, классифицирует и форматирует
Подключаемая аутентификация:
none,jwt,oauthСменяемые бэкенды хранилища:
in-memory,filesystem,Supabase,Cloudflare KV/R2/D1Структурированное логирование с опциональной трассировкой OpenTelemetry
Транспорты STDIO и Streamable HTTP
Специфика белков:
Единая федеративная поверхность для экспериментальных (PDB) и предсказанных (AlphaFold / 3D-Beacons) структур — поиск, получение и сравнение обрабатывают обе вселенные одинаково
Без ключей для всех вышестоящих источников — RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro и Foldseek, не требуется настраивать API-ключи
Аналитика корпуса выполняется на стороне сервера на движке фасетов RCSB — распределения, гистограммы и перекрёстные таблицы одним вызовом, без выгрузки строк и без SQL-рабочего пространства
Асинхронные задания выравнивания и Foldseek опрашиваются в рамках ограниченного бюджета и возвращают билет задания (
ticketId/uuidдля каждой пары) вместо блокировки — повторный вызов сticket_idили записьюresume[]позволяет опросить то же задание, а не отправлять его заново
Вывод, удобный для агентов:
Происхождение данных в каждом ответе — каждый результат несёт
source(experimental/predicted), движок и базу данных, которые его создали, а также эхо эффективного запроса и общего количества, чтобы агенты могли оценивать покрытиеКорректное частичное сбои — пакетные выборки и попарные сравнения возвращают строки по каждому элементу (
failed[],statusдля каждой пары) вместо отказа всего запроса, каждая с практическими рекомендациями по восстановлениюРазличаемые выходные контракты — типизированные объединения
sourceиstatus, результатыcomputingс билетами возобновления и описания переполнения бюджета позволяют вызывающим ветвиться на основе данных, а не разбора строк
Начало работы
Публичный размещённый экземпляр
Публичный экземпляр доступен по адресу https://protein.caseyjhand.com/mcp — установка не требуется. Направьте любой MCP-клиент на него через Streamable HTTP:
{
"mcpServers": {
"protein": {
"type": "streamable-http",
"url": "https://protein.caseyjhand.com/mcp"
}
}
}Самостоятельное размещение
Добавьте следующее в файл конфигурации вашего MCP-клиента. API-ключ не требуется — все вышестоящие провайдеры работают без ключей.
{
"mcpServers": {
"protein-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/protein-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}Или с помощью npx (Bun не требуется):
{
"mcpServers": {
"protein-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/protein-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}Или с помощью Docker:
{
"mcpServers": {
"protein-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/protein-mcp-server:latest"]
}
}
}Для Streamable HTTP установите транспорт и запустите сервер:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpПредварительные требования
Bun v1.3.2 или выше (или Node.js v24+).
Никаких учётных записей или API-ключей — RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro и Foldseek — все публичные и не требуют ключей.
Установка
Клонируйте репозиторий:
git clone https://github.com/cyanheads/protein-mcp-server.gitПерейдите в каталог:
cd protein-mcp-serverУстановите зависимости:
bun installКонфигурация
Все вышестоящие провайдеры не требуют ключей, поэтому сервер работает из коробки без конфигурации. Каждая переменная ниже необязательна.
Variable | Description | Default |
| Максимальное время ожидания (wall-clock) для опроса асинхронного задания (выравнивание / Foldseek) перед возвратом результата |
|
| Ограничение на количество идентификаторов, принимаемых |
|
| Ограничение на количество структур на вызов |
|
| Ограничение по умолчанию на количество корзин на измерение |
|
| Максимальное количество одновременных запросов к вышестоящим источникам для развёртывания по идентификаторам / парам (1–16). |
|
| Базовый URL для RCSB Search API v2. |
|
| Базовый URL для API базы данных AlphaFold Protein Structure Database. |
|
| Базовый URL для сервиса поиска структурного сходства Foldseek. |
|
| Транспорт: |
|
| Порт для HTTP-сервера. |
|
| Режим аутентификации: |
|
| Уровень логирования (RFC 5424). |
|
| Включить инструментирование OpenTelemetry. |
|
См. .env.example для полного списка переопределений базовых URL провайдеров и пределов настройки.
Запуск сервера
Локальная разработка
Сборка и запуск:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:httpЗапуск проверок и тестов:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t protein-mcp-server .
docker run --rm -e MCP_TRANSPORT_TYPE=http -p 3010:3010 protein-mcp-serverDockerfile по умолчанию использует HTTP-транспорт, режим без сохранения состояния сессий и записывает логи в /var/log/protein-mcp-server. Зависимости OpenTelemetry peer устанавливаются по умолчанию — соберите с --build-arg OTEL_ENABLED=false, чтобы исключить их.
Структура проекта
Directory | Purpose |
| Точка входа |
| Разбор и валидация переменных окружения, специфичных для сервера, с помощью Zod. |
| Определения инструментов ( |
| Определения ресурсов ( |
| Сервисный слой провайдеров — RCSB, AlphaFold, 3D-Beacons, UniProt, InterPro, Foldseek и общие помощники HTTP/идентификаторов. |
| Модульные и интеграционные тесты, зеркалирующие |
Руководство по разработке
См. CLAUDE.md/AGENTS.md для руководства по разработке и архитектурных правил. Краткая версия:
Обработчики выбрасывают исключения, фреймворк перехватывает — никаких
try/catchв логике инструментовИспользуйте
ctx.logдля логирования в рамках запроса,ctx.stateдля хранилища в рамках тенантаРегистрируйте новые инструменты и ресурсы через баррели в
src/mcp-server/*/definitions/index.tsОборачивайте внешние API-вызовы: валидируйте сырые данные → нормализуйте в доменный тип → возвращайте схему вывода; никогда не выдумывайте отсутствующие поля
Вклад
Приветствуются issues и pull request'ы. Запустите проверки и тесты перед отправкой:
bun run devcheck
bun run testЛицензирование данных вышестоящих источников
Структурные и аннотационные данные поступают из публичных вышестоящих баз данных, каждая под своей лицензией. protein_get_structure и protein_get_annotations содержат блок attribution в каждом ответе — лицензию, цитирование и домашнюю страницу для каждого источника, внёсшего вклад в этот конкретный ответ, — так что обязательство по атрибуции передаётся вместе с данными конечным потребителям, а не остаётся только здесь. Источники CC BY / CC BY-SA требуют указания авторства при распространении; источники CC0 требуют только цитирования (указание авторства рекомендуется, но не обязательно).
Source | Contributes to | License |
| CC0 1.0 Universal | |
| CC BY 4.0 | |
| CC BY 4.0 | |
| CC BY-SA 4.0 | |
| CC BY 4.0 | |
| CC BY 4.0 | |
| CC0 1.0 Universal | |
| CC BY 4.0 |
best_available объединяет предсказанные модели через 3D-Beacons, поэтому блок attribution указывает фактического поставщика (AlphaFold DB, SWISS-MODEL, BFVD, …); поставщик без курируемой записи лицензии получает запасной вариант See provider terms, указывающий обратно на 3D-Beacons, а не выдуманную лицензию. Собственные классификации доменов/семейств InterPro имеют лицензию CC0; термины GO, передаваемые вместе с ними, отдельно лицензированы CC BY 4.0, поэтому каждый из них указывается независимо только тогда, когда он действительно вносит вклад. Полные цитаты для каждого источника передаются в блоке attribution соответствующих ответов инструментов. Это касается лицензирования данных вышестоящих источников — собственный код сервера лицензирован отдельно (см. Лицензия).
Лицензия
Apache-2.0 — см. LICENSE для подробностей.
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 Connectors
RCSB PDB MCP — experimentally determined macromolecular structures.
Model Context Protocol server for Studex tools, notifications, and profile integrations
PDBe (Protein Data Bank in Europe, EBI) MCP.
UniProt MCP — protein sequence + function database.
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server that enhances language models with protein structure analysis capabilities, enabling detailed active site analysis and disease-related protein searches through established protein databases.218
- FlicenseCqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server providing advanced access to the UniProt protein database.2620
- FlicenseAqualityFmaintenanceA Model Context Protocol (MCP) server that provides access to the Protein Data Bank (PDB) - the worldwide repository of information about the 3D structures of proteins, nucleic acids, and complex assemblies.525
- FlicenseBqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that provides access to the AlphaFold Protein Structure Database through a rich set of tools and resources for protein structure prediction analysis.1935
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/cyanheads/protein-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server