MaterialsCodeGraph
REMOTE · API.MATERIALSCODEGRAPH.COM
Materials simulations for AI agents over MCP: binding token quote before every run, record after it.
Available components
Last scanned (19 hours ago)
Scores higher than 64% of remote servers
Reachable. Last reached 23 Oct 2026.
Category Health and Science
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security71
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3080 tokens (~256/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 23 Oct 26 0
- Tool “mcg_catalog” rewrote its description, which is the text the model reads security
- Tool “mcg_fetch_artifacts” rewrote its description, which is the text the model reads security
- Tool “mcg_get_artifact” rewrote its description, which is the text the model reads security
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 0
- Tool “mcg_catalog” rewrote its description, which is the text the model reads security
- Tool “mcg_quote” rewrote its description, which is the text the model reads security
- 18 Oct 26 0
- Tool “mcg_catalog” rewrote its description, which is the text the model reads security
- Tool “mcg_quote” rewrote its description, which is the text the model reads security
- Schema quality: 223 → 250 ▼ functional
- “mcg_quote” added an optional parameter “resource_class” cosmetic
- “mcg_quote” reworded the description of “draft_id” cosmetic
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Oct 26 0
- “mcg_quote” reworded the description of “draft_id” cosmetic
1 cosmetic change on this day. Switch on “Show cosmetic changes” to see it.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Probed https://api.materialscodegraph.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=materialscodegraph.com | CN=WE1,O=Google Trust Services,C=US | 31 Aug 2026 | 29 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | ca3dfb992a5a0a860e9668bd670fa183 |
| SANs: materialscodegraph.com, api.materialscodegraph.com, *.api.materialscodegraph.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.materialscodegraph.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| materialscodegraph.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer
Bearer Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.materialscodegraph.com/mcp | Verified | 200 | |
| http (plaintext) | http://api.materialscodegraph.com/mcp | Inconclusive | 405 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
mcg_cancel_run ~98
Cancel a run from any non-terminal state before collecting (a collecting run's outputs are delivered and charged: 409). The cancel request is recorded immediately and returns run_id and cancel_requested true; the platform kills the machine and terminalizes the run as state killed on its next orchestration tick (about 60 s). Poll mcg_get_run to observe the terminal state.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | yes | The run id to cancel. |
No output schema declared.
No examples provided.
mcg_catalog ~161
Enabled simulation kinds (each with example mcg_quote arguments that price, or a note naming what must exist first; traced says whether the kind's default lineage has a single public OpenMaterials node pin, traced_note why or why not; research coordinators instead expose record_contract describing per-task completion requirements, not completed results), the costed lineage menu (runnability, physical conditions, indicative token costs and wall time per resource class, with its label and the offer SKU priced), the external-frontier graphs mcg_quote accepts, recipes (pass a recipe's quote object to mcg_quote unchanged), and codes (versions, licenses, pins; the only software a run may execute). Call before mcg_quote. A kind or code absent here cannot run.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mcg_clusters ~234
Connected clusters: id, name, preset (hive or auto), status (pending until the agent's first sync; connected; stale: the agent stopped syncing; revoked; scheduler_down: the agent syncs but cannot reach the scheduler, nothing is offered; agent_outdated: an auto cluster's agent sends no inventory; snapshot_rejected: its last snapshot was over the size cap; snapshot_stale: no fresh capacity snapshot, nothing is offered; nodes_unavailable: none of an auto cluster's nodes accept jobs (drained, down, in maintenance or not responding), nothing is offered), status_detail (why, when not connected), classes (resource classes offered per partition, with per-job GPU, CPU and memory maxima and the GRES type), unclassified_gpus (GPU types present but not offered: type, count, reason), untyped_gpus, last sync time. Pass target {cluster_id} to mcg_quote to run there at zero hardware cost; only a connected cluster quotes. Clusters are created with POST /api/clusters (on the machine host with a spend-scoped key).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mcg_fetch_artifacts ~108
List a run's collected artifacts as a typed manifest: artifacts, a list of path, bytes, stage and sha256 per file, plus removed on a file the retention sweep deleted (its bytes are gone; do not fetch it) and attribution on a third-party model's file (its license notice; keep it with any copy); truncated; source. Never returns file contents; fetch one file with mcg_get_artifact.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | yes | The run id. |
No output schema declared.
No examples provided.
mcg_get_artifact ~121
Fetch one artifact file's TEXT content, up to max_bytes (default 65536), with an explicit truncation note. Binary content REJECTS with unsupported_content; fetch binaries from the run's public page. A third-party model's file returns its license notice first, as an [attribution] text item.
| Name | Type | Req | Description |
|---|---|---|---|
| max_bytes | integer | – | Max bytes to inline (default 65536). |
| path | string | yes | The artifact sub-path, e.g. results/report.md. |
| run_id | string | yes | The run id. |
No output schema declared.
No examples provided.
mcg_get_run ~282
Fetch a run's state, event timeline and LLM spend. The payload leads with a derived summary (state, current_stage, billing {quoted_tokens, charged_tokens, hold, policy}, fault, refusal, next, last event) for cheap polling, then app_url (the run page, for the human), study and headline. events holds the newest events that fit about 12 KB plus the last complete or fail event; events_omitted counts the others. In a payload over 2 KB, each value over 256 chars becomes {omitted_bytes, see}, where see names the route that returns the full event. A report body_md over 6,000 chars becomes the same stub; a brief body_md is cut at 6,000 chars and ends in an ellipsis; llm_spend.calls holds the newest 10 calls, and calls_omitted counts the rest. A done, node-addressed run also carries record (its OpenMaterials SimulationRecord), openmaterials_url (the datasheet link) and openmaterials_label: null, or the commons' note when the record cites a model, configuration or code that is not in the public registry (record.unregistered lists each model and configuration), so its values cannot be checked against the commons.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | yes | The run id from mcg_run. |
No output schema declared.
No examples provided.
mcg_get_study ~87
Fetch a study (the project a quote's `study` named) with its member simulations and their latest runs. Pass study_id or the exact name. Returns study, members (each with app_url) and app_url.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The exact study name given to mcg_quote or mcg_stage. |
| study_id | string | – | The study id. |
No output schema declared.
No examples provided.
mcg_list_runs ~93
List runs, newest first: every run of this key's owner, or one quote's runs when quote_id is given. Each row carries state, spend_tokens, created_by_key_name (null when launched in the browser), study, headline (the AI brief's first line) and app_url. Returns runs.
| Name | Type | Req | Description |
|---|---|---|---|
| quote_id | string | – | Optional: the quote_id (simulation) to list runs for. |
No output schema declared.
No examples provided.
mcg_quote ~1,321
Price a simulation. FREE: no hardware starts. Returns quote_id, quote_hash, tokens, rate_card_version, wall_s, expires_at, resource_class, resource_label and sku (the GPU class the quote is bound to, its name, and the offer SKU it priced; null when none was chosen), resource_options (one row per class the run can rent at this venue: resource_class, label, sku, tokens, wall_s, available; tokens and wall_s are what this quote would be on that class, null when it has no live offer now; re-quote with resource_class to pick one), the plan, and record: {traced: true, node, node_uid, map_version (the openmaterials graph version the node is pinned at; the commons map version is published at openmaterials.ai/data/version.json), material (the material the pinned conditions name: what the run computes)} when the completed run's OpenMaterials record is keyed on that public map node (measured instances cite the method that ran), else {traced: false, reason}. Research coordinators remain traced:false because they have no single public-node pin, but add record.record_contract: per-task omai completion requirements and the approved contract_sha256. Scientific tasks require simulation records; source-integrity QA requires node-less light_evidence, not scientific results. This is a required contract, not evidence that a run has completed; read it before you spend. The price is a binding ceiling: never more than this. mcg_run accepts only this quote_id with this quote_hash before expires_at and REJECTS a stale hash (quote_mismatch) or an expired quote (quote_expired). Arms, exactly one: kind from mcg_catalog (spec passed through verbatim, spec.params set the price, engine overrides the default only with a known engine id); external_frontier, an OpenMaterials external-solve envelope from mcg_catalog's graphs (also returns request_id, plan_digest and the compiled plan; an envelope not byte-equal to a supported graph REJECTS with unsupported_graph); draft_id (see the parameter). Also re…
| Name | Type | Req | Description |
|---|---|---|---|
| conditions | object | – | Kind arm only: physical conditions as key/value pairs, e.g. {T: 300}. Values are numbers, strings or lists of up to 16 of them, except on an adapter engine, which runs them: there any value its condi… |
| draft_id | string | – | Third arm: price a draft that mcg_stage created and whose inputs have been uploaded (refuses with inputs_missing while any declared input is absent). Also re-prices an already-quoted simulation, afte… |
| engine | string | – | Optional engine id override (rejected if unknown). |
| external_frontier | object | – | The OpenMaterials #110 external-solve envelope, verbatim. Mutually exclusive with kind/spec/engine. |
| kind | string | – | Simulation kind from mcg_catalog, e.g. bulk_kappa. |
| material | string | – | Kind arm only: the material or formula being simulated (e.g. Si, MoS2). Also selects the reference structure. On a traced run whose engine fixes its own conditions it must match the spec's material. |
| max_tokens | integer | – | Graph arm only: quote-time hard ceiling; a quote above it REJECTS (never clamps). |
| name | string | yes | A human label for the simulation. |
| resource_class | string | – | The GPU class to run on, from a previous reply's resource_options (e.g. gpu-ampere-80). The quote prices that class only and the run rents only it: no fallback to another class, so it waits in quoted… |
| spec | object | – | The spec object, e.g. {params: {...}, spec_yaml: '...'}. params drive the price. interface_tbc: params.production_steps and params.equilibration_steps set the NEMD budget (the run total across all in… |
| structure_xyz | string | – | Kind arm only: the simulated structure as extended-XYZ text; staged as the input structure.xyz so the app renders the exact geometry (takes precedence over the material reference). |
| study | string | – | The study (project) this simulation belongs to, by exact name; created if absent. Every quote for one investigation should name the same study so the app groups them together. |
| target | object | – | Run on one of your connected clusters (see mcg_clusters) instead of the cloud: hardware cost 0, gate fee per the rate card and plan, wall time includes the scheduler's queue-wait estimate. The cluste… |
No output schema declared.
No examples provided.
mcg_rates ~35
The public rate card: token_usd, overheads, rate_card_version. FREE, no arguments; also a connectivity check.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mcg_run ~192
Launch the quoted simulation. SPENDS TOKENS: provisions hardware and bills the account. Requires the quote_id and quote_hash from mcg_quote (a stale hash or an expired quote REJECTS: re-quote and retry) and a client-generated idempotency_key (replaying it returns the existing run instead of launching twice). Optional max_tokens is a hard ceiling: a quote above it REJECTS the launch, never clamps. Returns run_id.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | Client-generated key; retrying a launch with the same key must not double-charge. |
| max_tokens | integer | – | Hard token ceiling: the launch is REJECTED if the quote exceeds it. |
| quote_hash | string | yes | The quote_hash mcg_quote returned: proves the launch prices the exact quote the client saw. |
| quote_id | string | yes | The quote_id returned by mcg_quote. |
No output schema declared.
No examples provided.
mcg_stage ~304
Create a DRAFT simulation whose input files are uploaded before pricing. FREE. Takes the same kind, spec, study, material and conditions as mcg_quote plus inputs: one entry per file the run needs, each with a name and, for small text files, the text inline (staged immediately). Entries without text come back in uploads as presigned PUT URLs (valid 15 minutes, 4 GiB per file): upload each with a plain HTTP PUT of the file bytes, no key or header. Then call mcg_quote with draft_id to price; it REJECTS with inputs_missing until every declared input has arrived.
| Name | Type | Req | Description |
|---|---|---|---|
| conditions | object | – | Physical conditions: numbers, strings or lists of up to 16 of them (on an adapter engine, any value its conditions schema allows). On a traced run whose engine fixes its own conditions, a key or valu… |
| engine | string | – | Optional engine id override. |
| inputs | array | yes | The input files the run needs. |
| kind | string | yes | Simulation kind from mcg_catalog. |
| material | string | – | The material or formula simulated. |
| name | string | yes | A human label for the simulation. |
| spec | object | yes | The spec object; params drive the eventual price. |
| study | string | – | The study (project) this simulation joins, by exact name; created if absent. |
No output schema declared.
No examples provided.
How do I install the MaterialsCodeGraph MCP server?
MaterialsCodeGraph is a hosted endpoint at https://api.materialscodegraph.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.materialscodegraph.com
claude mcp add --transport http com-materialscodegraph-mcg 'https://api.materialscodegraph.com/mcp'
What is the MaterialsCodeGraph MCP server?
MaterialsCodeGraph is an MCP server listed in the public MCP registry as com.materialscodegraph/mcg. Materials simulations for AI agents over MCP: binding token quote before every run, record after it. This page covers its hosted endpoint (https://api.materialscodegraph.com/mcp).
Is the MaterialsCodeGraph MCP server safe to use?
MaterialsCodeGraph scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the MaterialsCodeGraph MCP server expose?
MaterialsCodeGraph exposes 12 tools: mcg_catalog, mcg_rates, mcg_quote, mcg_clusters, mcg_stage, and 7 more. Their descriptions and schemas cost roughly 3,036 tokens of context every time the server is loaded.
Does the MaterialsCodeGraph MCP server require authentication?
Yes. MaterialsCodeGraph asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the MaterialsCodeGraph MCP server still maintained?
MaterialsCodeGraph is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.