Mirobody
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
作者提供的说明(英文原文)
Link compounds to protein targets, rank bioactivity, and look up drug mechanisms and indications.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
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你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://chembl.caseyjhand.com/mcp打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 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"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http chembl https://chembl.caseyjhand.com/mcpclaude 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运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"chembl": {
"url": "https://chembl.caseyjhand.com/mcp"
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"chembl": {
"type": "http",
"url": "https://chembl.caseyjhand.com/mcp"
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://chembl.caseyjhand.com/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
CANVAS_PROVIDER_TYPE envCHEMBL_API_BASE_URL envCHEMBL_REQUEST_TIMEOUT_MS envCHEMBL_MAX_PAGE_SIZE envCHEMBL_DEFAULT_LIMIT envCHEMBL_MAX_SPILL_ROWS envCHEMBL_MAX_CONCURRENT_PAGES envCHEMBL_SPILL_DEADLINE_MS envCHEMBL_DATAFRAME_DROP_ENABLED envMCP_LOG_LEVEL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
工具名称和描述与服务器在 2026年11月7日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
chembl_search_moleculesDiscovery 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_bioactivitiesThe 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_targetsResolve 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_infoPharmacology 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_assayAssay 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_queryRun 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_describeList 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_
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 cyanheads 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 215 毫秒内响应(HTTP 200)
无需登录
已读取 7 个工具描述,未发现针对 AI 的隐藏指令
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(0.5.0)于10天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Mirobody, FHIR MCP Server, Google Health MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
@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
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.
| Tool | Description | ||
|---|---|---|---|
chembl_search_molecules | Find compounds by name / ChEMBL ID / InChIKey, or run a structure search (exact \ | similarity \ | substructure) from a SMILES. |
chembl_get_bioactivities | The 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_targets | Resolve a protein / gene symbol / UniProt accession to the ChEMBL target ID chembl_get_bioactivities needs. | ||
chembl_get_drug_info | Drug 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_assay | Assay provenance behind a bioactivity row — type, target, organism, and ChEMBL's 1–9 confidence score. | ||
chembl_dataframe_query | Run a read-only SQL SELECT over the bioactivity rows staged on a canvas — rank, group, dedupe, aggregate across the full set. | ||
chembl_dataframe_describe | List the tables and columns staged on a canvas, so you can write correct SQL before querying. | ||
chembl_dataframe_drop | Drop 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. |
| Resource | Description |
|---|---|
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.
| Skill | Description |
|---|---|
chembl-guide | Gates 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. |
chembl_search_molecules toolsearch_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)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 outagemax_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 modesparent_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 measurementsnextCursor / 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 noticetotalCountCapped: true with a notice that at least that many match and the rest are out of reach — narrow the query to get under itmolecule_chembl_id into chembl_get_bioactivities or chembl_get_drug_infochembl_get_bioactivities toolmolecule_chembl_id or target_chembl_id; supplying both narrows to that compound–target pair — neither is a missing_filter errorinclude_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"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 filterstandard_type (IC50/Ki/EC50/…), pchembl_value_min, assay_type, organism, and variant; ranked on pchembl_value — comparable only within one standard_typeassay_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"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 citationpotency_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 viewsnumber | null at the service boundary — a missing potency reads as null, never 0bioactivities / bioactivities_null_potency); the canvas is on by default, and CANVAS_PROVIDER_TYPE=none turns it offCHEMBL_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)limit (default 25) regardless of spill status; a limit above 1,000 is served at 1,000, with a noticecanvas_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_exhaustedcanvas_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 enabledchembl_search_targets toolaccession (UniProt, e.g. P00533), gene_symbol, or query (free-text); narrow with organism and target_type — none supplied is a missing_input erroruniprot/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-insensitivelynextCursor / cursor, the same contract as chembl_search_molecules, limit clamp includedtarget_chembl_id into chembl_get_bioactivitieschembl_get_drug_info toolmolecule_chembl_id (any case) or the molecule's standard InChIKey; ret只显示了开头部分;其余内容请在仓库中阅读