Skip to main content
Glama

SRI — MCP Server Inspector

Check what an MCP server does before connecting to it

check_mcp_server
Read-only

Free, no key required. Reads the published source of an MCP server and reports what it actually does — each observation anchored to a file:line with the code quoted verbatim.

Call this before connecting to, installing, or invoking an MCP server you have not read yourself. Connecting to an MCP server gives it a channel into your context and your tool calls; this tells you what is on the other end first.

Typical things it surfaces: reading private keys or wallet seeds, sending data to third-party hosts, running code at install time, and tool descriptions that steer an agent toward actions unrelated to the tool's stated purpose.

Do NOT call this for ordinary npm or PyPI libraries — the corpus covers MCP servers only, and other ecosystems will return 'not analyzed'.

This reports observations, not a safety verdict. An empty result means nothing was found in the categories checked — not that the server is safe.

Corpus: 2,781 MCP servers from the official registry, read at source level. Coverage index (free, no key, findings not included): GET https://sri-test.biz/v1/corpus

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe registry name (e.g. 'io.github.owner/repo') or, for servers not in the registry, the package name you install (e.g. '@modelcontextprotocol/server-filesystem'). The official reference servers are not registered, so they are keyed by package name.
versionYesExact version, e.g. '1.2.3'.
ecosystemNoAlways 'mcp'. Other ecosystems are not covered.mcp
l402_tokenNoDeprecated and ignored. Payment, when charged, is over x402 (USDC on Base) via HTTP 402.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
statusYes'queued' means nothing has been checked yet — it is not a clean result. 'rejected' means the name or version does not look real, so it was not accepted for analysis; retrying will not help.
messageNo
summaryNo
versionYes
findingsYesObservations, not verdicts. An empty array is not a clearance.
ecosystemYes
price_usdNo
disclaimerYes
risk_levelNo'insufficient_evidence' means the published artifact contains no implementation code to read (metadata and documentation only), so no judgement was made. It does not mean nothing is there.
source_urlNo
analyzed_atNo
org_decisionNo
content_sha256NoHash of exactly what was read, so the claim is checkable.
analyzer_versionNo
quoted_price_usdNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint=true annotation, the description discloses several important behavioral traits: it is free and requires no key, it reads the published source of servers from a corpus of 2,781 entries, it reports observations rather than a safety verdict, and an empty result means 'nothing found in categories checked', not safety. It also notes that l402_token is deprecated and ignored, and that payment, when charged, happens over x402. This is rich, candid behavioral context that goes well beyond the structured annotation field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately compact for a security-relevant tool, with each sentence adding a distinct piece of value: the free no-key nature, the file:line anchors, the call-before-connecting guidance, the kinds of findings, the negative use-case, the observation-versus-verdict caveat, and the corpus scope. It is front-loaded with the most decision-relevant fact (what the tool does and that it is free/private). No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has an output schema, an annotations block, and 100% schema coverage, the description still adds essential context: when to call it, what not to call it for, the meaning of an empty result, the corpus size and coverage index, and the x402 payment nuance. An agent has everything needed to select, invoke, and interpret this tool correctly without hunting elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters. The description adds extra meaning by clarifying that 'name' can be either a registry name or a package name for unregistered reference servers, and by stating that 'ecosystem' always defaults to 'mcp' and that l402_token is deprecated/ignored. These additions go beyond the raw schema descriptions and help an agent form correct inputs, though the schema already carries most of the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource: it reads the published source of an MCP server and reports observations anchored to file:line with quoted code. This goes beyond a generic 'check' by stating exactly what is returned and how, and it clearly differentiates from the sibling get_corpus_coverage, which is about corpus coverage rather than single-server analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit condition for use ('Call this before connecting to, installing, or invoking an MCP server you have not read yourself') and an explicit exclusion ('Do NOT call this for ordinary npm or PyPI libraries'). It also names the sibling tool indirectly by pointing to corpus coverage as a separate concern, so the agent knows when this tool is and isn't appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.9/5.0
Disambiguation5/5

The two tools serve clearly distinct purposes: one checks a specific MCP server's source-level behavior, while the other provides aggregate corpus coverage statistics. There is no overlap or realistic chance of selecting the wrong tool.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern with snake_case: check_mcp_server and get_corpus_coverage. The naming convention is uniform and immediately signals what each tool does.

Tool Count4/5

Two tools is slightly below the typical 3-15 range, but the server has a narrow, focused purpose and each tool earns its place in the workflow. The count feels intentional rather than incomplete.

Completeness5/5

For the stated domain of inspecting MCP servers before connection, the surface is complete: get_corpus_coverage gives corpus-level context, and check_mcp_server gives the per-server inspection. There are no dead ends or missing lifecycle steps.