@cyanheads/pubchem-mcp-server

中文文档
0.8.0发布于 2026/10/28Apache-2.0TypeScriptES Module近 30 天下载 4730

通过 MCP 搜索 PubChem 化学数据库,以了解化合物、特性、安全数据、生物活性、交叉参照和实体摘要。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.

中文使用文档
文档目录35 节
  1. 概览
  2. 工具
  3. 资源
  4. 技能
  5. 能力参考
  6. pubchem_search_compounds 工具
  7. pubchem_get_compound_details 工具
  8. pubchem_get_compound_image 工具
  9. pubchem_get_compound_3d_structure 工具
  10. pubchem_get_compound_xrefs 工具
  11. pubchem_get_compound_safety 工具
  12. pubchem_get_bioactivity 工具
  13. pubchem_get_compound_interactions 工具
  14. pubchem_search_assays 工具
  15. pubchem_get_summary 工具
  16. pubchem://compound/{cid} 资源
  17. pubchem://compound/{cid}/safety 资源
  18. pubchem://compound/{cid}/image 资源
  19. pubchem://compound/{cid}/xrefs 资源
  20. pubchem://compound/{cid}/bioactivity 资源
  21. pubchem://assay/{aid} 资源
  22. 特征
  23. 开始
  24. 公共托管实例
  25. 自有/当地
  26. 先决条件
  27. 安装
  28. 配置
  29. 运行服务器
  30. 地方发展
  31. 夹克
  32. 项目结构
  33. 发展指南
  34. 捐款
  35. 许可证

@cyanheads/pubchem-mcp-服务器

通过 MCP 搜索 PubChem 化学数据库,以了解化合物、特性、安全数据、生物活性、交叉参照和实体摘要。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.

10个工具 • 6个资源 • 1个技能

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概览

PubChem提供的化学化合物和生物测定. 以名称、公式或结构搜索化合物;获取特性、安全数据、生物活性、药物与食品的相互作用、分子目标和3D结构;并按生物目标找到生物测定.

工具

工具说明
pubchem_search_compounds按名称搜索化合物,SMILES,InChi,InChiKey,公式,子结构,上层结构,或2D相似性,或列出发现活性生物测定的化合物.
pubchem_get_compound_details获得物理化学性质,描述,同义词,药物相同性,由CID对化合物进行分类.
pubchem_get_compound_image用 CID 获取一个化合物的 二维结构图( PNG) .
pubchem_get_compound_3d_structure由 CID 获取一个化合物的3D同位素(原子坐标和债券),如解析的 JSON 或生 SDF .
pubchem_get_compound_xrefs获取外部数据库的交叉引用(PubMed,专利,基因,CAS和EC号码等).
pubchem_get_compound_safety通过CID(批量)获取一个或多个化合物的GHS危险分类和安全数据.
pubchem_get_bioactivity获得化合物的生物活性剖面:实验结果,目标,活性值,实验类型,并引用了PubMed ID;通过结果,分子目标,或实验类型过滤.
pubchem_get_compound_interactions获得一个化合物的药物和食物的相互作用 和分子目标 它的化验名称, 每一个有化验计数 和最强大的活性值.
pubchem_search_assays按生物目标(基因符号,蛋白质,基因ID,UniProt加入)查找生物测定.
pubchem_get_summary得到PubChem实体的总结:化验,基因,蛋白质,分类学.

资源

复合物和化验记录也作为URI的调制资源被曝光出,并以与工具相同的客户端方法作为后盾;许多MCP客户端都是只使用工具,从不表面资源.

资源说明
pubchem://compound/{cid}核心物理化学性质(JSON).
pubchem://compound/{cid}/safety全球统一制度危险分类.
pubchem://compound/{cid}/image2D结构图 (PNG).
pubchem://compound/{cid}/xrefs出自"外道对照"(JSON).
pubchem://compound/{cid}/bioactivity生物测定活性简介 (JSON).
pubchem://assay/{aid}BioAssay摘要(JSON).

技能

服务器发布代理技能, pubchem-guide,覆盖了门和标识链,工具描述不携带:盐 vs 母 CID,Gene ID和加入来自何处,基因符号,Gene ID,和加入搜索为何不同意,以及如何读取活性标签,强性值,以及GHS数据. 插件安装( Claude Code, Codex) 和 .mcpb 捆起它从 skills/,服务器也可以通过 MCP 作为 skill://pubchem-guide/SKILL.md。 。 。 .

