littleblakew/msds-chain-mcp

dsh

通过托管的 MSDS Chain MCP 端点接入化学品安全数据:23 个工具覆盖相容性与投料顺序、GHS 危害、PPE、储存、废弃处置、职业接触限值、运输分类、多法域合规、SDS 查询与版本比对、签名审计报告;每条回答都标注其依据的供应商 SDS 与版本日期。

도구 및 기능chemical-safetymcpmodel-context-protocol

dsh-msds-chain

Chemical safety intelligence for DeepSeek Harness. This bundle mounts the hosted MSDS Chain MCP endpoint through the in-box @deepseek-ai/dsh-mcp-client bridge — no server to run locally.

MCP tools covering compatibility and mixing-order checks, GHS hazard analysis, PPE recommendations, storage and waste-disposal guidance, occupational exposure limits, transport classification, multi-region regulatory compliance (EU/US/CN/JP/KR/CA/AU/TW/SG), safer alternatives, protocol text parsing, SDS section lookup and version diffs, and signed audit reports. Every answer cites the supplier SDS and revision date it is grounded in.

Install

dsh plugin --profile web add github:littleblakew/msds-chain-mcp#path:/plugins/dsh

Configure

An API key is required — there is no anonymous tier on this endpoint. Create one at msdschain.lagentbot.com → API Keys (free plan available), then:

export MSDS_API_KEY=sk-msds-your-key

Start dsh with that variable set. The tools register on ctx.tools under the msds-chain namespace, so the model sees mcp__msds-chain__ask_chemical_safety, mcp__msds-chain__check_chemical_compatibility, and so on.

Verifying it loaded

⚠️ A missing or invalid key fails silently. The endpoint answers 401, no tools register, and dsh prints nothing to the console — the harness starts normally and the model simply has no mcp__msds-chain__* tools. (Measured against dsh 0.1.0-rc.6.)

So check the key itself rather than watching for an error:

curl -s -o /dev/null -w '%{http_code}\n' -X POST https://mcp.lagentbot.com/mcp \
  -H "Authorization: Bearer $MSDS_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}'

200 means the key works; 401 means it does not.

This bundle deliberately leaves failOnStartupError at its default (false). Setting it to true does surface the 401 loudly — but it aborts the whole plugin tree, so dsh refuses to boot at all. A chemical-safety plugin should not be able to take down your harness because our endpoint had a bad minute.

Which tool to use

For a broad safety question — hazards, PPE, first aid, spill response, storage, disposal — call ask_chemical_safety. It returns one answer grounded in a specific supplier SDS. The granular tools are for when you want that one structured field.

Self-hosting

To point at your own core instead of the hosted endpoint, override the row from a later layer (profile cordis.patch.yml or --patch) — see the comment block in cordis.patch.yml.

Links

  • MCP server source and tool reference:
  • Product:

MIT licensed.