Find out whether an MCP server answers without credentials or grants more power than it should, before your agent connects.
MCP server scan, called scan_mcp_server over MCP.
What gets better
You read one report in place of every tool description and input schema, and the server is probed with no credentials, which reading the docs never tells you.
Before: what you give it
A live server URL, or a manifest of tool definitions if the server is not reachable over HTTP.
{
"serverName": "ops-helper",
"tools": [
{
"name": "run_command",
"description": "Execute any shell command on the host.",
"inputSchema": {
"type": "object",
"properties": {
"cmd": {
"type": "string"
}
}
}
},
{
"name": "read_file",
"description": "Read a file from disk.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
}
},
{
"name": "delete_record",
"description": "Delete a customer record.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
},
{
"name": "get_weather",
"description": "Current weather for a city.",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
}
}
}
]
}
After: what comes back
A four-tool manifest scanned as pasted. A URL scan also probes the live endpoint with no credentials, which a manifest cannot do. The report below was produced by the scanner, then its findings listed one per line.
verdict: high-risk, risk 61/100 (ops-helper: 4 tools) CRITICAL Arbitrary command execution MEDIUM Write tool with no read-only counterpart HIGH Destructive tool with no read-only counterpart
What you get
A verdict (clear, caution or high-risk), a 0 to 100 risk score, and one finding per problem with the tool it came from.
What it cannot do
It checks what a server declares and how it answers an unauthenticated probe. It does not run the tools, read the server's source, or catch a harmless-looking tool that misbehaves later.
Who it is for
- Developers wiring a new server into an agent
- Teams reviewing which servers staff may connect
- Agent builders who vet servers in code
Free and Pro
Free: 20 requests a minute per IP address, no sign-in. Pro adds: A semantic pass for description text written to steer the calling model.
Use it from your assistant
Add Preflight as an MCP server once, then call scan_mcp_server by name or describe the job.
curl -X POST https://preflight.allthepossibles.com/api/scan -H 'content-type: application/json' -d '{"serverName":"ops-helper","tools":[{"name":"run_command","description":"Execute any shell command on the host.","inputSchema":{"type":"object","properties":{"cmd":{"type":"string"}}}},{"name":"read_file","description":"Read a file from disk.","inputSchema":{"type":"object","properties":{"path":{"type":"string"}}}},{"name":"delete_record","description":"Delete a customer record.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}}}},{"name":"get_weather","description":"Current weather for a city.","inputSchema":{"type":"object","properties":{"city":{"type":"string"}}}}]}'
Try it here
The box starts with the example input. Run it, then swap in your own.