能力参考

pubchem_search_compounds 工具

  • 6项搜索战略:标识符(identifierType + 键 identifiers;名称/MILES/InChi/InChiKey,每通电话25个,其余返回 unprocessed),公式(formula,希尔标记,可选 allowOtherElements),子结构/上层结构并有2D相似性(query + 键 queryType; 相似性阈值 70-100, 默认为 90), 或分析(aid; 化合物生物测定标记为活性,或每个化合物试验 activeOnly: false(中文(简体) )
  • 每页最多200 CID( 默认 20; 较大) maxResults 服务于200人,报告于 cappedInputs(三); offset 页面标识符和测试搜索到匹配的末尾,以及公式、子结构、上层结构和相似性搜索到一万个(深度失败) offset_ceiling_exceeded) (中文(简体) ). 可选 properties 保存后续 pubchem_get_compound_details 调用
  • 报告 totalFound,或一个 totalFoundAtLeast 上游搜索饱和时的地板,以及 unresolvedIdentifiers 没有CID的输入。 失败者 aid_not_found 用于未知的自动识别码和 search_query_rejected 查询 PubChem 无法搜索

pubchem_get_compound_details 工具

  • 每通电话最多100个刑事调查员(其余人员返回) unprocessed); 27个可用属性,默认为核心集 14
  • 可选说明descriptionOffset编号 :maxDescriptions,默认 3, 最大 20)和分类(FDA, MeSH, ATC)仅涵盖前10个CID, 其余列于 skippedCids. 可选同义词synonymOffset编号 :maxSynonyms,默认为 20,最大为 100 ) 和 Lipinski/Veber 类药物检查覆盖每个发现的 CID
  • 每份CID数据 found: false 从没有数据的化合物中分离一个不存在的 CID

pubchem_get_compound_image 工具

  • 单一CID; size 实值 "small" (100x100)或 (中文(简体) ) "large" (300x300,默认)
  • 返回基数64编码的PNG+宽度/高
  • 类型 cid_not_found 当 PubChem 没有 CID 记录时出错

pubchem_get_compound_3d_structure 工具

  • 单一CID; format="json" (默认)返回解析的原子(元素+x/y/z)和债券, format="sdf" 返回原始 V2000 SDF 文本
  • maxAtoms编号 :maxBonds 上限 JSON 预览( 默认为 200 个); atomCount编号 :bondCount 总是报告全部总数,并通过浓缩披露任何上限
  • includeRawSdf 绕过原始 SDF 文本上的默认500行盖
  • 可选 includeAlternateConformerIds 列出默认以外的符合者标识符
  • 类型 no_3d_structure 当 PubChem 没有计算出3D 坐标( 大分子、 混合物、 一些盐类) 时出错

pubchem_get_compound_xrefs 工具

  • 单个 CID; 一个或多个 xrefTypes数字 : CAS, (中文(简体) ), EC, (中文(简体) ), RN, (中文(简体) ), RegistryID, (中文(简体) ), PatentID, (中文(简体) ), PubMedID, (中文(简体) ), GeneID, (中文(简体) ), ProteinGI, (中文(简体) ), TaxonomyID
  • CAS 财务报告和审定财务报表 EC (a) 存放在大院内的数字,根据存入该大院的多少来源记录所订购的每个明确价值,以及这些数目 sourceCounts。 。 。 . RN 是 PubChem 的无名登记号码列表: CAS 号码与已过期的和相关的 CAS RN 和 EC 号码相邻
  • ProteinGI 目前未返回 PubChem 的数据; 使用 GeneID 基因/蛋白质协会
  • maxPerType 最多500人(违约50人),其中一人 offset 适用于每类;每类报告 totalAvailable 财务报告和审定财务报表 truncated。 。 。 . PubMedID 来得最快
  • 无法装入的类型命名于 failedTypes 而其他人仍然返回;只有当一个类型失败,并且除了蛋白质GI(PubChem不再服务)之外没有其它类型加载时,呼叫才会失败. 空结果表示化合物没有被请求的类型, 或 CID 可能被误打

pubchem_get_compound_safety 工具

  • 每通电话最多25个CID(其余返回) unprocessed(中文(简体) )
  • 返回全球统一制度的信号单词、象形图、H码和P码在源头之间合并,加 classifications[] (b) 防范性说明载有: decoded 旗帜
  • 每份CID数据 status数字 : ok, (中文(简体) ), not_classified (通知者没有发现全球统一制度的危险), no_ghs_data (没有交存分类),或 cid_not_found,所以一个坏的CID 从来没有读为"没有危险的文件"

