Scoring engine for MCP server quality assessment
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"mcp-scoring-engine","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# mcp-scoring-engine A standalone scoring engine for evaluating the quality of [Model Context Protocol (MCP)](https://modelcontextprotocol.io) servers. Pure Python, no framework dependencies — just dataclasses, scoring logic, and network probes. Used in production by [MCP Scoreboard](https://mcpscoreboard.com) to grade thousands of MCP servers. ## Installation ```bash pip install mcp-scoring-engine ``` ## Quick Start ### Score a server from its GitHub repo (static analysis) ```python from mcp_scoring_engine import ServerInfo, analyze_repo, compute_score server = ServerInfo( name="my-mcp-server", description="A tool server for doing useful things", repo_url="https://github.com/owner/my-mcp-server", ) static = analyze_repo(server.repo_url) result = compute_score(server, static_result=static) print(result.composite_score) # 0–100 print(result.grade) # "A+", "B", "D", etc. print(result.score_type) # "partial" (1 tier) or "full" (2+ tiers) ``` ### Probe a running server ```python from mcp_scoring_engine import ( ServerInfo, probe_server, deep_probe_server, compute_score ) # Fast health check (~10s) — connection, initialize, ping fast = probe_server("https://my-server.example.com/mcp") print(fast.is_reachable, fast.connection_ms) # Deep protocol probe (~30s) — schema validation, error handling, fuzz testing deep = deep_probe_server("https://my-server.example.com/mcp") print(deep.tools_count, deep.schema_valid, deep.fuzz_score) # Score with the probe results server = ServerInfo(name="my-server", description="...", repo_url="...") static = analyze_repo(server.repo_url) result = compute_score(server, static_result=static, deep_probe=deep) print(result.grade) ``` ### Probe a stdio server ```python from mcp_scoring_engine import probe_server_stdio, deep_probe_server_stdio fast = probe_server_stdio(["npx", "-y", "@modelcontextprotocol/server-memory"]) deep = deep_probe_server_stdio(["python", "-m", "my_mcp_server"]) ``` ### …
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.