Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Chembl MCP Server

de cyanheadsversión 0.5.0i★ –iComputadora o nube
Nombre en el registroio.github.cyanheads/chembl-mcp-server

Instalar

Resumen

Descripción del creador (original en inglés)

Link compounds to protein targets, rank bioactivity, and look up drug mechanisms and indications.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 3 de 3 superadas
  • Se ejecuta en el servidor del creador: lo que le pidas pasa por su servidor.
  • Puede hacer 7 cosas (herramientas) chembl_search_molecules, chembl_get_bioactivities, chembl_search_targets, chembl_get_drug_info …
  • Debes completar tú: CANVAS_PROVIDER_TYPE, CHEMBL_API_BASE_URL, CHEMBL_REQUEST_TIMEOUT_MS, CHEMBL_MAX_PAGE_SIZE, CHEMBL_DEFAULT_LIMIT, CHEMBL_MAX_SPILL_ROWS, CHEMBL_MAX_CONCURRENT_PAGES, CHEMBL_SPILL_DEADLINE_MS, CHEMBL_DATAFRAME_DROP_ENABLED, MCP_LOG_LEVEL

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Funciona en Claude para web, escritorio y móvil:

  1. Abre Settings → Connectors
  2. Presiona Add custom connector
  3. Pega la dirección de abajo y presiona Add
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Add2https://…3
https://chembl.caseyjhand.com/mcp

