Skip to main content
Glama
cyanheads

protein-mcp-server

by cyanheads

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

공개 호스팅 서버: https://protein.caseyjhand.com/mcp


도구

구조 연구의 전체 흐름을 아우르는 일곱 가지 도구 — 탐색, 조회, 상동체 검색, 리간드 추적, 비교, 코퍼스 프로파일링, 주석 — 실험(PDB) 및 예측(AlphaFold) 구조를 하나의 인터페이스에서 제공합니다:

도구

설명

protein_search_structures

자유 텍스트, 서열, 또는 생물체/방법/해상도 필터로 실험 및 예측 구조를 검색하며, 선택적 패싯(facet) 분석을 지원합니다.

protein_get_structure

ID로 메타데이터와 좌표 파일 URL을 조회합니다 — 실험(PDB), 예측(AlphaFold), 또는 최적 가용 모델 — 배치 부분 성공 및 선택적 좌표 인라인을 지원합니다.

protein_find_similar

서열(RCSB mmseqs2) 또는 폴드(Foldseek) 기준 상동체를 서열, PDB ID, 또는 UniProt 접근 번호로부터 찾습니다.

protein_track_ligands

리간드 이름/화학식을 컴포넌트 ID로 변환하고, 리간드를 포함하는 구조를 찾거나, 결합 부위 잔기를 매핑합니다.

protein_compare_structures

여러 구조를 참조 구조에 맞추거나 전체 쌍별 행렬로 구조 정렬합니다(TM-align / jFATCAT).

protein_analyze_collection

서버 측 패싯으로 PDB를 분포와 추세로 프로파일링합니다 — 개수, 히스토그램, 타임라인, 교차 분석.

protein_get_annotations

UniProt 기능 및 자연 변이와 GO 용어를 포함한 InterPro 도메인/패밀리 소속을 조회합니다.

protein_search_structures

RCSB Search v2를 통한 실험(PDB) 및 예측(계산 모델) 구조 간 연합 검색.

  • 자유 텍스트, 단백질 서열(mmseqs2 유사성 검색 트리거), 생물체/방법/해상도 필터

  • content_type은 검색 범위를 experimental, predicted, 또는 all로 한정합니다 — 기본값 all은 두 세계의 진정한 합집합이므로 계산 모델이 PDB 항목과 함께 표시됩니다

  • 모든 결과는 source를 명시합니다; 실험 결과는 제목, 방법, 해상도, 생물체 정보가 보강되고, 계산 모델은 ID에서 파싱된 UniProt 접근 번호를 포함합니다

  • 선택적 facets는 추가 호출 없이 결과와 함께 방법/생물체/출시 연도 분석을 반환하며, 각 차원에 대해 값이 없는 일치 항목 수를 보고합니다; 각 차원은 한 번만 나열될 수 있습니다

  • 체인 히트 ID를 protein_get_structure에 직접 전달할 수 있습니다


protein_get_structure

메타데이터와 좌표 파일 URL로 구조를 조회하며, source에 따라 제공자를 결정합니다.

  • source: experimental은 PDB 항목 ID를 받아 하나의 RCSB GraphQL 호출로 배치 처리합니다; 또한 검색이 반환하는 계산 모델 ID(AF_* / MA_*)도 해석하며, 이들은 해당 모델링 제공자에 귀속된 source: predicted로 반환됩니다

  • source: predicted는 UniProt 접근 번호를 받아 pLDDT/PAE 신뢰도를 포함한 AlphaFold 모델을 반환합니다

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

  • 폴링 예산을 초과하는 비동기 작업은 ticketId와 함께 status: computing을 반환합니다 — 동일한 작업을 다시 제출하는 대신 ticket_id에 해당 값을 설정하여 다시 호출하면 같은 작업을 폴링합니다

  • 각 결과는 출처 엔진과 원본 데이터베이스를 명시합니다


protein_track_ligands

