Skip to content

cyanheads/pubchem-mcp-server

v0.8.0Apache-2.0

Search the PubChem chemical database for compounds, properties, safety data, bioactivity, cross-references, and entity summaries via MCP. STDIO or Streamable HTTP.

Changelog

All notable changes to this project. Each entry links to its full per-version file in changelog/.

0.8.0 — 2026-10-28

Publishes the pubchem-guide agent skill over MCP as skill://pubchem-guide/SKILL.md. Assay-target and formula queries PubChem refuses with HTTP 400 (a C0 control other than tab or NUL, or DEL) now fail as typed ValidationErrors, interactions retry advice is per failed kind, and mcp-ts-core ^0.13.18 changes how notices and errors render in content[].

0.7.1 — 2026-10-24 · 🛡️ Security

pubchem_get_compound_interactions defaults to drug-food and rebuilds target from the assay summary; pubchem_get_compound_xrefs gains CAS and EC; pubchem_search_compounds resolves InChI strings and pages assay results past offset 10000; pubchem_get_bioactivity reports assay type and PMIDs.

0.7.0 — 2026-10-14 · ⚠️ Breaking

pubchem_search_compounds lists an assay's compounds; safety keeps each source's GHS classification and ECHA Not Classified verdicts; bioactivity reports every target of a multi-target assay; over-cap inputs are served at the cap and every call gets a 50 s time budget. Output contracts change; see Migration.

0.6.6 — 2026-10-07

Moves to @cyanheads/mcp-ts-core 0.13.13: error results carry a requestId and declared recovery hints, the compound and assay resources type their not-found errors, and the registry's HTTP entry starts the HTTP transport.

0.6.5 — 2026-09-24

pubchem_search_compounds turns PubChem's rejected queries and unreadable identifiers into typed errors, keeps the rest of an identifier batch, and drops CID 0 matches; a cancelled tool call or resource read now stops its PubChem requests.

0.6.4 — 2026-09-24

pubchem_search_compounds names each mode's required fields and rejects a blank formula or query before calling PubChem, failed PubChem requests log their URL server-side, and integer inputs advertise minimum: 1 instead of exclusiveMinimum.

0.6.3 — 2026-09-19 · 🛡️ Security

Adopts mcp-ts-core through 0.13.6: input aliases on four tools, a declared stateless session mode, structured argument-rejection errors, and CodeQL fixes for regex backtracking and an upstream URL leak in error data.

0.6.2 — 2026-09-13

Framework adoption and HTTP retry handling

0.6.1 — 2026-08-21

Adopts mcp-ts-core ^0.12.3 and MCP SDK v2 — tool arguments are strict and the advertised schemas change shape — and three tools gain a top-level truncated flag in their enrichment.

0.6.0 — 2026-07-28 · ⚠️ Breaking

Constrain four per-page cap inputs to integers, rejecting fractional values that were previously silently floored or forwarded upstream.

0.5.2 — 2026-07-28

Add offset pagination to pubchem_search_compounds and pubchem_get_compound_interactions, completing #38; switch the interactions SDQ query to a select projection for exact per-kind totals.

0.5.1 — 2026-07-28

Add offset pagination to pubchem_get_compound_xrefs and pubchem_search_assays; add synonymOffset/descriptionOffset paging plus PUG View fan-out disclosure to pubchem_get_compound_details; fix README overclaims on synonym coverage and bioactivity paging.

0.5.0 — 2026-07-28 · ⚠️ Breaking

Bound pubchem_search_compounds fast searches with PubChem's MaxRecords instead of pulling the full match set, reporting a totalFoundAtLeast floor when saturated; add offset pagination to pubchem_get_bioactivity. Breaking: outputSchema.required changes on both tools.

0.4.3 — 2026-07-28

Fix content[] truncation that hid data structuredContent already returned; fix assay/taxonomy field mapping in pubchem_get_summary; remove implementation and audience leaks from tool/resource descriptions

0.4.2 — 2026-07-28

Distinguish nonexistent CIDs from no-data compounds in pubchem_get_compound_safety; mark undecoded GHS P-codes explicitly; drop the dead severity field from pubchem_get_compound_interactions; fix two GHS-statement parsing bugs; adopt mcp-ts-core ^0.11.0

0.4.1 — 2026-07-03

Decode GHS precautionary (P-code) statements to standard text via a new lookup table in pubchem_get_compound_safety; append the asserted uM unit to target-kind activity values in pubchem_get_compound_interactions

0.4.0 — 2026-07-03

Add maxAtoms/maxBonds/includeRawSdf output controls with truncation disclosure to pubchem_get_compound_3d_structure; frame upstream free text (descriptions, synonyms, interaction statements, GHS text, raw SDF) as delimited data in content[] to neutralize markdown-structure injection across six tools

0.3.1 — 2026-07-03

Validate CID-shaped structure queries and blank/non-numeric target queries in pubchem_search_compounds and pubchem_search_assays before the upstream call; surface identifier-mode partial-batch misses and CID collisions via a new unresolvedIdentifiers field; add an empty-result notice to pubchem_get_compound_xrefs

0.3.0 — 2026-06-30 · 🛡️ Security

Fix silent data loss in pubchem_get_compound_safety (precautionary statements) and pubchem_get_compound_details (FDA pharmacological classification), both parsing PubChem's real shapes; add a maxSynonyms cap; correct the server assay-routing instructions; adopt mcp-ts-core ^0.10.10; clear 8 transitive security advisories

0.2.4 — 2026-06-20

adopt @cyanheads/mcp-ts-core ^0.10.9 — check-dependency-specifiers devcheck step, plugin-manifest packaging lint, fresh-scaffold devcheck guards, vendored skill re-sync

0.2.3 — 2026-06-12

adopt @cyanheads/mcp-ts-core ^0.10.6 — truncation disclosure on capped searches, explicit createApp identity, MCPB bundle-content hardening

0.2.2 — 2026-06-02

adopt @cyanheads/mcp-ts-core 0.9.21 — per-request log context fix, secret scrubbing in fetch errors, fail-fast retries

0.2.1 — 2026-06-02

interactions target source, per-kind isolation, fetch resilience for image and 3D structure

0.2.0 — 2026-06-01 · ⚠️ Breaking

interactions and 3D structure tools, URI-templated resources, target filter for bioactivity, batch safety

0.1.23 — 2026-06-01

Typed cid_not_found error on get_compound_image; enrichment for get_bioactivity, get_compound_safety, and get_summary

0.1.22 — 2026-05-30

Enrichment adoption: search_compounds and search_assays surface search-type/target echoes, true upstream totals, and empty-result guidance via a typed enrichment block

0.1.21 — 2026-05-28

mcp-ts-core ^0.9.6 → ^0.9.13: HTTP body cap, session-init gate, quieter 4xx logs, GET /mcp keywords; httpErrorFromResponse adoption; keyword additions