Turn any Python codebase into a production-grade MCP server with zero friction.
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":"smarter-mcp","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.
<img width="770" height="159" alt="image" src="https://github.com/user-attachments/assets/2be86ef1-e7f6-4fc4-8b4c-89ab3b98124a" /> # Smarter-MCP > **The highest-level Python framework for building, generating, and running MCP servers.** *If Python can call it, Smarter-MCP can serve it.* ```bash pip install smarter-mcp ``` --- Smarter-MCP sits on top of FastMCP and acts as the orchestration layer that handles everything a developer shouldn't have to think about: ## Three ways in, one runtime ### 1. Existing code — zero rewrites Point at any module you already have (or anything on PyPI): ```python import pandas as pd from smarter_mcp import SmarterMCP app = SmarterMCP("data-tools") app.discover_module(pd.DataFrame, include=["describe", "head", "tail"]) app.run() ``` Or scan an entire local codebase from the CLI: ```bash smarter-mcp serve ./src/mylib ``` The dual-pass engine (AST + inspect) reads your signatures, builds JSON schemas, and serves them. Nothing to rewrite. --- ### 2. Stateful class tools When your tools need shared state (a DB connection, an API client, an ML model loaded once), `@toolkit` manages it: ```python from smarter_mcp import tool, toolkit @toolkit(lifecycle="session") class DatabaseClient: def __init__(self, host: str = "localhost", port: int = 5432): self.conn = connect(host, port) @tool(name="run_query") def query(self, sql: str) -> list[dict]: """Execute a SQL query and return results.""" return self.conn.execute(sql).fetchall() ``` One instance per session. Constructor args injected from config. Session instances are evicted via bounded LRU (max 256 entries) with best-effort resource cleanup (`close()`/`__exit__`) on eviction. You write the class, Smarter-MCP handles the plumbing. --- ### 3. ✍️ Fresh tools from scratch ```python from smarter_mcp import SmarterMCP, tool, resource app = SmarterMCP("my-server") @tool("Greet a user by name") def greet(name: str) -> str: return f"He…
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.