PDB 전반에 걸친 리간드 발견 및 결합 부위 분석.

  • mode: find_ligand는 이름 또는 화학식을 화학식, 분자량, SMILES, InChIKey가 포함된 화학 컴포넌트 ID로 해석합니다

  • mode: structures_with_ligand는 정확한 컴포넌트 ID로 리간드를 포함하는 PDB 항목을 반환합니다

  • mode: binding_site는 구조에서 리간드 포켓을 둘러싼 단백질 잔기를 접촉 거리와 함께 반환합니다

  • 결합 부위는 실험 전용입니다 — 기탁된 좌표에서 계산됩니다(예측 모델에는 결합 리간드가 없음)


protein_compare_structures

RCSB 구조 비교 서비스를 통한 여러 구조(구성된 PROTEIN_MAX_COMPARE_STRUCTURES 상한까지)의 구조 정렬.

  • 방법: tm-align, fatcat-rigid, fatcat-flexible

  • reference: first는 모든 구조를 첫 번째 구조에 정렬합니다; reference: all_pairs는 전체 쌍별 행렬을 계산합니다

  • 선택적 구조별 chain은 정렬을 단일 체인으로 제한합니다

  • structures[]에 반복된 구조는 한 번만 비교됩니다 — 반복은 자기 정렬과 대칭 쌍만 추가할 뿐이며, 재개 메커니즘이 원본과 구분할 수 없습니다

  • 각 쌍은 독립적인 비동기 작업으로, 동시성 상한과 쌍별 부분 성공으로 확장됩니다 — 예산이 소진될 때까지 계산 중인 쌍은 해당 작업 uuid와 함께 status: computing을 반환하고, 실패한 쌍은 다른 쌍에 영향을 주지 않고 해당 행만 저하시킵니다

  • 이전 응답의 pairs[]에서 복사한 일치하는 { a, b, uuid } 항목을 resume[]에 포함하여 다시 호출하면 재제출 대신 계산 중인 쌍의 작업을 폴링합니다

  • 쌍별로 TM-score, RMSD, 정렬된 잔기 수를 반환하며, modeledResiduescoverage도 포함합니다 — 각각 [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 분석은 NMR 항목을 포함하지 않으며, methodresolution 모두 계산 모델을 포함하지 않습니다)


protein_get_annotations

단백질의 서열 및 기능 주석.

  • UniProt 기능(도메인, 결합 부위, PTM) 및 자연 서열 변이

  • GO 용어가 포함된 InterPro 도메인/패밀리 소속(Pfam, PROSITE, …)

  • UniProt 접근 번호를 직접 제공하거나 PDB ID를 제공할 수 있습니다 — 구조의 서열 교차 참조를 통해 UniProt 접근 번호로 해석됩니다

  • 다중 체인 PDB 항목은 여러 접근 번호에 매핑될 수 있습니다; 기본값은 결정론적 최저 저자 체인 선택이며, 대안은 ambiguity 아래에 나열됩니다. 특정 체인을 선택하려면 chain(저자 체인 ID, 예: A)을 전달하세요

  • include는 가져올 주석 클래스를 한정합니다: features, domains, variants, 또는 all

  • 모든 응답은 업스트림 데이터 라이선스와 인용을 명시하는 attribution 블록을 포함합니다 (업스트림 데이터 라이선스 참조)

Related MCP server: UniProt MCP Server

리소스

유형

이름

설명

리소스

pdb://{entry_id}

PDB 항목의 실험 구조 요약 — 제목, 방법, 해상도, 생물체, 체인, 결합 리간드.

리소스

af://{uniprot}

AlphaFold DB의 UniProt 접근 번호에 대한 예측 구조 요약 — 평균 pLDDT, 신뢰 구간 비율, 모델 URL, 버전.

