MCP Server Security Checklist (2026)
Concrete checks for MCP servers and the clients that connect to them, from tool descriptions to tokens, transport, tool results, local servers and logging, each with how to verify it and the exact IDs.
https://veriprajna.com/ai-services/ai-agent-mcp-security-assessment/mcp-server-security-checklist
All 32 checks
Thirty-two checks for teams that build MCP servers or connect agents to them. Each says why it matters, how to verify it, and which spec section or standard it comes from.
Tool descriptions and metadata
The model reads every tool name, description, schema and annotation before it picks a call. That text is attack surface, whether you wrote the server or only connect to it.
5 checks
Caught by MCP TD-1
-
A hidden instruction in a description is tool poisoning: the model may follow it while the user sees a harmless tool.
How to verify TD-1
Dump
tools/from each server and read the raw JSON, not the client's rendered view. Look in descriptions, parameter descriptions, enum values, examples and annotations for imperative text addressed to the model: "before using this tool", "do not mention", references to other tools, or to files such aslist ~/..ssh Strip or flag tag-block (U+E0000 to U+E007F), variation-selector (U+FE00 to U+FE0F) and zero-width (U+200B, U+200C, U+200D, U+2060) characters. OWASP LLM01:2026 lists them as invisible carriers of instructions.
The known example: in April 2025 Invariant Labs published a researcher demonstration on Cursor in which a tool claiming to add two numbers hid instructions to read the MCP config file and the user's SSH key and pass them in a tool parameter; the agent complied.
Standards: MCP03:2025 Tool Poisoning; ASI02 Tool Misuse and Exploitation (ASI04 if the server is malicious at source); AML.T0110.000 Definition and Instructions; LLM01:2026 Prompt Injection, mitigation 10
-
Annotations are hints. The spec says clients must treat them as untrusted unless they come from trusted servers.
How to verify TD-2
Find every place the client reads
annotations(for example to auto-approve "read-only" tools). For servers you do not control, that path must behave as if the annotation were absent. The schema note says everyToolAnnotationsproperty is only a hint that may not describe the tool's behaviour faithfully, and that clients should never make tool use decisions based on annotations from untrusted servers. Test: serve a tool markedreadOnlyHint: truethat writes data, and confirm the client still asks.Standards: MCP spec 2026-07-28, Tools > Tool (clients MUST consider tool annotations untrusted unless from trusted servers); Schema > ToolAnnotations; MCP03:2025 Tool Poisoning
Source: MCP spec 2026-07-28: Tools
-
An approved tool can change later (a rug pull). Approval at install time does not cover the next version or a changed remote server.
How to verify TD-3
Snapshot
tools/at approval time and store a hash per tool. On every connection, and on eachlist notifications/, diff against the snapshot. Compare per credential: the spec allows the tool set to change over time and to vary by the authorization presented on the request.tools/ list_ changed Pinning a package version does not cover a remote server. OWASP LLM01:2026 also notes that pinning does not stop a payload shipped in the pinned version, or description poisoning that leaves the version unchanged, so the content hash matters more than the version string.
Standards: AML.T0109 AI Supply Chain Rug Pull; ASI04 Agentic Supply Chain Vulnerabilities, mitigation 7 (pin by content hash); MCP spec 2026-07-28, Tools > List Changed Notification
Source: MITRE ATLAS v2026.09
-
Tool names are unique only within one server, and one server's description can change how the agent uses another server's tool (cross-server shadowing).
How to verify TD-4
List the tools the model actually sees across all connected servers. Two
searchorsend_tools from different servers is a collision. The spec says aggregating clients SHOULD implement a disambiguation strategy such as prefixing tool names with a server identifier, and SHOULD NOT rely on the serveremail namefromserverInfo. Then search each description for the names of tools that belong to other servers: Invariant Labs showed a description that modified the agent's behaviour toward a trusted server's tool.Standards: MCP spec 2026-07-28, Tools > Tool Names (SHOULD implement a disambiguation strategy); ASI02 Tool Misuse and Exploitation, mitigation 7 (fully qualified tool names); AML.T0110.000 Definition and Instructions
-
Clients pass this text to the model, and OWASP says to assume anything in the model's context is discoverable. Authorization must not depend on it staying hidden.
How to verify TD-5
Grep tool definitions for keys, tokens, connection strings, internal URLs and phrases such as "only admins may". Any rule written in a description must also be enforced in the tool handler (see AU-5).
Standards: LLM08:2026 Hidden Context Exposure; MCP01:2025 Token Mismanagement & Secret Exposure
Authorization and tokens
Authorization is optional in MCP, but when an HTTP server supports it the token rules are mostly MUST and MUST NOT. Server items come first, then client items.
9 checks
Caught by MCP AU-1
-
A token minted for another service must not work here. In the official TypeScript SDK the audience check is a setting that is off by default, even after the fix for GHSA-rvq5-wwqv-78pq.
How to verify AU-1
Get a valid token from the same authorization server for a different resource and call a tool with it. The server must answer 401; the spec says invalid or expired tokens MUST receive HTTP 401.
Read the code path: the audience (
aud) check must run in your token verifier, not only at a gateway. GHSA-rvq5-wwqv-78pq (October 2026): server bearer authentication in the MCP TypeScript SDK accepted tokens issued for a different service. Affected:@modelcontextprotocol/1.6.0 through 1.31.0 (fixed in 1.32.0) and the 2.x server packages listed in the advisory. Upgrading alone changes nothing: setsdk expectedResourceand return the token's audience asAuthInfo., or reject any token whoseresource auddoes not include your server insideverifyAccessToken().Standards: MCP spec 2026-07-28, Authorization > Token Handling (MUST validate that access tokens were issued specifically for them as the intended audience); MCP07:2025 Insufficient Authentication & Authorization; ASI03 Identity and Privilege Abuse
-
Passthrough lets clients bypass the controls your server enforces and breaks the audit trail. The spec forbids it outright.
How to verify AU-2
Trace each upstream call. The
Authorizationheader sent upstream must carry a token the upstream authorization server issued to your server, never the inbound bearer token. Grep for code that copies the incomingAuthorizationheader into outbound requests.Standards: MCP spec 2026-07-28, Security Best Practices > Token Passthrough ("MCP servers MUST NOT accept any tokens that were not explicitly issued for the MCP server"); Authorization Security Considerations (MUST NOT pass through); ASI03 Identity and Privilege Abuse
-
Without it, a consent cookie from an earlier sign-in lets an attacker's newly registered client receive an authorization code (a confused deputy attack).
How to verify AU-3
Check the protections the spec lists as MUST for proxy servers:
- A per-user registry of approved
client_values, checked before the third-party flow startsid - A consent page that names the client, shows the third-party scopes and the registered
redirect_, has CSRF protection and blocks framing (uri frame-ancestorsorX-Frame-Options: DENY) - If consent is tracked in cookies: the
_prefix,_ Host- Secure,HttpOnly,SameSite=Lax, cryptographically signed (or server-side sessions instead), and bound to theclient_id - Exact string matching on
redirect_uri - A random, single-use
statewith a short expiry, set only after consent
Test: sign in once through the legitimate client, register a second client with a redirect URI you control, then open a crafted authorization link for it. The proxy must show its own consent screen.
Standards: MCP spec 2026-07-28, Security Best Practices > Confused Deputy Problem (proxy servers MUST implement per-client consent); ASI03 Identity and Privilege Abuse
- A per-user registry of approved
-
A stolen token with broad scopes reaches every tool, and one omnibus scope hides what a person actually approved.
How to verify AU-4
Review
scopes_and thesupported WWW-Authenticatechallenges your server sends. The spec lists these as common mistakes: publishing all possible scopes inscopes_; wildcard or omnibus scopes (supported *,all,full-access); returning the entire scope catalog in every challenge; treating claimed scopes in a token as sufficient without server-side authorization logic. Call a privileged tool with a basic token and confirm you get a scope challenge, not the action.Standards: MCP spec 2026-07-28, Security Best Practices > Scope Minimization; MCP02:2025 Privilege Escalation via Scope Creep; LLM03:2026 Excessive Agency
-
The spec requires servers to implement proper access controls. The model can be talked into any argument, so the check has to live in code.
How to verify AU-5
With two test users, call each tool with the other user's object IDs (records, file paths, handles) and expect a denial. The spec lets a server return only the tools a caller's scopes permit, but the call itself must still be checked: a hidden tool is not a protected tool.
Standards: MCP spec 2026-07-28, Tools > Security Considerations (Servers MUST implement proper access controls); MCP07:2025 Insufficient Authentication & Authorization; LLM03:2026 Excessive Agency, mitigation 7
Source: MCP spec 2026-07-28: Tools
-
The resource parameter binds the token to the server you meant; PKCE helps prevent authorization code interception. Both are MUST for MCP clients.
How to verify AU-6
Capture the authorization and token requests.
resourcemust appear in both and equal the server's canonical URI.code_must bechallenge_ method S256. The client must refuse to proceed when the authorization server's metadata has nocode_.challenge_ methods_ supported Standards: MCP spec 2026-07-28, Authorization > Resource Parameter Implementation (MUST); Authorization Security Considerations > Authorization Code Protection (MUST implement PKCE); MCP07:2025
-
A malicious MCP server can name its own authorization server. A 2026 TypeScript SDK flaw, GHSA-6qxp-vccf-f47h, let one receive a stored refresh token and client secret.
How to verify AU-7
Connect a client that already holds credentials for a legitimate authorization server to a test MCP server whose metadata names a different authorization server. No stored
refresh_ortoken client_may be sent to it.secret GHSA-6qxp-vccf-f47h (October 2026): in the official MCP TypeScript SDK, a malicious or compromised MCP server could make the client send stored OAuth credentials to an authorization server of its choosing. Affected:
@modelcontextprotocol/from 1.12.0 to before 1.31.0, andsdk @modelcontextprotocol/from 2.0.0 to before 2.2.0 (for 2.x only in the cases the advisory lists). Upgrading is not enough on its own: credentials saved before the upgrade need anclient issueror must be cleared, and bundled providers needexpectedIssuer.Standards: MCP spec 2026-07-28, Authorization > Authorization Response Validation (MUST apply RFC 9207 validation); Security Best Practices > Mix-Up Attacks; MCP01:2025 Token Mismanagement & Secret Exposure
-
A malicious server controls these URLs. CVE-2025-6514 let one inject OS commands into mcp-remote through its authorization endpoint.
How to verify AU-8
Serve test metadata with
javascript:,data:,file:andvbscript:authorization URLs, and with URLs containing shell metacharacters; the client must reject all of them. The spec says clients MUST NOT use shell commands such ascmd.,exe shor PowerShell to open URLs, MUST sanitize and validate all URLs received from servers, and lists logging suspicious authorization URLs among the input-sanitization steps. CVE-2025-6514 affected mcp-remote from 0.0.5 and was fixed in 0.1.16.Standards: MCP spec 2026-07-28, Security Best Practices > OAuth Authorization URL Validation (MUST); MCP05:2025 Command Injection & Execution
-
During OAuth discovery the client fetches URLs a malicious server chose. That can reach internal services or
169.(server-side request forgery).254. 169. 254 How to verify AU-9
Point the client at a test server whose
resource_,metadata authorization_orservers token_values nameendpoint http://,169. 254. 169. 254/ http://or alocalhost:6379/ 10.address, and at a public URL that redirects to one. The spec says clients deployed to a server MUST consider SSRF, and SHOULD require HTTPS, block private and reserved ranges, apply the same checks to redirect targets, and consider an egress proxy. It also warns not to write IP validation by hand, and to watch for DNS rebinding between check and use.x Standards: MCP spec 2026-07-28, Security Best Practices > Server-Side Request Forgery (MUST consider; SHOULD block private ranges); MCP05:2025 Command Injection & Execution
Transport, state handles and legacy sessions
MCP 2026-07-28 is stateless and has no protocol-level sessions. Servers keep state with explicit handles; servers on 2025-11-25 or earlier still use session IDs.
5 checks
Caught by MCP TR-1
-
Without this, a web page can use DNS rebinding to reach an MCP server running on a developer's machine.
How to verify TR-1
Send requests with a foreign
Origin(for examplehttps://) and confirm HTTP 403. The response body MAY carry a JSON-RPC error with noattacker. example id.Standards: MCP spec 2026-07-28, Transports > Streamable HTTP > Security & Endpoint (MUST validate the Origin header; MUST respond with HTTP 403)
-
A local server listening on all interfaces, or without authentication, can be driven by other processes. CVE-2025-49596 left the MCP Inspector proxy without authentication.
How to verify TR-2
Run
lsof -iornetstatwhile the server is up: a listener on0.is a finding. Call the HTTP endpoint without credentials and expect a rejection. CVE-2025-49596 affected MCP Inspector below 0.14.1: missing authentication between the Inspector client and proxy allowed unauthenticated requests to launch MCP commands over stdio.0. 0. 0 Standards: MCP spec 2026-07-28, Streamable HTTP > Security & Endpoint (SHOULD bind only to localhost; SHOULD authenticate all connections); Security Best Practices > Local MCP Server Compromise; MCP07:2025
-
Holding a handle is not proof of identity. A guessed or leaked handle otherwise lets one caller act on another user's cart, workflow or transaction.
How to verify TR-3
Create a handle as user A, then call the tool with it as user B: expect a denial. Check that handles come from a secure random generator (not sequential IDs), expire, and that stored state is keyed as
<user_with the user ID taken from the verified token, not from the request. For servers with no authentication, the handle is a bearer token: check its entropy (for example a UUIDv4) and its lifetime.id>:<handle> Standards: MCP spec 2026-07-28, Security Best Practices > State Handle Hijacking (MUST NOT treat possession of a state handle as authentication; SHOULD bind handles to the user); Tools > Stateful Tools; MCP07:2025
-
The current spec points older servers to the 2025-11-25 Session Hijacking guidance. In 2026 the official Python SDK fixed exactly this gap.
How to verify TR-4
Open a session with token A, then send a request with the same session ID and token B, or no token. The server must reject it.
GHSA-jpw9-pfvf-9f58 (CVE-2026-52869, published 16 July 2026): the MCP Python SDK
mcpup to 1.27.1 routed SSE and stateful Streamable HTTP requests to a session by session ID alone, so anyone who learned or guessed a session ID could send messages on it. Fixed in 1.27.2.Standards: MCP spec 2026-07-28, Security Best Practices > State Handle Hijacking (refers to Session Hijacking in the 2025-11-25 version); MCP07:2025 Insufficient Authentication & Authorization
-
Header values are visible to network intermediaries. A proxy routing on a header while the server acts on the body is a mismatch an attacker can use.
How to verify TR-5
List every input property with an
x-mcp-headerannotation and confirm none is sensitive. Send a request whoseMcp-Param-*header disagrees with the value in the body: the server must reject it with 400 and JSON-RPC error-32020(HeaderMismatch).Standards: MCP spec 2026-07-28, Tools > x-mcp-header (SHOULD NOT mark sensitive parameters); Streamable HTTP > Server Validation (MUST reject mismatches)
Tool inputs and results
Tool arguments come from a model that untrusted text can steer, and tool results go straight back into that model's context. Treat both directions as untrusted input.
5 checks
Caught by MCP TO-1
-
Servers MUST validate all tool inputs. Arguments are chosen by a model, and the model can be steered by text an attacker wrote.
How to verify TO-1
Use
additionalProperties: false, enums, formats and length limits ininputSchema(for a tool with no parameters the spec recommends{ "type": "object", "additionalProperties": false }). Fuzz each tool with shell metacharacters,../path traversal, SQL fragments and oversized values. Pass arguments to processes as argument arrays and to databases as parameterised queries. Do not fetch network$refURIs while validating: the spec says implementations MUST NOT automatically dereference them.Standards: MCP spec 2026-07-28, Tools > Security Considerations (Servers MUST validate all tool inputs); MCP05:2025 Command Injection & Execution; LLM03:2026 Excessive Agency, mitigation 3
Source: MCP spec 2026-07-28: Tools
-
Servers MUST sanitize tool outputs. A ticket, issue or web page your tool returns can carry instructions that steer the agent (indirect prompt injection).
How to verify TO-2
For each tool that returns text someone else wrote (tickets, issues, emails, pages, documents), plant an instruction in that text and check what reaches the client. Labelling third-party text as data reduces injection success in non-adaptive tests only, so it complements, not replaces, the approval and permission items in the AI Agent Security Checklist.
In May 2025 Invariant Labs showed a malicious public GitHub issue steering an agent to copy private-repository data into a public pull request, and noted it "is not a flaw in the GitHub MCP server code itself".
Standards: MCP spec 2026-07-28, Tools > Security Considerations (Servers MUST sanitize tool outputs); MCP06:2025 Prompt Injection via Contextual Payloads; LLM01:2026 Prompt Injection; AML.T0099 AI Agent Tool Data Poisoning
Source: MCP spec 2026-07-28: Tools
-
Tool results enter the model's context and can carry instructions, especially from a malicious or compromised server.
How to verify TO-3
Check where results are passed to the model. Results that fail the declared
outputSchemashould be rejected, not forwarded. Feed a result containing an instruction to call another tool and confirm the client either strips it or the following call needs approval.Standards: MCP spec 2026-07-28, Tools > Security Considerations (Clients SHOULD validate tool results before passing to LLM) and Output Schema (Clients SHOULD validate); LLM01:2026; AML.T0110.002 Runtime Response
Source: MCP spec 2026-07-28: Tools
-
Servers MUST rate limit tool invocations. An agent pushed into a tool loop can burn budget or flood the systems behind your tools.
How to verify TO-4
Drive one tool in a tight loop from a test client and confirm throttling. Check the client aborts a tool call that never returns.
Standards: MCP spec 2026-07-28, Tools > Security Considerations (Servers MUST rate limit; Clients SHOULD implement timeouts); LLM06:2026 Unbounded Consumption; AML.T0034.002 Agentic Resource Consumption
Source: MCP spec 2026-07-28: Tools
-
Form-mode answers pass through the MCP client. URL mode keeps credentials out of the client and the model's context.
How to verify TO-5
Search the server for elicitation requests whose fields ask for passwords, API keys, access tokens or payment details: each is a MUST NOT violation. For URL-mode requests, check the URL carries no user data and does not itself grant access.
Standards: MCP spec 2026-07-28, Elicitation (Servers MUST NOT use form mode for sensitive information; Safe URL Handling, MUST NOT); MCP01:2025 Token Mismanagement & Secret Exposure
Source: MCP spec 2026-07-28: Elicitation
Local servers and supply chain
A local server runs with the client's privileges, and any server can change after you approve it. Know what you run, where it came from and what it can reach.
5 checks
Caught by MCP LS-1
-
Local servers run with the client's privileges. A startup command can download a package and post the user's SSH key elsewhere.
How to verify LS-1
Add a server through your client's one-click flow with a long command that hides
&& curl ...after the visible part. The dialog must show the full command, mark it as code execution, and let the user cancel. The spec's own example of a malicious startup command chainsnpxwithcurl -X POST -d @~/..ssh/ id_ rsa Standards: MCP spec 2026-07-28, Security Best Practices > Local MCP Server Compromise (client MUST show the exact command; MUST require explicit approval); MCP05:2025 Command Injection & Execution
-
The spec says clients should warn that servers run with the client's privileges and should sandbox them. A sandbox limits what a poisoned server can reach.
How to verify LS-2
From inside the server process, try to read
~/., the browser profile and other servers' configs, and to open an outbound connection. Each should fail unless explicitly granted. If a local proxy spawns stdio servers, the spec adds: sandbox the spawned processes, restrict their file access, log all stdio usage and require extra authorization for dangerous commands.ssh Standards: MCP spec 2026-07-28, Security Best Practices > Local MCP Server Compromise (SHOULD sandbox) and stdio Transport Security in Proxy Scenarios; AML.M0032 Segmentation of AI Agent Components
-
Servers set up for convenience often run with default credentials and permissive configuration, outside anyone's review.
How to verify LS-3
Collect the MCP client configuration files from developer machines and agent deployments, list remote server URLs seen in egress logs, and compare both against the approved list.
Standards: MCP09:2025 Shadow MCP Servers; ASI04 Agentic Supply Chain Vulnerabilities, mitigation 1 (inventory of AI components)
Source: OWASP MCP Top 10
-
A compromised dependency can change agent behaviour. MCP packages and developer tools have had critical advisories, for example CVE-2025-6514 and CVE-2025-49596.
How to verify LS-4
Check lockfiles exist and are enforced in CI. Subscribe to the GitHub advisory database for the packages you depend on. Fixed versions for the advisories cited in this checklist: mcp-remote 0.1.16 (CVE-2025-6514), MCP Inspector 0.14.1 (CVE-2025-49596), MCP Python SDK 1.27.2 (GHSA-jpw9-pfvf-9f58), MCP TypeScript SDK 1.31.0 or
@modelcontextprotocol/2.2.0 (GHSA-6qxp-vccf-f47h), plusclient expectedIssueron bundled providers andissueradded to (or clearing of) credentials saved before the upgrade; and 1.32.0, or@modelcontextprotocol/2.3.0 (withserver @modelcontextprotocol/2.0.2 if used), withexpress expectedResourceset and the token audience returned asAuthInfo.(GHSA-rvq5-wwqv-78pq).resource Standards: MCP04:2025 Software Supply Chain Attacks & Dependency Tampering; LLM04:2026 Supply Chain; ASI04 Agentic Supply Chain Vulnerabilities, mitigation 2; AML.T0010.005 AI Agent Tool
Source: OWASP MCP Top 10
-
Users must consent before their data is exposed to a server, and every enabled tool widens what an injected agent can do.
How to verify LS-5
For each third-party server, write down the data classes it can see through tool arguments and context, and disable unused tools in the client configuration. Check whether context from one task or user can reach a server meant for another.
Standards: MCP spec 2026-07-28, Key Principles > Data Privacy; LLM03:2026 Excessive Agency, mitigation 1; MCP10:2025 Context Injection & Over-Sharing
Logging and audit
If you cannot tell afterwards which tool was called, by whom and with what, you cannot investigate an incident or show a fix held.
3 checks
Caught by MCP LG-2
-
Clients should log tool usage for audit. Without it, an attack path through your tools cannot be reconstructed.
How to verify LG-1
Run one tool call end to end and find its record on both client and server. Confirm the agent and its tools have no write or delete access to the audit store.
Standards: MCP spec 2026-07-28, Tools > Security Considerations (Clients SHOULD log tool usage for audit purposes); MCP08:2025 Lack of Audit and Telemetry; AML.M0024 AI Telemetry Logging
Source: MCP spec 2026-07-28: Tools
-
MCP log messages must not contain credentials or personal information. Tokens left in logs or traces are a common way they leak.
How to verify LG-2
Grep a day of logs and traces for bearer tokens,
refresh_, API key prefixes and email addresses. Check who can read the logs; the spec says implementations should control log access, and that clients and servers must store tokens securely.token Standards: MCP spec 2026-07-28, Logging > Security (MUST NOT contain credentials or secrets); Authorization Security Considerations > Token Theft (MUST implement secure token storage); MCP01:2025
Source: MCP spec 2026-07-28: Logging
-
These events show scope creep, token misuse and rug pulls as they happen, not weeks later.
How to verify LG-3
Trigger each event in a test environment and confirm a log line with a correlation ID. The spec's scope guidance says to log elevation events (scope requested, granted subset) with correlation IDs, and its URL validation section lists logging suspicious authorization URLs.
Standards: MCP spec 2026-07-28, Security Best Practices > Scope Minimization and OAuth Authorization URL Validation; MCP02:2025 Privilege Escalation via Scope Creep; MCP08:2025; AML.T0109
Sources: MCP specification 2026-07-28 (Key Principles, Tools, Schema, Authorization, Authorization Security Considerations, Security Best Practices, Streamable HTTP, Elicitation, Logging); OWASP MCP Top 10 (beta, 2025 IDs); OWASP Top 10 for LLM Applications 2026; OWASP Top 10 for Agentic Applications for 2026; MITRE ATLAS release v2026.09; GitHub advisories GHSA-6xpm-ggf7-wc3p (CVE-2025-6514), GHSA-7f8r-222p-6f5g (CVE-2025-49596), GHSA-jpw9-pfvf-9f58, GHSA-6qxp-vccf-f47h, GHSA-rvq5-wwqv-78pq.
Read more
How to use it. Items that start "As a client", plus TD-2 to TD-4 and LS-1 to LS-2, apply if you build an agent or host; the rest apply if you build a server. If you only connect your staff's assistants to third-party servers, start with TD-1 to TD-4, LS-1 to LS-5 and LG-1.
What the words mean. MUST, MUST NOT, SHOULD and SHOULD NOT in the references are the specification's own requirement levels, quoted from revision 2026-07-28. OWASP mitigation numbers refer to the numbered list in that entry. The OWASP MCP Top 10 is in beta, and its IDs carry the year 2025.
What it does not cover. The agent side (prompt injection paths, approval gates, memory and the paths data can take out) is in the companion AI Agent Security Checklist. A checklist shows what to check; it does not show what an attacker can chain together on your running system. That is what an MCP security audit tests.
Get your AI agents and MCP servers tested
Start with a short discovery call about what your agents can reach and which of these checks you want tested on your system.
- Email or WhatsApp us
- Reply within 1 business day
- Free 30-minute discovery call
- Written scope and fixed fee within 2 business days of the call