Local MCP capabilities provider for Expo
Report which Guard libraries this server can introspect, and at which version. Call this first, before trusting any answer about a version-specific feature. It takes no arguments. Returns guard_core_mcp (this server's version), installed (the guard-core, fastapi-guard and guard-agent versions live in this interpreter), and docs_bundled_for and knowledge_bundled_for (the versi
ArgumentsA call is made on an account: it counts against an allowance and the publisher sees it, which is why this one asks who you are first.
What it does
- Validates SecurityConfig against your installed Pydantic model- Runs the real penetration-detection engine on payloads- Searches Guard docs across all five language ports
Quickstart
# 1 — sign in once: npx mcprush@latest login
# it asks for a key from mcprush.com/dashboard#access
# 2 — install
npx mcprush@latest add guard-core/guard-core-mcp
# 3 — ask your agent for something these tools do
# versions, validate_config, config_fields and 6 more
Windows PowerShell says 'running scripts is disabled on this system'? Run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned once, or type npx.cmd instead of npx (codex.cmd, gemini.cmd, grok.cmd likewise). PowerShell 7 needs neither.
Guard Core costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine — this server runs on the publisher’s own infrastructure behind our gateway, and what you install is the connection to it.
Claude Code has its own MCP command, and the key rides on it as a header — the gateway refuses a call that carries none. Claude Code reads MCPRUSH_KEY each time it connects, so the key stays out of its config: export your key from Access in your shell profile (macOS, Linux), or run setx MCPRUSH_KEY <your key> and open a new terminal (Windows). Or let npx mcprush@latest add guard-core/guard-core-mcp write the entry with the key for you; --scope user makes it available in every project.
claude mcp add --transport http --scope user guard-core-mcp https://mcprush.com/gw/guard-core-mcp/mcp --header 'Authorization: Bearer ${MCPRUSH_KEY}'Reconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing at the gateway. The server itself runs on the publisher’s own infrastructure, so nothing from this listing executes on your machine.
9 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Report which Guard libraries this server can introspect, and at which version. Call this first, before trusting any answer about a version-specific feature. It takes no arguments. Returns guard_core_mcp (this server's version), installed (the guard-core, fastapi-guard and guard-agent versions live in this interpreter), and docs_bundled_for and knowledge_bundled_for (the versi
No parameter schema on file.
Check a Guard config dict against the installed library's real pydantic model. Use this to confirm a config is valid, or to find out why a setting seems to have no effect. Use config_fields instead when you do not yet know the setting's name. Returns valid (bool), package, version, model, errors (type errors, each with field, message and input), unknown_fields (each with name and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| config | object | yes | SecurityConfig fields to validate |
| package | string | no | Which Guard library to validate against: fastapi-guard, guard-core or guard-agent |
Find a Guard config setting by name or by what it does, with type and default. Use this to learn what a setting means, or whether a setting for some behaviour exists at all. Use validate_config instead to check a whole config you already wrote, and search_docs for prose explanations rather than field metadata. Returns package, version, query, exact and matches. An exact field nam
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | A config field name, or words describing what the setting should do |
| package | string | no | Which Guard library to search: fastapi-guard, guard-core or guard-agent |
Search the bundled Guard documentation and return ranked, citable pages. Use this to answer how or why questions from documentation, and to find the page to read in full with get_doc. Use config_fields instead for a setting's type and default, and adapter_setup or wire_agent for install and wiring steps. Returns query and results. Each result has package, path, heading, snippet,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Words to search the bundled documentation for |
| package | no | Restrict the search to one library: fastapi-guard, guard-core or guard-agent. Omit to search all three | |
| limit | integer | no | Maximum number of results to return |
Return the full text of one bundled Guard documentation page. Use this after search_docs when a snippet is not enough; it does not search. The package and path come from a search_docs result. Returns package, path, url (the live page to cite) and content (the full markdown). An unknown package or a path that does not exist returns {"error": "unknown doc path"}; the two cases
| Parameter | Type | Required | Notes |
|---|---|---|---|
| package | string | yes | The library the page belongs to, taken from a search_docs result |
| path | string | yes | The page path, taken from a search_docs result |
Run one synthetic request through guard-core's real penetration-detection engine. Use this to confirm that an attack payload is caught, or to explain why a benign request was flagged. Use validate_config instead to check a config, not a request. Returns is_threat (bool), trigger_info (the matched parameter and pattern, empty when clean), threat_categories (for example sqli or xss
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Request path, e.g. /login or /api/v1/items |
| method | string | no | HTTP method of the request |
| query | no | Query parameters of the request | |
| headers | no | Request headers | |
| body | no | Request body as a raw string or a JSON object or array, which is serialized for you | |
| config | no | SecurityConfig fields to override the detection defaults with; enable_redis is always forced off in this sandbox |
Survey the whole Guard ecosystem: every language, engine, adapter and agent. Use this to resolve a package name or compare languages. It takes no arguments. When you already know the language and framework, use adapter_setup for one adapter or wire_agent for the telemetry agent instead, which return less. Returns the full registry for five languages (python, go, typescript, php,
No parameter schema on file.
Get the install command and a verified minimal integration for one Guard adapter. Use this when you know the language and web framework and want working setup code. Use ecosystem instead to survey every adapter, and wire_agent to set up telemetry. Returns language, engine (package, install command, release_status and conformance status of the engine the adapter depends on) and ad
| Parameter | Type | Required | Notes |
|---|---|---|---|
| language | string | yes | One of python, go, typescript, php, rust |
| framework | string | yes | The adapter slug (gin, fastify, laravel, axum, fastapi) or the adapter package name |
Get how to set up the Guard telemetry agent for one language. Use this to ship security events and metrics to the guard-core-app backend. Use adapter_setup instead for the request-blocking middleware itself. Returns language, agent (package, install command, release_status, quick-start snippet, and a summary of its buffer, flush, overflow and retry semantics), ingestion (the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| language | string | yes | One of python, go, typescript, php, rust |
| framework | no | Optional adapter slug of that language to add integration notes for |
- Every tool, no call limit, and mcprush charges nothing
- A buyer key from your dashboard — the gateway refuses a call without one
- Answers through our gateway, so every call is in your log
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Guard Core or to call it, and its free tier carries no monthly call limit.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (9 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| versions | no tags | |
| validate_config | no tags | |
| config_fields | no tags | |
| search_docs | no tags | |
| get_doc | sensitive-source | sensitive-source: keyword "read_file" |
| check_payload | no tags | |
| ecosystem | no tags | |
| adapter_setup | no tags | |
| wire_agent | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
The gateway serves every install the publisher’s current release, so a release cannot be pinned or rolled back to here yet. The history below is for reading; the current release on file is 1.6.0.
- Added new MCP registries and updated documentation
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Guard Core can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.