pubchem_get_bioactivity 工具

  • 单个 CID; 过滤器 outcomeFilter (单位:千美元)active编号 :inactive编号 :all默认值 all, (中文(简体) ), targetGeneId编号 :targetAccession,以及 assayType (无) confirmatory编号 :screening编号 :summary编号 :other); 分析必须通过每个过滤器集
  • 目标过滤器匹配绑同目标的任何标识符,因此Gene ID 5742,UniProt P23219和RefSeq NP 5421158都达到了相同的COX-1测定
  • 每一个结果都包含着实验 assayType 以及它引用的PubMed身份证(pmids,最新第一页)
  • 每页最多100个结果(默认20); offset 到达其余。 多目标分析报告匹配的目标,并列出其他目标 otherTargets
  • 报告 totalAssays编号 :activeCount编号 :inactiveCount 整个大院和 filteredCount编号 :returnedCount 对于页面; 通知说是否没有数据, 过滤器排除了一切, 或者 offset 超过尾端

pubchem_get_compound_interactions 工具

  • 单个 CID; 一个或多个 kinds —— 说 drug-food (PUG视图), target, (中文(简体) ), drug-drug (毒品银行);默认 ["drug-food"],并有一个空的毒品-食品页面点 target
  • target 给每个目标一个条目 化合物的实验摘要名: 加入的 Gene ID 和 它的表对, 或 它从未对过的标识符。 A Gene ID 和一个加入,任何一行对子都是单独的条目,即使它们给同一个蛋白命名(erlotinib的ERBB2出现为: accession:P04626 作为 GeneID:2064) (中文(简体) ). 每个条目都从一个分批基因或蛋白质汇总检查中命名目标,加上 GeneID: 或者说 accession: 价值 pubchem_get_bioactivity 过滤器上,并按结果说明检验结果和最有力的AID值。 积极目标先来,最强者先来 如果一个名字搜索失败或数秒内没有回答,条目会保留其标识,通知中写着
  • maxEntries 每一页的每类(最多50个,默认为10个); offset 计数记录(目标 target),最高达2,147,483,646. 每个类型页独立,以 paging[] (单位:千美元)totalRecords编号 :nextOffset编号 :truncated(中文(简体) )
  • 失败的种类在 failedKinds 其他人仍然回来。 通知只为失败提供重试,重试可以澄清(出时,速率限制,网络出错,无法读取的响应,50xx以外的5);HTTP 400,403,或501,或服务器不期望的形状的响应,每通呼叫都以同样的方式失败. drug-drug 来源于PubChem的SDQ服务,它拒绝自动请求,因此降落在 failedKinds 重试也无济于事

pubchem_search_assays 工具

  • 搜索者为 targetType数字 : genesymbol编号 :proteinname (案文), geneid (NCBI基因标识), proteinaccession (UniProt) (英语)
  • A 类 genesymbol 跨物种匹配. geneid 财务报告和审定财务报表 proteinaccession 每个针头一个蛋白质,但返回重叠, 不同的测试集; 结合两者为完整的列表
  • 每页最多200个助理ID(默认为50); offset 通过结果的页数
  • 拒绝空白 targetQuery 和非数字 geneid页:1 targetQuery PubChem 以 HTTP 400 拒绝( 一个带换行符, 另一个除标签和 NUL 以外的 C0 控制字符, 或者 DEL) 失败 target_query_rejected
  • 报告 totalFound 并区分“无匹配”和“抵消过末”

