
Connects Claude to ChainSDS, a chemical safety database with 21 tools for lab protocol validation. You get pairwise compatibility checks, PPE recommendations, regulatory compliance across 10 jurisdictions (EU REACH, US OSHA, Japan, China), GHS hazard lookups, and transport classification. The batch_safety_check tool runs compatibility matrices for deck layouts in one call. It handles mixing order validation (acid into water checks), waste disposal procedures, and generates signed audit PDFs for GLP/GMP compliance. Useful when designing experiments with AI and you need safety verification inline instead of as a separate step. Works freemium for basic queries, requires API key from msdschain.lagentbot.com for audit reports and PDF uploads.
Public tool metadata for what this MCP can expose to an agent.
check_chemical_compatibilityCheck pairwise compatibility between a list of chemicals. Returns compatibility status (compatible / caution / incompatible) for each pair, along with specific hazard reasons and storage recommendations. Use this before an experiment to verify it is safe to use the listed chem...1 paramsCheck pairwise compatibility between a list of chemicals. Returns compatibility status (compatible / caution / incompatible) for each pair, along with specific hazard reasons and storage recommendations. Use this before an experiment to verify it is safe to use the listed chem...
chemicalsarrayget_chemical_risk_warningsGet hazard and risk warnings for one or more chemicals. Returns GHS hazard classification, signal words (Danger/Warning), H-codes, flash point, toxicity, and recommended PPE. Use this to understand the specific dangers of each chemical before handling or storing them. Args: ch...1 paramsGet hazard and risk warnings for one or more chemicals. Returns GHS hazard classification, signal words (Danger/Warning), H-codes, flash point, toxicity, and recommended PPE. Use this to understand the specific dangers of each chemical before handling or storing them. Args: ch...
chemicalsarraycheck_regulatory_complianceCheck multi-region regulatory compliance status for chemicals. Checks against: EU (SVHC/REACH/CLP/CMR), US (OSHA PEL/TSCA), CN, JP, KR, CA, AU, TW regulations. Use this when preparing export documentation, compliance audits, or when working with chemicals that may be restricte...2 paramsCheck multi-region regulatory compliance status for chemicals. Checks against: EU (SVHC/REACH/CLP/CMR), US (OSHA PEL/TSCA), CN, JP, KR, CA, AU, TW regulations. Use this when preparing export documentation, compliance audits, or when working with chemicals that may be restricte...
chemicalsarrayregionsvalueask_chemical_safetyAsk any chemical safety question in natural language. Handles: storage conditions, spill/exposure emergency procedures, first-aid measures, PPE requirements, disposal guidance, MSDS lookups, GHS label interpretation, and general lab safety questions. Use this as the catch-all...1 paramsAsk any chemical safety question in natural language. Handles: storage conditions, spill/exposure emergency procedures, first-aid measures, PPE requirements, disposal guidance, MSDS lookups, GHS label interpretation, and general lab safety questions. Use this as the catch-all...
questionstringget_ppe_recommendationGet PPE (Personal Protective Equipment) recommendations for chemicals. Returns specific glove types, eye protection, respiratory protection, and body protection requirements based on MSDS Section 8 data and GHS hazard codes. Args: chemicals: List of chemical names or CAS numbe...1 paramsGet PPE (Personal Protective Equipment) recommendations for chemicals. Returns specific glove types, eye protection, respiratory protection, and body protection requirements based on MSDS Section 8 data and GHS hazard codes. Args: chemicals: List of chemical names or CAS numbe...
chemicalsarrayget_storage_guidanceGet storage and isolation guidance for chemicals. Returns storage class (flammable/oxidizer/corrosive/toxic/general), recommended cabinet type and color code, temperature requirements, incompatible materials for isolation, and specific storage instructions derived from SDS Sec...1 paramsGet storage and isolation guidance for chemicals. Returns storage class (flammable/oxidizer/corrosive/toxic/general), recommended cabinet type and color code, temperature requirements, incompatible materials for isolation, and specific storage instructions derived from SDS Sec...
chemicalsarrayget_emergency_responseGet emergency response guidance for a chemical incident. Returns immediate actions, SDS-specific instructions from Section 4/5/6, and H-code-based guidance for three scenario types. Args: chemical: Chemical name or CAS number, e.g. "hydrochloric acid" scenario: Type of emergen...2 paramsGet emergency response guidance for a chemical incident. Returns immediate actions, SDS-specific instructions from Section 4/5/6, and H-code-based guidance for three scenario types. Args: chemical: Chemical name or CAS number, e.g. "hydrochloric acid" scenario: Type of emergen...
chemicalstringscenariostringget_exposure_limitsGet occupational exposure limits (OEL/TLV/PEL/MAC) for chemicals. Returns TWA, STEL, and Ceiling values from multiple standards: - OSHA PEL (US) - ACGIH TLV (International) - EU SCOEL IOELV - Japan 産衛研 - China GBZ Args: chemicals: List of chemical names or CAS numbers region:...2 paramsGet occupational exposure limits (OEL/TLV/PEL/MAC) for chemicals. Returns TWA, STEL, and Ceiling values from multiple standards: - OSHA PEL (US) - ACGIH TLV (International) - EU SCOEL IOELV - Japan 産衛研 - China GBZ Args: chemicals: List of chemical names or CAS numbers region:...
chemicalsarrayregionvalueget_transport_classificationGet UN transport classification for chemicals (dangerous goods shipping). Returns UN number, proper shipping name, hazard class, packing group, and transport mode details (ADR road, IATA air, IMDG sea). Args: chemicals: List of chemical names or CAS numbers1 paramsGet UN transport classification for chemicals (dangerous goods shipping). Returns UN number, proper shipping name, hazard class, packing group, and transport mode details (ADR road, IATA air, IMDG sea). Args: chemicals: List of chemical names or CAS numbers
chemicalsarraycreate_audit_sessionRun a full MSDS safety audit for a list of chemicals and return a session id. Creates a persistent audit session on MSDS Chain, runs pairwise compatibility and risk analysis across all chemicals, and returns a session_id that can later be passed to `get_audit_report` to fetch...2 paramsRun a full MSDS safety audit for a list of chemicals and return a session id. Creates a persistent audit session on MSDS Chain, runs pairwise compatibility and risk analysis across all chemicals, and returns a session_id that can later be passed to `get_audit_report` to fetch...
chemicalsarrayexperiment_namestringget_audit_reportGet a short-lived signed URL to download the audit report PDF. Use after `create_audit_session` to retrieve an archivable PDF report containing the chemicals, compatibility matrix, risk warnings, and session metadata. Args: session_id: The session id returned by `create_audit_...1 paramsGet a short-lived signed URL to download the audit report PDF. Use after `create_audit_session` to retrieve an archivable PDF report containing the chemicals, compatibility matrix, risk warnings, and session metadata. Args: session_id: The session id returned by `create_audit_...
session_idstringsearch_chemical_databaseSearch the MSDS Chain database for a specific chemical. Returns structured information: CAS number, chemical name, NFPA ratings (flammability, health, reactivity), GHS classification, and whether full MSDS data is available. Use this to verify a chemical is in the database bef...1 paramsSearch the MSDS Chain database for a specific chemical. Returns structured information: CAS number, chemical name, NFPA ratings (flammability, health, reactivity), GHS classification, and whether full MSDS data is available. Use this to verify a chemical is in the database bef...
querystringget_sds_sectionRetrieve a specific SDS (Safety Data Sheet) section for a chemical. The 16 standard GHS-SDS sections are: 1. Identification 2. Hazard(s) identification 3. Composition / ingredients 4. First-aid measures 5. Fire-fighting measures 6. Accidental release measures 7. Handling and s...2 paramsRetrieve a specific SDS (Safety Data Sheet) section for a chemical. The 16 standard GHS-SDS sections are: 1. Identification 2. Hazard(s) identification 3. Composition / ingredients 4. First-aid measures 5. Fire-fighting measures 6. Accidental release measures 7. Handling and s...
chemicalstringsectionintegerget_chemical_alternativesSuggest safer alternatives for a chemical, considering its intended use. Returns 2-4 alternative chemicals with: name, CAS number, why it's safer (lower toxicity, higher flash point, non-CMR, etc.), any trade-offs (cost, availability, performance), and relevant regulatory cont...2 paramsSuggest safer alternatives for a chemical, considering its intended use. Returns 2-4 alternative chemicals with: name, CAS number, why it's safer (lower toxicity, higher flash point, non-CMR, etc.), any trade-offs (cost, availability, performance), and relevant regulatory cont...
chemicalstringuse_casestringvalidate_protocol_chemicalsExtract and validate chemical names from a protocol or experiment description. Parses free-text or code (e.g., Opentrons Python protocol, lab notebook entry, SOP paragraph) to identify all mentioned chemicals, then checks each against the MSDS Chain database. Returns a structu...1 paramsExtract and validate chemical names from a protocol or experiment description. Parses free-text or code (e.g., Opentrons Python protocol, lab notebook entry, SOP paragraph) to identify all mentioned chemicals, then checks each against the MSDS Chain database. Returns a structu...
protocol_textstringcheck_mixing_orderDetermine the safe order for mixing/adding two chemicals. Returns the recommended addition sequence, the dangerous sequence to avoid, reasoning (exothermic potential, gas evolution, splashing risk), and any required precautions (cooling, dilution rate, inert atmosphere). Class...3 paramsDetermine the safe order for mixing/adding two chemicals. Returns the recommended addition sequence, the dangerous sequence to avoid, reasoning (exothermic potential, gas evolution, splashing risk), and any required precautions (cooling, dilution rate, inert atmosphere). Class...
chemical_astringchemical_bstringcontextstringget_waste_disposalGet waste classification and disposal guidance for chemicals. Returns waste category (halogenated/non-halogenated/acidic/alkaline/ heavy metal/oxidizing/reactive), disposal method, container requirements, and incompatible waste streams that must NOT be mixed. Based on SDS Sect...1 paramsGet waste classification and disposal guidance for chemicals. Returns waste category (halogenated/non-halogenated/acidic/alkaline/ heavy metal/oxidizing/reactive), disposal method, container requirements, and incompatible waste streams that must NOT be mixed. Based on SDS Sect...
chemicalsarraybatch_safety_checkRun a comprehensive safety check on a list of chemicals in one call. Returns a combined report with: - Pairwise compatibility matrix (compatible/caution/incompatible) - PPE requirements (merged across all chemicals) - Storage grouping recommendations (which chemicals can share...1 paramsRun a comprehensive safety check on a list of chemicals in one call. Returns a combined report with: - Pairwise compatibility matrix (compatible/caution/incompatible) - PPE requirements (merged across all chemicals) - Storage grouping recommendations (which chemicals can share...
chemicalsarrayChemical safety intelligence for AI-assisted experiment design.
An MCP server that gives AI agents (Claude, ChatGPT, Claude Code, Gemini CLI, Copilot Studio, and any other MCP client) 24 tools for chemical safety reasoning: compatibility checks, hazard analysis, regulatory compliance, PPE, storage, transport, and signed audit reports. Every answer names the supplier SDS it came from, with a link to the original PDF.
MSDS Chain, powered by ChainSDS: a verified, always-current chemical safety database.
Built for researchers who design experiments with AI and want safety verification inside the workflow rather than as a separate step: whether the chemicals on a deck are compatible, which mixing orders are dangerous, what PPE a specific handling step needs, how a compound is treated under EU REACH or US OSHA/TSCA, and what a GLP/GMP reviewer will ask for afterwards.
Hosted endpoint. Nothing to install, nothing to run locally:
claude mcp add msds-chain --transport http https://mcp.lagentbot.com/mcp
Then run /mcp in Claude Code and sign in. A browser opens, you enter your email, and you paste
back the code we send you. Your account is provisioned automatically and the free plan includes
a monthly call allowance. There is no API key to create beforehand.
On another platform? See Platform Setup below.
| Tool | Description |
|---|---|
batch_safety_check | One-call report for a chemical list: pairwise compatibility + per-chemical risk warnings |
check_regulatory_lists | Cross-reference a chemical against 23 regulatory watch lists across 8 jurisdictions + 3 international conventions |
get_sds_section | Retrieve a specific SDS section (1-16) for a chemical |
get_sds_document | Signed download URL (~5 min) for the original SDS/MSDS PDF; includes source provenance |
get_chemical_alternatives | Safer substitutes for restricted or high-risk chemicals |
validate_protocol_chemicals | Extract & validate chemical names from protocol text or code |
check_mixing_order | Safe addition sequence for reagent pairs (e.g., acid into water) |
get_waste_disposal | Waste classification, container type, and disposal procedures |
upload_msds_pdf | Upload MSDS PDF for AI-powered parsing and data extraction (requires API key) |
draft_sds_sections | Draft Sections 8 and 15 of an SDS for your own mixture from its ingredient list; every line cites its source, and missing ingredients are listed rather than guessed |
compare_sds_versions | Hazard-change diff between two SDS versions (H-code additions/removals + whether they change a verdict) |
check_chemical_compatibility | Pairwise compatibility for 2+ chemicals |
get_chemical_risk_warnings | GHS classification, H-codes, signal words, flash point |
get_ppe_recommendation | Gloves, eye protection, respiratory, body protection |
get_storage_guidance | Storage class, cabinet type, temperature, isolation rules |
get_emergency_response | Spill, fire, or exposure emergency procedures |
get_exposure_limits | OEL/TLV/PEL/MAC across US, EU, JP, CN, INT |
get_transport_classification | UN number, hazard class, packing group, ADR/IATA/IMDG |
check_regulatory_compliance | Multi-region compliance status, list-backed for EU, US, CN, JP, CA, AU, SG |
search_chemical_database | Look up chemicals by name, synonym, or CAS number |
ask_chemical_safety | Natural language catch-all for any safety question |
create_audit_session | Full audit with signed PDF report (requires API key) |
get_audit_report | Download link for the signed audit PDF |
Experiment protocol review:
User: I'm planning a Grignard reaction with magnesium turnings, diethyl ether,
and bromobenzene. Check if this setup is safe.
Agent:
→ calls batch_safety_check(["magnesium", "diethyl ether", "bromobenzene"])
→ Returns: compatibility matrix + per-chemical risk warnings (with source SDS)
Signed audit report:
User: Create a safety audit report for our quarterly review.
Chemicals: acetone, methanol, ethanol, isopropanol, hexane.
Agent:
→ calls create_audit_session("Q2 2026 Solvent Cabinet Review", [...])
→ calls get_audit_report("SESSION-ID")
→ Returns: signed PDF URL (Ed25519 signature, suitable for GLP/GMP compliance)
One hosted server, two transports. Pick the row your client supports:
| Transport | Endpoint | Notes |
|---|---|---|
| Streamable HTTP | https://mcp.lagentbot.com/mcp | Preferred: broadest and most robust |
| SSE | https://mcp.lagentbot.com/sse | For clients that only speak SSE |
Authentication is either OAuth (the client opens a browser sign-in on first connect) or a static
header, Authorization: Bearer sk-msds-your-key, for headless clients. Create a key at
msdschain.lagentbot.com > API Keys.
Settings > Connectors, search msds-chain, and enable it. Sign-in happens on first use.
Three routes, any one is enough:
# 1. Remote server only
claude mcp add msds-chain --transport http https://mcp.lagentbot.com/mcp
# 2. Plugin from the official Claude plugin marketplace (server + skill)
/plugin install msds-chain@claude-plugins-official
# 3. npm shim (registers the same hosted endpoint)
claude mcp add msds-chain -- npx -y msds-chain-mcp@latest
Manual config in ~/.claude.json:
{
"mcpServers": {
"msds-chain": {
"type": "http",
"url": "https://mcp.lagentbot.com/mcp"
}
}
}
Routes 2 and 3 of the plugin also install the /msds-safety-check skill: it spots chemicals in
your conversation and offers a check, and runs a guided audit for lab protocols or EHS compliance.
Listed in the OpenAI Plugin Directory. Search MSDS Chain in ChatGPT, enable it, and sign in when prompted. Works on web, desktop, and mobile.
Listed in the Gemini CLI extensions gallery:
gemini extensions install https://github.com/littleblakew/msds-chain-mcp
Gemini asks you to confirm twice: once to trust the workspace, once to review the extension and
the skill it carries. Your first chemical question starts the sign-in automatically; the server
supports Dynamic Client Registration, so Gemini registers itself and completes the OAuth exchange
on its own. Check the connection with gemini mcp list, then just ask in chat:
Can acetone and sodium hypochlorite be stored in the same cabinet?
codex marketplace add https://github.com/littleblakew/msds-chain-mcp
MSDS Chain ships a certified Power Platform connector, so there is nothing to configure by hand. In Copilot Studio, add a tool from the connector directory and search MSDS Chain; the connector handles the OAuth exchange against the same hosted endpoint.
These clients do not speak streamable HTTP yet, so point them at /sse and pass a static key:
https://mcp.lagentbot.com/sseAuthorization : Bearer sk-msds-your-keyUse the endpoint table above. Clients that implement OAuth 2.1 with Dynamic Client Registration
need no pre-registration; everything else uses the static Authorization header.
upload_msds_pdf, create_audit_session, get_audit_report) associate activity
with your account for audit traceability.Industry-sourced, AI-verified, and cryptographically signed.
| Symptom | Likely cause | Fix |
|---|---|---|
401 Unauthorized on connect | Missing or invalid API key | Check the Authorization: Bearer sk-msds-... header. Generate a fresh key at msdschain.lagentbot.com > API Keys. |
| Tools don't appear in the client | Server not loaded | Fully restart the client after adding the server, then confirm msds-chain shows in the MCP/tools list. |
| Connection drops or times out | Wrong transport | Prefer https://mcp.lagentbot.com/mcp; SSE sessions can drop when the server redeploys. GET https://mcp.lagentbot.com/health should return {"status":"ok"}. |
Quota exceeded / 429 | Monthly call limit hit | Free plans are capped; upgrade or wait for the monthly reset. |
| Empty results for a known chemical | Name not matched | Retry with the CAS number or a common synonym; search_chemical_database accepts name, synonym, or CAS. |
| OAuth sign-in fails | OAuth metadata unreachable | Confirm GET https://mcp.lagentbot.com/.well-known/oauth-authorization-server returns 200; the client should auto-discover the authorize and token endpoints. |
Still stuck? Email contact@lagentbot.com or open an issue at github.com/littleblakew/msds-chain-mcp/issues.
MIT
Built by LAgentBot, AI-powered chemical safety infrastructure.
Part of the MSDS Chain platform: the world's first AI Agent-driven chemical safety data trust network, powered by ChainSDS.
MSDS_API_KEY*secretAPI key from msdschain.lagentbot.com (free: 100 calls/month)