protein-mcp-server
Servidor público alojado: https://protein.caseyjhand.com/mcp
Herramientas
Siete herramientas que abarcan el arco de la investigación estructural — descubrir, obtener, encontrar homólogos, rastrear ligandos, comparar, perfilar el corpus y anotar — sobre estructuras experimentales (PDB) y predichas (AlphaFold) desde una única superficie:
Herramienta | Descripción |
| Busca estructuras experimentales y predichas por texto libre, secuencia o filtros de organismo/método/resolución, con desgloses por facetas opcionales. |
| Obtiene metadatos y URL de archivos de coordenadas por ID — experimental (PDB), predicho (AlphaFold) o el mejor disponible — con éxito parcial por lotes e inclusión opcional de coordenadas. |
| Encuentra homólogos de secuencia (RCSB mmseqs2) u homólogos de plegamiento (Foldseek) a partir de una secuencia, un ID de PDB o un acceso de UniProt. |
| Resuelve nombres/fórmulas de ligandos a IDs de componentes, encuentra estructuras que contienen un ligando o mapea residuos del sitio de unión. |
| Alinea estructuralmente múltiples estructuras (TM-align / jFATCAT) respecto a una referencia o como matriz completa por pares. |
| Perfila el PDB en distribuciones y tendencias con facetas del lado del servidor — recuentos, histogramas, cronologías y tablas cruzadas. |
| Obtiene características de UniProt y variantes naturales, además de membresías de dominios/familias de InterPro con términos GO. |
protein_search_structures
Búsqueda federada en estructuras experimentales (PDB) y predichas (modelos computados) mediante RCSB Search v2.
Filtros de texto libre, secuencia de proteína (activa una búsqueda de similitud mmseqs2) y organismo / método / resolución
content_typelimita la búsqueda aexperimental,predictedoall— el valor predeterminadoalles una unión genuina de ambos universos, por lo que los modelos computados aparecen junto a las entradas de PDBCada resultado indica su
source; los resultados experimentales se enriquecen con título, método, resolución y organismo, mientras que los modelos computados llevan el acceso de UniProt extraído de su IDLas
facetsopcionales devuelven un desglose por método / organismo / año de publicación junto con los resultados sin llamadas adicionales, y cada una informa de cuántas coincidencias no tienen valor para esa dimensión; cada dimensión puede aparecer una sola vezEncadena los IDs de los resultados directamente en
protein_get_structure
protein_get_structure
Obtiene estructuras con metadatos y URL de archivos de coordenadas, resolviendo entre proveedores mediante source.
source: experimentalacepta IDs de entradas de PDB, agrupados en una única llamada GraphQL de RCSB; también resuelve los IDs de modelos computados que devuelve la búsqueda (AF_*/MA_*), que vuelven comosource: predictedatribuidos a su proveedor de modeladosource: predictedacepta accesos de UniProt y devuelve el modelo AlphaFold con la confianza pLDDT/PAEsource: best_availableacepta accesos de UniProt y devuelve el mejor modelo federado (experimental si existe, si no, la mejor predicción)Éxito parcial por ID — los IDs no resueltos se listan en
failed[], no como error a nivel de loteinclude_coordsincluye el contenido de coordenadas; cuando un lote supera el presupuesto de respuesta, devuelve un esquema de tamaño por estructura, para que puedas volver a llamar consections: [ids]para estructuras concretasCada respuesta incluye un bloque
attributionque nombra las licencias y citas de los datos de origen (consulta Licencias de datos de origen)
protein_find_similar
Encuentra proteínas relacionadas estructural o evolutivamente, por secuencia o por plegamiento.
by: sequenceejecuta una búsqueda síncrona mmseqs2 de RCSB;by: structureejecuta una búsqueda asíncrona de Foldseek contra bases de datos experimentales y predichasConsulta desde una secuencia de una letra sin procesar, un ID de PDB o un acceso de UniProt
Los objetivos de Foldseek son por defecto
pdb100+afdb50; se pueden sobrescribir mediantedatabases(p. ej.afdb-swissprot,BFVD)Los trabajos asíncronos que superan el presupuesto de sondeo devuelven
status: computingcon unticketId— vuelve a llamar conticket_idestablecido a ese valor para sondear el mismo trabajo en lugar de reenviarloCada resultado indica el motor y la base de datos de origen de la que proviene
protein_track_ligands
Descubrimiento de ligandos y análisis de sitios de unión en todo el PDB.
mode: find_ligandresuelve un nombre o fórmula a IDs de componentes químicos con fórmula, peso, SMILES e InChIKeymode: structures_with_liganddevuelve entradas de PDB que contienen un ligando por ID de componente exactomode: binding_sitedevuelve los residuos de proteína que recubren la cavidad de un ligando en una estructura, con distancias de contactoLos sitios de unión son solo experimentales — se calculan a partir de coordenadas depositadas (los modelos predichos no llevan ligandos unidos)
protein_compare_structures
Alineación estructural de múltiples estructuras (hasta el límite configurado PROTEIN_MAX_COMPARE_STRUCTURES) mediante el servicio de Comparación Estructural de RCSB.
Métodos:
tm-align,fatcat-rigid,fatcat-flexiblereference: firstalinea cada estructura con la primera;reference: all_pairscalcula la matriz completa por paresEl
chainopcional por estructura restringe la alineación a una única cadenaUna estructura repetida en
structures[]se compara una sola vez — la repetición solo añadiría una autoalineación y un par reflejado, que el mecanismo de reanudación no puede distinguir del originalCada par es un trabajo asíncrono independiente, distribuido con un límite de concurrencia y éxito parcial por par — un par que aún se está calculando cuando expira el presupuesto devuelve
status: computingcon suuuidde trabajo, y un par fallido degrada su fila sin hundir a los demásVuelve a llamar con una entrada
{ a, b, uuid }coincidente enresume[](copiada depairs[]de una respuesta anterior) para sondear el trabajo de un par en cálculo en lugar de reenviarloDevuelve TM-score, RMSD y el recuento de residuos alineados por par, además de
modeledResiduesycoverage— cada uno una tupla[a, b], con coverage como porcentaje de 0 a 100 del recuento propio de residuos modelados de esa estructura
protein_analyze_collection
Perfila el PDB en distribuciones y tendencias sobre una consulta de alcance opcional — respaldado por el motor de facetas del lado del servidor de RCSB (una llamada, buckets compactos, sin extracción de filas).
Agrupa por
method,organism,polymer_type,resolution,release_yearomolecular_weightUna dimensión
group_bypara un desglose, o dos dimensiones distintas para una tabla cruzada (la primera anida a la segunda); una dimensión repetida se rechazaintervalestablece el ancho de bin para histogramas de valores o el período para histogramas de fechas (year/month/quarter)Acota con un
queryde texto libre,organism,methodomax_resolution;content_typeselecciona el universo de estructurasbucket_limitlimita los buckets por nivel de dimensión, no por respuesta — una tabla cruzada lo aplica por separado a la dimensión principal y al hijo anidado dentro de cada bucket principal, por lo que se devuelven hastabucket_limit × (1 + bucket_limit)buckets. Cada nivel señala su propia truncación, ybucketsReturnedindica el total realizadoCada dimensión informa de
missingValueCount— coincidencias dentro del alcance que no tienen valor para ese atributo y que, por tanto, no caen en ningún bucket (un desglose porresolutionno cubre las entradas de NMR, y nimethodniresolutioncubren los modelos computados)
protein_get_annotations
Anotación de secuencia y funcional para una proteína.
Características de UniProt (dominios, sitios de unión, PTM) y variantes naturales de secuencia
Membresías de dominios/familias de InterPro (Pfam, PROSITE, …) con términos GO asociados
Proporciona un acceso de UniProt directamente, o un ID de PDB — resuelto a un acceso de UniProt mediante la referencia cruzada de secuencia de la estructura
Una entrada de PDB con varias cadenas puede asignarse a varios accesos; el valor predeterminado es la elección determinista de la cadena de autor más baja, con las alternativas listadas en
ambiguity. Pasachain(un ID de cadena de autor, p. ej.A) para seleccionar una concretaincludelimita qué clases de anotación se obtienen:features,domains,variantsoallCada respuesta incluye un bloque
attributionque nombra las licencias y citas de los datos de origen (consulta Licencias de datos de origen)
Related MCP server: UniProt MCP Server
Recursos
Tipo | Nombre | Descripción |
Recurso |
| Resumen de estructura experimental para una entrada de PDB — título, método, resolución, organismo, cadenas y ligandos unidos. |
Recurso |
| Resumen de estructura predicha para un acceso de UniProt de AlphaFold DB — pLDDT medio, fracciones de bandas de confianza, URL de modelos y versión. |
Todos los datos de recursos también son accesibles mediante las herramientas — pdb://{entry_id} refleja protein_get_structure para source: experimental, y af://{uniprot} lo refleja para source: predicted. Muchos clientes MCP son solo de herramientas y no muestran recursos; los resúmenes siguen siendo accesibles a través de las herramientas.
Características
Construido sobre @cyanheads/mcp-ts-core:
Definiciones declarativas de herramientas y recursos: un archivo por primitiva, el framework se encarga del registro y la validación
Manejo de errores unificado: los handlers lanzan, el framework captura, clasifica y formatea
Autenticación conectable:
none,jwt,oauthBackends de almacenamiento intercambiables:
in-memory,filesystem,Supabase,Cloudflare KV/R2/D1Registro estructurado con trazado OpenTelemetry opcional
Transportes STDIO y HTTP Streamable
Específico de proteínas:
Una superficie federada sobre estructuras experimentales (PDB) y predichas (AlphaFold / 3D-Beacons): búsqueda, obtención y comparación tratan ambos universos por igual
Sin claves en todos los proveedores: RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro y Foldseek, sin necesidad de aprovisionar claves API
Análisis de corpus ejecutado en el servidor con el motor de facetas de RCSB: distribuciones, histogramas y tablas cruzadas en una sola llamada, sin extracción de filas ni espacio de trabajo SQL
Alineamiento asíncrono y trabajos de Foldseek que se consultan dentro de un presupuesto limitado y devuelven un ticket de trabajo (
ticketId/uuidpor par) en lugar de bloquear: vuelve a llamar conticket_ido una entradaresume[]para consultar el mismo trabajo en lugar de reenviarlo
Salida amigable para agentes:
Procedencia en cada respuesta: cada resultado lleva un
source(experimental/predicted), el motor y la base de datos que lo produjeron, y ecos de consulta efectiva / recuento total para que los agentes puedan razonar sobre la coberturaFalla parcial elegante: las obtenciones por lotes y las comparaciones por pares devuelven filas por elemento (
failed[],statuspor par) en lugar de fallar toda la solicitud, cada una con texto de recuperación accionableContratos de salida discriminados: uniones tipadas de
sourceystatus, resultadoscomputingcon tickets de reanudación y esquemas de desbordamiento de presupuesto permiten a los llamadores ramificar según los datos, no según el análisis de cadenas
Primeros pasos
Instancia pública alojada
Hay una instancia pública disponible en https://protein.caseyjhand.com/mcp — no requiere instalación. Apunta cualquier cliente MCP a ella mediante HTTP Streamable:
{
"mcpServers": {
"protein": {
"type": "streamable-http",
"url": "https://protein.caseyjhand.com/mcp"
}
}
}Autoalojado
Añade lo siguiente al archivo de configuración de tu cliente MCP. No se requiere clave API — todos los proveedores son sin clave.
{
"mcpServers": {
"protein-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/protein-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}O con npx (no se requiere 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"
}
}
}
}O con 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"]
}
}
}Para HTTP Streamable, configura el transporte e inicia el servidor:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpRequisitos previos
Bun v1.3.2 o superior (o Node.js v24+).
Sin cuentas ni claves API: RCSB, AlphaFold DB, 3D-Beacons, UniProt, InterPro y Foldseek son todos públicos y sin clave.
Instalación
Clona el repositorio:
git clone https://github.com/cyanheads/protein-mcp-server.gitNavega al directorio:
cd protein-mcp-serverInstala las dependencias:
bun installConfiguración
Todos los proveedores son sin clave, por lo que el servidor funciona sin configuración. Cada variable a continuación es opcional.
Variable | Descripción | Valor por defecto |
| Tiempo máximo de reloj para consultar un trabajo asíncrono (alineamiento / Foldseek) antes de devolver un resultado |
|
| Límite de IDs aceptados por |
|
| Límite de estructuras por llamada a |
|
| Límite predeterminado de cubos por dimensión en |
|
| Máximo de solicitudes concurrentes ascendentes para fan-out por ID / por par (1–16). |
|
| URL base para la API de búsqueda RCSB v2. |
|
| URL base para la API de la base de datos de estructuras de proteínas AlphaFold. |
|
| URL base para el servicio de búsqueda de similitud estructural Foldseek. |
|
| Transporte: |
|
| Puerto para el servidor HTTP. |
|
| Modo de autenticación: |
|
| Nivel de registro (RFC 5424). |
|
| Habilitar instrumentación OpenTelemetry. |
|
Consulta .env.example para la lista completa de anulaciones de URL base de proveedores y límites de ajuste.
Ejecutar el servidor
Desarrollo local
Compilar y ejecutar:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:httpEjecutar comprobaciones y pruebas:
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-serverEl Dockerfile usa por defecto transporte HTTP, modo de sesión sin estado y registra en /var/log/protein-mcp-server. Las dependencias opcionales de OpenTelemetry se instalan por defecto: compila con --build-arg OTEL_ENABLED=false para omitirlas.
Estructura del proyecto
Directorio | Propósito |
| Punto de entrada |
| Análisis y validación de variables de entorno específicas del servidor con Zod. |
| Definiciones de herramientas ( |
| Definiciones de recursos ( |
| Capa de servicios de proveedores: RCSB, AlphaFold, 3D-Beacons, UniProt, InterPro, Foldseek y ayudantes compartidos de HTTP/identificadores. |
| Pruebas unitarias y de integración que reflejan |
Guía de desarrollo
Consulta CLAUDE.md/AGENTS.md para las pautas de desarrollo y reglas arquitectónicas. La versión corta:
Los handlers lanzan, el framework captura: sin
try/catchen la lógica de herramientasUsa
ctx.logpara registro con ámbito de solicitud,ctx.statepara almacenamiento con ámbito de tenantRegistra nuevas herramientas y recursos mediante los barriles en
src/mcp-server/*/definitions/index.tsEnvuelve las llamadas a API externas: valida datos sin procesar → normaliza al tipo de dominio → devuelve el esquema de salida; nunca inventes campos faltantes
Contribuir
Las incidencias y solicitudes de extracción son bienvenidas. Ejecuta comprobaciones y pruebas antes de enviar:
bun run devcheck
bun run testLicencia de datos ascendentes
Los datos de estructura y anotación provienen de bases de datos públicas ascendentes, cada una bajo su propia licencia. protein_get_structure y protein_get_annotations llevan un bloque attribution en cada respuesta: la licencia, la cita y la página de inicio de cada fuente que contribuyó a esa respuesta específica, de modo que la obligación de atribución viaja con los datos a los consumidores posteriores en lugar de residir solo aquí. Las fuentes CC BY / CC BY-SA requieren atribución en la redistribución; las fuentes CC0 son solo cita (la atribución se recomienda, no se exige).
Fuente | Contribuye a | Licencia |
| 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 federated predicted models through 3D-Beacons, so the attribution block credits the actual contributing provider (AlphaFold DB, SWISS-MODEL, BFVD, …); a provider without a curated license entry carries a See provider terms fallback pointing back to 3D-Beacons rather than a fabricated license. InterPro's own domain/family classifications are CC0; the GO terms carried alongside them are separately CC BY 4.0, so each is credited independently only when it actually contributes. Full citations for each source travel in the attribution block of the relevant tool responses. This covers upstream data licensing — the server's own code is licensed separately (see License).
Licencia
Apache-2.0 — consulta LICENSE para más detalles.
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