pubchem_get_summary 工具

  • entityType数字 : assay (援助署), gene (NCBI基因标识), protein (统一加入),或 taxonomy (税务ID);每个呼叫最多10个识别符
  • 逗号连接字符串被分割为标识符; 任何过去的前 10 个都会返回到 unprocessed,且超过1000个失败 too_many_identifiers
  • 自动识别码、基因识别码和税务识别码必须是正整数, 最高可达2147483647; 其他部件得到一个 invalid: true 行, 调用失败为 invalid_identifier 只有在无可用时
  • 人均标识符 found 旗帜; 字段依赖 entityType (分类: lineage; 基因 : symbol编号 :taxonomy;说明: method,前25页 targets 与 targetCount,测试/活性化合物计数, lastDataChange(中文(简体) )

pubchem://compound/{cid} 资源

  • 核心物理化学性质(默认的14-财产集与 pubchem_get_compound_details),作为 application/json
  • 当 CID 在 PubChem 不存在时, 丢出一个未找到的键盘
  • 使用 pubchem_get_compound_details 选择特定属性或添加描述、同义词、类似药物和分类

pubchem://compound/{cid}/safety 资源

  • 全球统一制度危险分类为: application/json,包括每个来源 ghs.classifications 和贡献者 source 列表
  • status (单位:千美元)ok编号 :not_classified编号 :no_ghs_data编号 :cid_not_found)是区分坏CID和没有沉积分类的化合物的唯一信号——读取的资源没有通知表面

pubchem://compound/{cid}/image 资源

  • 2D 结构图, 300x300 PNG, 以基数64 blob 返回
  • 使用 pubchem_get_compound_image 100x100大小选项

pubchem://compound/{cid}/xrefs 资源

  • 焦点默认集 - RN, (中文(简体) ), RegistryID, (中文(简体) ), PubMedID, (中文(简体) ), CAS (与 sourceCounts——每类最多25个身份证,因为 application/json; PubMed ID是最高的25个(最近一次分配),最高的第一. 无法装入的类型命名于 failedTypes
  • 使用 pubchem_get_compound_xrefs 用于全套xref型号,每型号上限较高,并抵消呼号

pubchem://compound/{cid}/bioactivity 资源

  • 最多25条 application/json,每个带有 assayType 财务报告和审定财务报表 pmids附加时 totalAssays编号 :activeCount (a) 整个大院 otherTargets
  • 使用 pubchem_get_bioactivity 以结果、目标或化验类型过滤,提高上限,或页以相抵

pubchem://assay/{aid} 资源

  • 生物分析摘要 application/json 名称、说明、来源、协议、物质计数
  • 当 AID 不存在时, 丢出一个未找到的键

特征

建造在 @cyanheads/mcp-ts-core: stdio和可流式的 HTTP 传输器,可插接式(none 编号 : jwt 编号 : oauth),可互换存储(in-memory, (中文(简体) ), filesystem, (中文(简体) ), Supabase, (中文(简体) ), Cloudflare KV/R2/D1),结构化记录,可选择的OpenTeleometry tracking.

PubChem 特异性:

  • 覆盖 PUG REST 和 PUG 视图终点,加上药物-药物相互作用的SDQ
  • 限制费率的客户端( 5 req/s) 有请求排队和一次关于瞬时故障的重试
  • 每一次呼叫的50个预算在上游失败,因为 Timeout,且已取消的呼叫失败 RequestCancelled
  • V2000 SDF 为3D 配对者设置的解析器; 类似药物的特性从已比较的属性计算
  • 所有工具都是只读和一能的,不需要 API 键

方便代理输出 :

  • 每份CID数据 status 财务报告和审定财务报表 found 旗帜允许调用者在数据上的分支而不是匹配出错字符串
  • 批量工具同时返回每个项目的结果 unresolvedIdentifiers, (中文(简体) ), skippedCids, (中文(简体) ), failedKinds,以及 failedTypes 而不是输掉整个电话
  • 封面列表披露 truncated, (中文(简体) ), shown编号 :cap,以及 nextOffset; 超大批次的服务达到上限 cappedInputs 财务报告和审定财务报表 unprocessed 报告其他情况
  • 失败带有输入 reason (例如:. cid_not_found, (中文(简体) ), missing_identifier_args, (中文(简体) ), invalid_cid_query)带有回收文本

开始

公共托管实例

可在 https://pubchem.caseyjhand.com/mcp 无需安装。 通过可流式HTTP将 MCP 客户端指向它 :

{
  "mcpServers": {
    "pubchem-mcp-server": {
      "type": "streamable-http",
      "url": "https://pubchem.caseyjhand.com/mcp"
    }
  }
}

自有/当地

在您的 MCP 客户端配置文件中添加以下内容 .

{
  "mcpServers": {
    "pubchem-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/pubchem-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}

或者用 npx( 不需要 Bun) :

{
  "mcpServers": {
    "pubchem-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/pubchem-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio"
      }
    }
  }
}

或与道克相会:

{
  "mcpServers": {
    "pubchem-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/pubchem-mcp-server:latest"]
    }
  }
}