모든 리소스 데이터는 도구를 통해서도 접근할 수 있습니다 — pdb://{entry_id}source: experimental에 대한 protein_get_structure를 미러링하고, af://{uniprot}source: predicted에 대한 그것을 미러링합니다. 많은 MCP 클라이언트는 도구 전용이며 리소스를 표시하지 않습니다; 요약은 도구를 통해 계속 접근할 수 있습니다.

기능

@cyanheads/mcp-ts-core 기반으로 구축:

  • 선언적 도구 및 리소스 정의 — 프리미티브당 단일 파일, 프레임워크가 등록 및 검증 처리

  • 통합 오류 처리 — 핸들러가 throw하면 프레임워크가 포착, 분류, 포맷

  • 플러그형 인증: 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)을 반환하며, 각각 실행 가능한 복구 텍스트 포함

  • 판별된 출력 계약 — 타입화된 sourcestatus 유니온, 재개 티켓이 있는 computing 결과, 예산 초과 개요를 통해 호출자가 문자열 파싱이 아닌 데이터로 분기 가능

시작하기

공개 호스팅 인스턴스

공개 인스턴스는 https://protein.caseyjhand.com/mcp에서 사용 가능 — 설치 불필요. Streamable HTTP를 통해 모든 MCP 클라이언트를 연결:

{
  "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는 모두 공개이며 키 없이 사용 가능합니다.

설치

  1. 저장소 클론:

git clone https://github.com/cyanheads/protein-mcp-server.git
  1. 디렉터리로 이동:

cd protein-mcp-server
  1. 의존성 설치:

bun install

구성

모든 업스트림 제공자는 키가 없으므로 서버는 구성 없이 바로 실행됩니다. 아래의 모든 변수는 선택 사항입니다.

변수

설명

기본값

PROTEIN_ASYNC_POLL_TIMEOUT_MS

computing 결과를 반환하기 전에 비동기 작업(정렬 / Foldseek)을 폴링하는 최대 벽시계 시간.

30000

PROTEIN_MAX_BATCH_IDS

한 배치에서 protein_get_structure가 수락하는 ID 상한(1–100).

25

PROTEIN_MAX_COMPARE_STRUCTURES

protein_compare_structures 호출당 구조 수 상한(2–25).

10

PROTEIN_FACET_BUCKET_CAP

protein_analyze_collection 차원당 버킷 기본 상한(1–500).

50

PROTEIN_FANOUT_CONCURRENCY

ID별 / 쌍별 팬아웃을 위한 최대 동시 업스트림 요청 수(1–16).

5

RCSB_SEARCH_BASE_URL

RCSB Search API v2의 기본 URL.

https://search.rcsb.org

ALPHAFOLD_BASE_URL

AlphaFold 단백질 구조 데이터베이스 API의 기본 URL.

https://alphafold.ebi.ac.uk

FOLDSEEK_BASE_URL

Foldseek 구조 유사성 검색 서비스의 기본 URL.

https://search.foldseek.com

MCP_TRANSPORT_TYPE

전송: stdio 또는 http.

stdio

MCP_HTTP_PORT

HTTP 서버 포트.

3010

MCP_AUTH_MODE

인증 모드: none, jwt, 또는 oauth.

none

MCP_LOG_LEVEL

로그 수준(RFC 5424).

info

OTEL_ENABLED

OpenTelemetry 계측 활성화.

false

제공자 기본 URL 재정의 및 튜닝 제한의 전체 목록은 .env.example를 참조하세요.

서버 실행

로컬 개발

  • 빌드 및 실행:

    # 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-server

Dockerfile은 기본적으로 HTTP 전송, 무상태 세션 모드로 설정되며 /var/log/protein-mcp-server에 로그를 기록합니다. OpenTelemetry 피어 의존성은 기본적으로 설치됩니다 — 생략하려면 --build-arg OTEL_ENABLED=false로 빌드하세요.

프로젝트 구조

디렉터리

용도

src/index.ts

createApp() 진입점 — 도구/리소스를 등록하고 제공자 서비스를 초기화.

src/config

Zod를 사용한 서버별 환경 변수 파싱 및 검증.

src/mcp-server/tools

도구 정의(*.tool.ts).

src/mcp-server/resources

리소스 정의(*.resource.ts).

src/services

제공자 서비스 계층 — RCSB, AlphaFold, 3D-Beacons, UniProt, InterPro, Foldseek 및 공유 HTTP/식별자 헬퍼.

tests/

src/를 미러링하는 단위 및 통합 테스트.

개발 가이드

개발 지침 및 아키텍처 규칙은 CLAUDE.md/AGENTS.md를 참조하세요. 요약:

  • 핸들러는 throw하고 프레임워크가 포착 — 도구 로직에 try/catch 없음

  • 요청 범위 로깅에는 ctx.log, 테넌트 범위 스토리지에는 ctx.state 사용

  • src/mcp-server/*/definitions/index.ts의 배럴을 통해 새 도구 및 리소스 등록

  • 외부 API 호출 래핑: 원시 검증 → 도메인 타입으로 정규화 → 출력 스키마 반환; 누락된 필드를 임의로 생성하지 않음

기여

이슈 및 풀 리퀘스트를 환영합니다. 제출 전에 검사 및 테스트를 실행하세요:

bun run devcheck
bun run test

업스트림 데이터 라이선스

구조 및 주석 데이터는 각각 자체 라이선스가 적용되는 공개 업스트림 데이터베이스에서 제공됩니다. protein_get_structureprotein_get_annotations는 모든 응답에 attribution 블록을 포함합니다 — 해당 특정 응답에 기여한 각 소스의 라이선스, 인용, 홈페이지 — 따라서 저작자 표시 의무는 여기만이 아니라 다운스트림 소비자에게 데이터와 함께 전달됩니다. CC BY / CC BY-SA 소스는 재배포 시 저작자 표시가 필요합니다. CC0 소스는 인용만 필요합니다(저작자 표시 권장, 필수 아님).

소스

기여 대상

라이선스

RCSB PDB

protein_get_structure — 실험 레코드

CC0 1.0 Universal

AlphaFold DB

protein_get_structure — 예측 모델

CC BY 4.0

ModelArchive

protein_get_structureMA_* 계산 모델

CC BY 4.0

SWISS-MODEL

protein_get_structurebest_available 모델

CC BY-SA 4.0

BFVD

protein_get_structurebest_available 모델

CC BY 4.0

UniProt

protein_get_annotations

CC BY 4.0

InterPro

protein_get_annotations — 도메인/패밀리 데이터

CC0 1.0 Universal

GO

protein_get_annotations — GO 용어

CC BY 4.0

best_available3D-Beacons를 통해 예측 모델을 통합하므로 attribution 블록은 실제 기여 제공자(AlphaFold DB, SWISS-MODEL, BFVD, …)를 표시합니다. 큐레이션된 라이선스 항목이 없는 제공자는 3D-Beacons로 연결되는 See provider terms 폴백을 사용하며 임의 생성된 라이선스가 아닙니다. InterPro 자체의 도메인/패밀리 분류는 CC0입니다. 함께 전달되는 GO 용어는 별도로 CC BY 4.0이므로 각각 실제로 기여할 때만 독립적으로 표시됩니다. 각 소스의 전체 인용은 관련 도구 응답의 attribution 블록에 포함됩니다. 이는 업스트림 데이터 라이선스를 다룹니다 — 서버 자체 코드는 별도로 라이선스가 적용됩니다(라이선스 참조).

라이선스

Apache-2.0 — 자세한 내용은 LICENSE를 참조하세요.

Maintenance

ActivityActive
ResponsivenessResponsive

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A 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.
    2
    18
  • F
    license
    A
    quality
    F
    maintenance
    A 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.
    5
    25

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

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