PRAQTOR MCP-S
AI Agent Security Scanner for MCP Servers
Scan live MCP servers and configuration files for security vulnerabilities. 8 detection engines, attack chain analysis, zero false positives.
Installation
pip install praqtor-mcp
Quick Start
# Set your API key
export PRAQTOR_API_KEY=your-api-key
# Scan a live MCP server by URL
praqtor-mcp scan-url https://mcp.example.com/sse
# Scan a config file
praqtor-mcp scan config.json
# Output as JSON
praqtor-mcp scan-url https://mcp.example.com/sse --format json
# Output as SARIF (for GitHub Advanced Security)
praqtor-mcp scan-url https://mcp.example.com/sse --format sarif > results.sarif
How It Works
URL Scan — Point at any live MCP server. PRAQTOR connects via SSE or Streamable HTTP, discovers tools automatically, then runs all 8 security engines against the real tool definitions.
Config Scan — Pass your mcpServers JSON configuration. PRAQTOR analyzes the server definitions, tool schemas, and cross-server interactions.
Detection Engines
| Engine | Code | What It Detects |
|---|---|---|
| Secret & Data Exposure | SDE | API keys, tokens, credentials in configs |
| Semantic Threat Analysis | STA | Tool poisoning, description manipulation |
| Schema Integrity Monitor | SIM | Schema drift, type confusion attacks |
| Package Provenance | PPV | Supply chain risks, unverified packages |
| Cross-Origin Influence | COI | Cross-server trust violations |
| Data Flow Path Analysis | DFP | Sensitive data flowing between tools |
| Permission Alignment | CPA | Over-permissioned tool capabilities |
| Attack Surface Hardening | ASH | Injection surfaces, SSRF, command injection |
Plus ENABLES — attack chain wiring that connects findings across engines.
Commands
scan-url — Scan a Live MCP Server
praqtor-mcp scan-url https://mcp.example.com/sse
Connects to the MCP server, performs protocol handshake, discovers all tools via tools/list, and runs the full 8-engine scan.
scan — Scan a Config File
praqtor-mcp scan my-mcp-config.json
Analyzes an MCP configuration file (the same format used by Claude Desktop, Cursor, etc.).
health — Check API Status
praqtor-mcp health
Output Formats
| Format | Flag | Use Case |
|---|---|---|
| Text | --format text |
Terminal output with colors (default) |
| JSON | --format json |
Programmatic consumption, CI/CD |
| SARIF | --format sarif |
GitHub Advanced Security integration |
Filtering
# Only show critical findings
praqtor-mcp scan-url https://mcp.example.com/sse --severity critical
# Limit output
praqtor-mcp scan-url https://mcp.example.com/sse --limit 10
CI/CD Integration
GitHub Actions
- name: Scan MCP Config
run: |
pip install praqtor-mcp
praqtor-mcp scan mcp-config.json --format sarif > praqtor-results.sarif
env:
PRAQTOR_API_KEY: ${{ secrets.PRAQTOR_API_KEY }}
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: praqtor-results.sarif
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Passed — no critical or high findings |
| 1 | Warning — high severity findings detected |
| 2 | Failed — critical findings detected |
Configuration
Set credentials via environment variables or command-line flags:
# Environment variables (recommended)
export PRAQTOR_API_URL=https://praqtormcp.fly.dev
export PRAQTOR_API_KEY=your-api-key
# Or use flags
praqtor-mcp scan-url https://example.com/sse --api-url https://praqtormcp.fly.dev --api-key YOUR_KEY
API
PRAQTOR MCP-S also provides a REST API for programmatic access:
curl -X POST https://praqtormcp.fly.dev/api/v1/scan/url \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://mcp.example.com/sse"}'
Full API docs: https://praqtormcp.fly.dev/api
License
MIT
Metadata
Release files for praqtor-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| praqtor_mcp-1.0.0.tar.gz | 9.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| praqtor_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.5 kB
Release files / praqtor_mcp-1.0.0.tar.gz
| Download URL | praqtor_mcp-1.0.0.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
91e1bd2382214ad22735a574df3e71d7f51f045d23714a4a670402ffe1da7a3a
|
|
BLAKE2b-256 checksum How to use checksums |
132b85d1f77664b57fc0bbdb5e148423635f26311a045ccbf46f7ea9caff267f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / praqtor_mcp-1.0.0-py3-none-any.whl
| Download URL | praqtor_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3dcae6902dcbc0725b1d24fc9c4ad8a2705badb007b35e993153b0c2d99e1ac9
|
|
BLAKE2b-256 checksum How to use checksums |
9187d7404b6fd90cebd7d12e643431a94557636d2377aad018015334993d5806
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for praqtor-mcp 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.