对于可流式HTTP,设置传输并启动服务器:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

先决条件

  • Bun v1.4.0 (英语) 或更高(或Node.js v24+).
  • 不需要API密钥——PubChem的API可以自由访问.

安装

  1. 清除仓库 :
git clone https://github.com/cyanheads/pubchem-mcp-server.git
  1. 导航到目录 :
cd pubchem-mcp-server
  1. 安装依赖性 :
bun install
  1. 配置环境( 可选) :
cp .env.example .env
# edit .env to override transport, session mode, storage, or logging defaults

配置

变量说明默认
MCP_TRANSPORT_TYPE运输: stdio 或者说 http。 。 。 .stdio
MCP_HTTP_PORTHTTP 服务器端口 .3010
MCP_HTTP_HOSTHTTP 服务器的主机 .127.0.0.1
MCP_SESSION_MODEstateless, (中文(简体) ), stateful,或 auto。 。 。 .stateless
MCP_AUTH_MODEAuth 模式 : none, (中文(简体) ), jwt,或 oauth。 。 。 .none
MCP_LOG_LEVEL日志级别(RFC 5424).info
STORAGE_PROVIDER_TYPE存储后端.in-memory
OTEL_ENABLED启用 OpenTeleometry .false

见 .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 build -t pubchem-mcp-server .
docker run --rm -p 3010:3010 pubchem-mcp-server

Dockerfile 默认为 HTTP 传输、 无国籍会话模式和日志到 /var/log/pubchem-mcp-server。默认情况下安装了 OpenTeleometry 端端依赖性 --build-arg OTEL_ENABLED=false 以略去它们.

项目结构

目录目的
src/index.tscreateApp() 入口——登记工具/资源并输入PubChem客户端.
src/mcp-server/tools/definitions/工具定义*.tool.ts) (中文(简体) ).
src/mcp-server/resources/definitions/资源定义*.resource.ts) (中文(简体) ).
src/services/pubchem/PubChem API客户端——速率限制,重试,以及响应/SDF解析.
scripts/构建,清洁,devcheck,和树生成脚本.
tests/单位与整合测试.

发展指南

见 CLAUDE.md 发展准则和建筑规则。 简本:

  • 搬运工投掷,框架渔获量——否 try/catch 在工具逻辑中
  • 使用 ctx.log 请求范围记录
  • 环绕外部 API 调用: 验证原始 PubChem 响应 ~ 正常化到域类型 ~ 返回输出计划; 永远不编织缺失字段
  • 登记册中的新工具和资源 index.ts 桶文件

捐款

问题值得欢迎。 提交前运行检查 :

bun run devcheck
bun run test

许可证

阿帕奇-2.0 — 见 自由主义 详细情况.

版本与发布记录

@cyanheads/pubchem-mcp-server 共发布 49 个版本,首次发布于 2025/06/30;过去 12 个月发布了 47 个版本。

版本发布日期距今
0.8.0latest2026/10/2813 天前
0.7.12026/10/2417 天前
0.7.02026/10/1527 天前
0.6.62026/10/071 个月前
0.6.52026/09/251 个月前
0.6.42026/09/251 个月前

关于 @cyanheads/pubchem-mcp-server 的常见问题

@cyanheads/pubchem-mcp-server 是什么?

通过 MCP 搜索 PubChem 化学数据库,以了解化合物、特性、安全数据、生物活性、交叉参照和实体摘要。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.

如何安装 @cyanheads/pubchem-mcp-server?

在项目目录运行 npm install @cyanheads/pubchem-mcp-server,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 pubchem-mcp-server,可以用 npx pubchem-mcp-server 直接运行。

@cyanheads/pubchem-mcp-server 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cyanheads/pubchem-mcp-server 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cyanheads/pubchem-mcp-server 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cyanheads/pubchem-mcp-server 可以商用吗?

@cyanheads/pubchem-mcp-server 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cyanheads/pubchem-mcp-server 的下载量有多少?

根据 npm 官方下载统计,@cyanheads/pubchem-mcp-server 在 2026/10/11 – 2026/11/09 这 30 天内被下载 4,730 次,日均约 158 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cyanheads/pubchem-mcp-server 还在维护吗?

最新版本 0.8.0 发布于 2026/10/28(13 天前);至今共发布 49 个版本,其中过去 12 个月发布了 47 个;首次发布于 2025/06/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。