O ejecútalo en tu computadora

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "chembl": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/chembl-mcp-server"
      ],
      "env": {
        "CANVAS_PROVIDER_TYPE": "your-value",
        "CHEMBL_API_BASE_URL": "your-value",
        "CHEMBL_REQUEST_TIMEOUT_MS": "your-value",
        "CHEMBL_MAX_PAGE_SIZE": "your-value",
        "CHEMBL_DEFAULT_LIMIT": "your-value",
        "CHEMBL_MAX_SPILL_ROWS": "your-value",
        "CHEMBL_MAX_CONCURRENT_PAGES": "your-value",
        "CHEMBL_SPILL_DEADLINE_MS": "your-value",
        "CHEMBL_DATAFRAME_DROP_ENABLED": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add --transport http chembl https://chembl.caseyjhand.com/mcp

O ejecútalo en tu computadora

claude mcp add chembl --env CANVAS_PROVIDER_TYPE=your-value --env CHEMBL_API_BASE_URL=your-value --env CHEMBL_REQUEST_TIMEOUT_MS=your-value --env CHEMBL_MAX_PAGE_SIZE=your-value --env CHEMBL_DEFAULT_LIMIT=your-value --env CHEMBL_MAX_SPILL_ROWS=your-value --env CHEMBL_MAX_CONCURRENT_PAGES=your-value --env CHEMBL_SPILL_DEADLINE_MS=your-value --env CHEMBL_DATAFRAME_DROP_ENABLED=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/chembl-mcp-server

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "chembl": {
      "url": "https://chembl.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "chembl": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/chembl-mcp-server"
      ],
      "env": {
        "CANVAS_PROVIDER_TYPE": "your-value",
        "CHEMBL_API_BASE_URL": "your-value",
        "CHEMBL_REQUEST_TIMEOUT_MS": "your-value",
        "CHEMBL_MAX_PAGE_SIZE": "your-value",
        "CHEMBL_DEFAULT_LIMIT": "your-value",
        "CHEMBL_MAX_SPILL_ROWS": "your-value",
        "CHEMBL_MAX_CONCURRENT_PAGES": "your-value",
        "CHEMBL_SPILL_DEADLINE_MS": "your-value",
        "CHEMBL_DATAFRAME_DROP_ENABLED": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "chembl": {
      "type": "http",
      "url": "https://chembl.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "chembl": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/chembl-mcp-server"
      ],
      "env": {
        "CANVAS_PROVIDER_TYPE": "your-value",
        "CHEMBL_API_BASE_URL": "your-value",
        "CHEMBL_REQUEST_TIMEOUT_MS": "your-value",
        "CHEMBL_MAX_PAGE_SIZE": "your-value",
        "CHEMBL_DEFAULT_LIMIT": "your-value",
        "CHEMBL_MAX_SPILL_ROWS": "your-value",
        "CHEMBL_MAX_CONCURRENT_PAGES": "your-value",
        "CHEMBL_SPILL_DEADLINE_MS": "your-value",
        "CHEMBL_DATAFRAME_DROP_ENABLED": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

ChatGPT solo se conecta a servidores en internet:

  1. Abre ChatGPT en la web → Settings → Connectors (Apps)
  2. Presiona Create o Add (en algunos planes primero hay que activar Developer mode en Advanced)
  3. Pega la dirección de abajo, ponle un nombre y guarda
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Create2https://…3
https://chembl.caseyjhand.com/mcp

Los nombres de los menús pueden variar un poco según el plan y con el tiempo.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • CANVAS_PROVIDER_TYPE env
    DataCanvas provider for the bioactivity spill and the chembl_dataframe_* SQL tools; DuckDB is the default. Set to 'none' to disable it: large bioactivity sets then inline a preview but never spill.
  • CHEMBL_API_BASE_URL env
    Base URL for the ChEMBL REST data API. Override for a private mirror or pinned host.
  • CHEMBL_REQUEST_TIMEOUT_MS env
    Per-attempt timeout in milliseconds for an upstream ChEMBL request, capped by what is left of the call's time budget (45 s for most calls, CHEMBL_SPILL_DEADLINE_MS for a bioactivity spill).
  • CHEMBL_MAX_PAGE_SIZE env
    Rows per upstream ChEMBL page (max 1000). The bioactivity spill walks pages of this size; an inline bioactivity page requests its limit, capped at this size.
  • CHEMBL_DEFAULT_LIMIT env
    Default result limit applied when callers omit it.
  • CHEMBL_MAX_SPILL_ROWS env
    Ceiling on rows chembl_get_bioactivities stages to a DataCanvas table, and so on the upstream page walk behind it. Over the cap the response reports truncated: true and truncated_by: "row_cap".
  • CHEMBL_MAX_CONCURRENT_PAGES env
    Most chembl_get_bioactivities spill-page requests in flight at once (1–6), shared by every call on the server.
  • CHEMBL_SPILL_DEADLINE_MS env
    Time budget in milliseconds for one chembl_get_bioactivities spill, its count and page walk (10000–600000). At expiry the rows fetched so far stage with truncated: true and truncated_by: "time_budget…
  • CHEMBL_DATAFRAME_DROP_ENABLED env
    Set to 'true' to register the opt-in chembl_dataframe_drop tool (absent from tools/list when off).
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Nombres y descripciones de las herramientas tal como los informó el servidor el 7 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.

  • chembl_search_molecules

    Discovery entry point for compounds. Find by name / ChEMBL ID / InChIKey with the default search_type=name (supply query), or run a structure search with search_type exact | similarity | substructure (supply structure as a SMILES). At least one of query or structure is required,

  • chembl_get_bioactivities

    The flagship compound↔target bioactivity bridge: measurements for a molecule (target deconvolution / selectivity), a target (lead finding), or both together (how potently one compound hits one target). Supply at least one of molecule_chembl_id (from chembl_search_molecules) or ta

  • chembl_search_targets

    Resolve a protein/gene/UniProt accession to the ChEMBL target ID that chembl_get_bioactivities needs for the target→leads workflow. Supply at least one of accession (UniProt, e.g. P00533), gene_symbol (e.g. EGFR), or query (free-text name); filter further by organism and target_t

  • chembl_get_drug_info

    Pharmacology for a drug (molecule): mechanism(s) of action, the molecular target(s) it acts on, action type (inhibitor / agonist / …), first-approval year, and clinical indications with the max phase reached for each. Supply molecule_chembl_id (from chembl_search_molecules) — a p

  • chembl_get_assay

    Assay provenance behind a bioactivity row: description, type (binding / functional / ADMET / toxicity), the target it measures, organism, and ChEMBL's 1–9 confidence score (9 = direct assay on the protein target, lower = homologous or indirect). Supply assay_chembl_id from a chem

  • chembl_dataframe_query

    Run a read-only SQL SELECT over the bioactivity rows chembl_get_bioactivities staged on a canvas — rank, group, dedupe, and aggregate across the FULL set, not the inline preview. Reference each staged table by the name chembl_get_bioactivities returned — bioactivities for its pot

  • chembl_dataframe_describe

    List the tables and columns staged on a canvas by chembl_get_bioactivities — inspect before calling chembl_dataframe_query to write correct SQL. Returns each table with its row count, kind (table | view), and column names + types. Unavailable when the server sets CANVAS_PROVIDER_

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub cyanheads, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • ✓ Superada

    El endpoint responde

    Respondió en 215 ms (HTTP 200)

  • – No aplica

    Inicio de sesión con OAuth

    No hace falta iniciar sesión

  • ✓ Superada

    Sin instrucciones ocultas en las descripciones de herramientas

    Leímos 7 descripciones de herramientas y no encontramos instrucciones ocultas para la IA

Comparado con otros en Clínicas y saludi

  • Más estrellas que el 0% de los otros 1023 servidores de esta categoría
  • Publicado en el registro más recientemente que el 71% de los otros 1023 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 1023 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Chembl MCP Server?

Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.5.0) llegó al registro hace 10 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Mirobody, FHIR MCP Server, Google Health MCP

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Mirobody

de thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

Se ejecuta en tu computadora★ 1408Apache-2.0Actualizado hoy
Instalar

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

Se ejecuta en tu computadora★ 137Apache-2.0Actualizado hace 10 días
Instalar

Google Health MCP

de davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

Se ejecuta en tu computadora★ 79MITActualizado hace 4 meses
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

@cyanheads/chembl-mcp-server Link compounds to protein targets, rank bioactivity (IC50/Ki/EC50), and look up drug mechanisms and indications over ChEMBL via MCP. STDIO or Streamable HTTP. 7 Tools (+1 opt-in) • 2 Resources

Public Hosted Server: https://chembl.caseyjhand.com/mcp


Overview

Drug-discovery data from ChEMBL (EBI): the curated link between compounds, protein targets, and measured bioactivity (IC50/Ki/EC50), plus drug mechanisms and indications. Search compounds by name, ID, or structure, resolve targets, and rank the most potent measurements.

Tools
ToolDescription
chembl_search_moleculesFind compounds by name / ChEMBL ID / InChIKey, or run a structure search (exact \similarity \substructure) from a SMILES.
chembl_get_bioactivitiesThe flagship compound↔target bridge: bioactivity measurements for a molecule (or its whole family of forms), a target, or both (the compound×target pair), ranked on pchembl_value, or the measurements without one via potency_view. Large sets spill to a canvas.
chembl_search_targetsResolve a protein / gene symbol / UniProt accession to the ChEMBL target ID chembl_get_bioactivities needs.
chembl_get_drug_infoDrug pharmacology — mechanism(s) of action, molecular target(s), action type, first-approval year, and clinical indications, across the drug's salts and other alternate forms.
chembl_get_assayAssay provenance behind a bioactivity row — type, target, organism, and ChEMBL's 1–9 confidence score.
chembl_dataframe_queryRun a read-only SQL SELECT over the bioactivity rows staged on a canvas — rank, group, dedupe, aggregate across the full set.
chembl_dataframe_describeList the tables and columns staged on a canvas, so you can write correct SQL before querying.
chembl_dataframe_dropDrop a named staged table from a canvas. Opt-in via CHEMBL_DATAFRAME_DROP_ENABLED=true — absent from tools/list when off, since TTL already reclaims staged tables.
Resources
ResourceDescription
chembl://molecule/{chemblId}A molecule record by ChEMBL ID — the same shape a chembl_search_molecules row carries.
chembl://target/{chemblId}A target record by ChEMBL target ID — preferred name, type, organism, and component UniProt accessions + gene symbols.

All resource data is also reachable via the tools, so tool-only MCP clients lose nothing. There are no prompts — the canonical workflows are short tool chains an agent composes directly, and the cross-server chain guidance ships as server-level instructions instead.

Skills
SkillDescription
chembl-guideGates and workflows for the chembl_* tools: pinning a protein to its single-protein target, ranking leads without mixing mutants or salts, reading selectivity with the inactive results, and checking assay provenance and approval status. Served as skill://chembl-guide/SKILL.md; also ships in plugin installs, the .mcpb bundle, the npm package, and the Docker image.

Capability reference

chembl_search_molecules tool
  • Default search_type=name matches drug names, synonyms, ChEMBL IDs, and InChIKeys in one query; a query that is exactly a ChEMBL ID or InChIKey routes to ChEMBL's single-record lookup instead of the fuzzy text index (totalCount: 1)
  • Structure search via search_type: exact, similarity (Tanimoto ≥ similarity_threshold, integer 40–100, default 70), or substructure — supply structure as a SMILES; max_phase_min (name search only) restricts to compounds at or above a max clinical phase. A SMILES ChEMBL cannot parse fails a similarity or substructure search on the first request as invalid_structure, not as an outage
  • Every row carries max_phase, MW, AlogP, Lipinski rule-of-five violations, and QED; only search_type=similarity results carry a Tanimoto similarity percent — absent, not null, on other modes
  • Every row also carries parent_chembl_id, the parent of its family: ERLOTINIB HYDROCHLORIDE (CHEMBL1079742) names CHEMBL553, and a compound with no recorded hierarchy names itself. A salt can rank ahead of its parent while holding a small share of the family's measurements
  • Paginated via nextCursor / cursor, omitted (not null) on the last page — redeem a cursor with the same filters that minted it; a limit above 100 is served at 100, with a notice
  • ChEMBL stops counting and paging a name search at 10,000 matches and a substructure search at 30,000; a total at that ceiling comes back as totalCountCapped: true with a notice that at least that many match and the rest are out of reach — narrow the query to get under it
  • Chain molecule_chembl_id into chembl_get_bioactivities or chembl_get_drug_info

chembl_get_bioactivities tool
  • Supply at least one of molecule_chembl_id or target_chembl_id; supplying both narrows to that compound–target pair — neither is a missing_filter error
  • include_alternate_forms: true widens molecule_chembl_id to its family — the parent and every salt and other alternate form ChEMBL files under it (imatinib CHEMBL941: 4,878 measurements alone, 5,802 across its forms); a salt's ID reaches the same family, and each row keeps the form it was measured on. The count, both views, cursor pages, and the spill read the same family; re-send the flag with a cursor. Without molecule_chembl_id the flag is an alternate_forms_without_molecule error
  • IDs are matched in canonical form: "chembl941" and " CHEMBL941 " read as CHEMBL941, and a value that is no ChEMBL ID ("imatinib") fails with -32602 before any request, routing to the search tools — for molecule_chembl_id, when include_alternate_forms is off and the value goes straight to the filter
  • Filter by standard_type (IC50/Ki/EC50/…), pchembl_value_min, assay_type, organism, and variant; ranked on pchembl_value — comparable only within one standard_type
  • assay_type takes a code (B / F / A / T / P / U) or ChEMBL's name for it (binding, ADMET, …) in any case. standard_type matches exactly, case included — ChEMBL holds distinct types that differ only by case (Kd / KD) — and when nothing matches, the notice names a case variant ChEMBL records under the same filters ("ic50" → IC50)
  • variant separates wild-type from mutant potency: "wild_type" keeps the measurements that record no variant, and any other value matches the whole recorded variant case-insensitively ("T315I", "F508del", "L858R,T790M" in ChEMBL's order, "UNDEFINED MUTATION") — "L858R" alone does not match "L858R,T790M"
  • Each row carries activity_comment (e.g. Not Active, often the only result when no value was measured) and data_validity_comment (e.g. Outside typical range), the assay's assay_variant_mutation and assay_variant_accession, and the source document_chembl_id and document_year for citation
  • potency_view selects potency_ranked (default, measurements with a derivable pchembl_value) or null_potency (the excluded rows); pchembl_value_min with null_potency is a contradictory_potency_filter error, and totalCount spans both views
  • Numerics are coerced to number | null at the service boundary — a missing potency reads as null, never 0
  • Large sets spill to a DataCanvas table per view (bioactivities / bioactivities_null_potency); the canvas is on by default, and CANVAS_PROVIDER_TYPE=none turns it off
  • The spill fetches its pages CHEMBL_MAX_CONCURRENT_PAGES at a time (default 4) and stays inside a row cap, CHEMBL_MAX_SPILL_ROWS (default 50,000), and a time budget, CHEMBL_SPILL_DEADLINE_MS (default 45 s). When either bound stops it short of the view, the response reports truncated: true, staged_row_count, and truncated_by (row_cap or time_budget)
  • The inline preview is always capped at limit (default 25) regardless of spill status; a limit above 1,000 is served at 1,000, with a notice
  • A canvas is minted only when the view spills, so an inline fit holds no canvas; pass the returned canvas_id back and each later non-cursor call re-stages that view's table with its own rows — even when they fit inline or none match — replacing the prior rows, while the other view's table stays put. A spill replaces the table only once it succeeds, so one that fails or is cancelled leaves the prior rows. At the per-tenant canvas cap, a spill without canvas_id fails as canvas_capacity_exhausted
  • Whenever a call stages nothing (the canvas is disabled, or the view fit inline with no canvas_id), the view comes back a page at a time via nextCursor / cursor, omitted (not null) on the last page — redeem a cursor with the same filters and potency_view that minted it; a cursor page is served inline and never staged, even with the canvas enabled

chembl_search_targets tool
  • Supply at least one of accession (UniProt, e.g. P00533), gene_symbol, or query (free-text); narrow with organism and target_type — none supplied is a missing_input error
  • A UniProt accession is the most precise input — chain it from a uniprot/protein server. accession and target_type are matched uppercase, the form ChEMBL records ("p00533" reads as P00533, "single protein" as SINGLE PROTEIN); gene_symbol and organism already match case-insensitively
  • Each row carries target type, organism, and component UniProt accessions + gene symbols, flattened from ChEMBL's nested component synonyms
  • Paginated via nextCursor / cursor, the same contract as chembl_search_molecules, limit clamp included
  • Chain target_chembl_id into chembl_get_bioactivities

chembl_get_drug_info tool
  • Supply molecule_chembl_id (any case) or the molecule's standard InChIKey; ret

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx