MCP Fingerprints & Passport Knowledge Base
An open-source, automated database and knowledge base of Model Context Protocol (MCP) server passports, version signatures, and tool contract fingerprints.
Ecosystem Architecture & Scope
mcp-fingerprints serves as the authoritative open standard for structural Model Context Protocol server passports. It focuses purely on:
- Static AST Extraction: Deep parameter schema, docstring, prompt, and resource extraction across Python, TypeScript/JavaScript, Go, and Rust.
- Deterministic Cryptographic Hashing: Order-invariant and whitespace-insensitive canonical hashing (
canonical_hash,toolset_canonical_hash). - Supply-Chain Verification & Drift Tracking: Detecting tool tampering, description changes, and schema mutations across package versions.
- Open Catalog & Client Exporters: Serving enriched structural web catalogs with interactive parameter schema inspectors and 1-click config generators.
Key Features
- 5,058+ Indexed Passports: Cross-indexed across Smithery, npm, PyPI, and GitHub registries.
- Deep Parameter & Annotation Extraction: Captures parameter types, descriptions, defaults, enums, required flags, and protocol annotations (
readOnlyHint,destructiveHint,idempotentHint,openWorldHint). - Automated Daily Sync: Continuously crawls, extracts tool signatures, canonicalizes hash fingerprints, and tracks historical schema drift.
- Consolidated Snapshot: Pre-compiled
passports.json.gzfor rapid HTTP consumption (< 50ms startup time).
Quickstart: Search & Client Export
Search for available MCP servers:
python3 -m mcp_fingerprints.cli search "postgres"
Export an MCP server configuration for Claude Desktop:
python3 -m mcp_fingerprints.cli export-config @modelcontextprotocol/server-postgres --client claude
Export an MCP server configuration for Cursor:
python3 -m mcp_fingerprints.cli export-config @modelcontextprotocol/server-postgres --client cursor
Live Probing, Workstation Inventory & Drift Tracking
The Problem It Solves
Developers, SecOps analysts, and platform engineers often have dozens of MCP servers configured across Claude Desktop, Cursor, and Windsurf, or connecting AI agents to remote HTTP/SSE endpoints. Over time, teams lose track of:
- Identity & Provenance: What exact software package is running behind a command or URL, and where was it downloaded from?
- Shadow MCP Assets: Which MCP servers are quietly installed in developer configuration files?
- Silent Contract Drift: Did an automated package upgrade change tool descriptions or inject new parameters without notice?
mcp-fingerprints provides a complete detection and inventory suite available as both a CLI tool and an importable Python SDK.
1. Workstation MCP Inventory (scan-configs)
Automatically discovers configuration files across Claude Desktop (claude_desktop_config.json), Cursor (global ~/.cursor/mcp.json and project .cursor/mcp.json), and Windsurf, probes active servers, and determines their identities:
# Auto-discover and audit all local MCP configurations
mcp-fingerprints scan-configs --auto
# Export a consolidated JSON schema inventory of all local MCP tools
mcp-fingerprints scan-configs --auto --output mcp-inventory.json
Python SDK:
from mcp_fingerprints import scan_local_configs
inventory = scan_local_configs(probe_live=True)
for server in inventory.servers:
print(f"[{server.client_name}] {server.server_name}: {server.package_name} ({server.version})")
print(f" Tools: {', '.join(t.name for t in server.tools)}")
2. Stateful Run-to-Run Drift Tracking (--compare-snapshot)
Establish a baseline snapshot of your local MCP tools and catch unauthorized modifications, deleted servers, or drifted tool contracts:
# 1. Save an initial baseline snapshot
mcp-fingerprints scan-configs --auto --save-snapshot mcp-baseline.json
# 2. Check for drift on subsequent runs (or in CI/CD pre-commit hooks)
mcp-fingerprints scan-configs --auto --compare-snapshot mcp-baseline.json --fail-on-drift
Sample Differential Drift Output:
======================================================================
LOCAL MCP INVENTORY DRIFT REPORT
======================================================================
➕ ADDED SERVERS (1):
• [Cursor] github-tools -> @modelcontextprotocol/server-github (v0.6.0)
🔄 MODIFIED / DRIFTED SERVERS (1):
• [Claude] postgres -> @modelcontextprotocol/server-postgres
- Version: 0.6.1 -> 0.6.2 (Upgraded)
- Tool Contract Mutations:
* 'read_query': Parameter 'timeout_ms' added (type: integer, optional)
======================================================================
3. Dual-Transport Live Probing & Attribution (stdio + http)
Connect to any live MCP server via local subprocess (stdio) or remote URL (http/sse), identify what it is, and retrieve its official repository and download instructions:
# Probe local server with concise 3-line summary
mcp-fingerprints probe --format short -- npx -y @modelcontextprotocol/server-postgres postgresql://localhost/db
# Probe remote HTTP/SSE endpoint
mcp-fingerprints probe --url http://localhost:8000/sse --format long
# Authenticated remote endpoint
mcp-fingerprints probe --url https://api.example.com/mcp --header "Authorization: Bearer mytoken"
Python SDK:
from mcp_fingerprints import identify_stdio, identify_http
# Identify local subprocess
report = identify_stdio(["uvx", "mcp-server-git"])
print(f"Verified: {report.package_name} ({report.repository_url})")
# Identify remote HTTP/SSE endpoint
remote = identify_http("https://mcp.internal.acme.com/sse")
print(f"Remote Server: {remote.package_name} v{remote.version}")
Enriched Tool Parameter Schemas & Protocol Annotations
MCP Fingerprints extracts rich parameter schemas and runtime protocol hints directly from server source ASTs:
- Structured Parameter Metadata: Includes parameter types (
string,number,boolean,array,object), descriptions, required status, default values, and allowed enums. - Protocol Annotations: Captures MCP tool behavior hints:
readOnlyHint: Tool performs read-only operations without side effects.destructiveHint: Tool performs destructive operations (deletions, modifications).idempotentHint: Repeated invocations yield identical state.openWorldHint: Tool interacts with external/unconstrained network services.
- Transport Specifications: Captures supported transports (
stdio,sse,streamable-http,websocket) and required environment variables.
Fast Consumption
You can fetch the latest consolidated database in a single GET request:
curl -sL https://raw.githubusercontent.com/JMartynov/mcp-fingerprints/main/passports.json.gz | gzip -d > passports.json
Python
import gzip, json, urllib.request
url = "https://raw.githubusercontent.com/JMartynov/mcp-fingerprints/main/passports.json.gz"
with urllib.request.urlopen(url) as resp:
with gzip.GzipFile(fileobj=resp) as gz:
data = json.load(gz)
print(f"Loaded {data['total_passports']} MCP server passports.")
CLI Usage
The CLI provides a focused set of pure structural commands:
# Sync from registries
python -m mcp_fingerprints.cli sync --all
# Match a toolset hash against the knowledge base
python -m mcp_fingerprints.cli match <hash>
# Probe a server and extract its fingerprint
python -m mcp_fingerprints.cli probe <server_command>
# Validate schema invariants
python -m mcp_fingerprints.cli validate --dir data/fingerprints
# Build compressed snapshot
python -m mcp_fingerprints.cli snapshot
# Search the catalog
python -m mcp_fingerprints.cli search "query"
# Browse interactively via TUI
python -m mcp_fingerprints.cli browse
# Export client configurations (Claude, Cursor, Cline, Zed, Windsurf)
python -m mcp_fingerprints.cli export-config <server_name> --client claude
# Detect configuration drift against the latest passports
python -m mcp_fingerprints.cli detect-drift <config_file>
Reporting & Output Formats
Customize the output verbosity to fit your terminal or CI environment:
# Concise 3-line summary for quick checks and CI logs
mcp-fingerprints probe --format short -- npx -y @modelcontextprotocol/server-sqlite --db app.db
# Exhaustive schema and parameter audit report
mcp-fingerprints probe --format long -- npx -y @modelcontextprotocol/server-sqlite --db app.db
# Structured JSON output for scripting and automation
mcp-fingerprints probe --json -- npx -y @modelcontextprotocol/server-sqlite --db app.db
Releases
TestPyPI Dry-Run
You can perform an automated dry-run release to TestPyPI to verify packaging, metadata, and functionality before a production PyPI release.
- Navigate to the Actions tab in the GitHub repository.
- Select the Release to TestPyPI (Dry-Run) workflow.
- Click Run workflow.
- You can optionally provide a
version_suffix(e.g.rc1,b2) which will be appended to the current version inpyproject.tomlto avoid conflicts on TestPyPI. - The workflow will build artifacts, publish them to TestPyPI using Trusted Publishing, and execute an automated smoke test (
pip installinto a clean container).
License
MIT
Metadata
Release files for mcp-fingerprints 1.0.2
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 | |
|---|---|---|---|---|
| mcp_fingerprints-1.0.2.tar.gz | 162.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_fingerprints-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 265.8 kB
Release files / mcp_fingerprints-1.0.2.tar.gz
| Download URL | mcp_fingerprints-1.0.2.tar.gz |
|---|---|
| Size | 162.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33a9008189d50b971c9c3b72ae1685cdeb2474b280d0fe2e757a9d580c6c7cf6
|
|
BLAKE2b-256 checksum How to use checksums |
1c371f751eecf7fbd2c9ae769ccedce19948d96850ca35ef9452af99ee3f1930
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / mcp_fingerprints-1.0.2-py3-none-any.whl
| Download URL | mcp_fingerprints-1.0.2-py3-none-any.whl |
|---|---|
| Size | 103.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
67004d206a4858413d7d3e4f9bedd251a4c3c30de468b3269964442c94d10f2f
|
|
BLAKE2b-256 checksum How to use checksums |
40589d3eb87eb448d71a3cc71649b373e8805d926f5e0be6d3ad44aa4c0fbd10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logSecurity for mcp-fingerprints 1.0.2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcp_fingerprints-1.0.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logA 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.