Universal MCP Tool Framework
Universal MCP Tool Framework
Eine wiederverwendbare Python-Grundlage für Model Context Protocol Tools. Das Framework bündelt Registrierung, Auffindbarkeit, Berechtigungen, die Trennung der Betriebsmodi, strukturiierte Fehler, Protokollierung, Konfuguration, Health-/Status-Ausgabe und Erweiterungskonventionen.
Design-Abgrenzung
Das Framework ist eine MCP-Server-Grundlage, keine allgeimeine Shell, keine Dateisy -Steuerung und keine Richtlien-Engine. Tools werden esplizit registriert and daufen über genau eine Berechtigungsgrenze.
Betriebsmodus | Standard | Anforderung |
| Aktiviert | Das Tool muss als read-only registriert sein. |
| Deaktiviert | Die Konfiguration aktiviert |
| Deaktiviert | Die Konfiguration aktiviert |
Ein Tool muss beide Prüfungen bestehen: sein Betriebsmodus ist aktiviert und seine erforderlichen Scopes sind im Ausführungskontext vorhanden.
Related MCP server: achmadya-dev/mcp-core
Abgedeckter Funktionsumfang
Fähikeit | Implemnterung |
Srit-MCP-Server |
|
Registrierung und Auffindbarkeit |
|
Berechtigungsmodll |
|
Read/write/execute-Trennung |
|
Fehlerbehandlung und Protokoll | Jede Ausführung erzeugt eine struktiierte Fehler"QI": "abgelete und fehlgeschlagen Aufreve werden protokolliert. |
Konfiguration |
|
Health/Status |
|
Beispiel-Tools | Zeit-Lesen, simuliertes Notizen-Schreibn und simuliertes Ausführn von "Checks" demnstreren je en. |
Erweiterungspfad | Ein Dekorator registriert jedes neue T; die Laufzeit bereitstellt alle gemeinsamen Steuergle. |
Voraussetzungen
Python 3.10+
Das offizielle MCP-Python-SDK, gepine auf
mcp==2.0.0
Schnellstart
python -m venv .venv
. .venv/bin/activate
pip install -e .
python -m unittest discover -s tests -p "test_*.py"Starten Sie den Server über das MCP SDK:
mcp run server.pyFür die interaktive Entwicklung mit MCP Inspector:
mcp dev server.pyKonfiguration
Kopieren Sie, ändern Sie das Beispiel nur, nicht-leesende Operationen:
{
"server_name": "Universal MCP Tool Framework",
"enabled_modes": ["read"],
"log_level": "INFO"
}read ist der einzige Standardmodus. Um einem registrierten Schreib-Tool zu erlaubt, fügen Sie write hinzu; um einem registrierten Ausfühungstool zu erlauben, fügen Sie execute hinzu. Die Aktivierung eines Modus umgeht die erforderlichen Pro-Tool-Scopes nicht.
Starten Sie den Server mit einer ausgewählten Konfigurationsdatei:
UNIVERSAL_MCP_CONFIG=config.json mcp run server.pyEin Tool hinzufügen
Wählen Sie einen Betriebsmodus.
Deklarieren Sie jeden erforderlichen Scope.
Registrieren Sie den Handler über
ToolRegistry.Fügen Sie einen Test für Discovery, erlaubte Ausführung und Ablehnungspfade hinzu.
Stellen Sie einen dünnen MCP-Handler nur dann bereit, wenn das Tool zur öffentlichen Server-Oberfläche gehört.
from universal_mcp.models import OperationMode
from universal_mcp.registry import ToolRegistry
registry = ToolRegistry()
@registry.register(
name="inventory_get_item",
description="Return one inventory item by stable identifier.",
mode=OperationMode.READ,
required_scopes={"inventory:read"},
)
def inventory_get_item(item_id: str) -> dict[str, str]:
return {"item_id": item_id}Rufen Sie es über ToolRuntime.execute() auf, damit der gemeinsame Berechtigungs-, Protokollierungs- und Fehlervertrag immer angewendet wird.
Ergebnisvertrag
Alle Laufzeit-Ausführungen erzeugen diese stabile Ergebnishülle:
{
"ok": true,
"data": {},
"error": null
}Abgelehne und fehlgeschlagene Anfragen verwenden ok: false und einen maschinenlesbaren Fehlercode wie tool_not_found, permission_denied oder tool_execution_failed.
Repository-Struktur
.
├── config.example.json
├── pyproject.toml
├── server.py
├── src/universal_mcp/
│ ├── config.py
│ ├── examples.py
│ ├── models.py
│ ├── registry.py
│ ├── runtime.py
│ └── server.py
└── tests/test_framework.pyValidierung
python -m unittest discover -s tests -p "test_*.py"Die Test-Suite verifiziert Discovery, Standard-Lesezugriff, Ablehnung von Schreib-/Ausführzugriff standardgemäß, Scope-Durchsetzung, strukturierte Fehler, Status-Ausgabe und JSON-Konfiguration.
Universelles Projektgerüst-Werkzeug
Das Repository stellt außerdem umcp-scaffold bereit, einen kontrollierten Generator für wiederholbare Python-Projektanfänge.
Projektvorlage | Generative Fähigkeit |
| Installierbares Md-Paket unter |
| Alles aus |
Erstellen Sie ein vollständig initialisiertes Projekt. Standardmäßig erstellt der Generator ein lokales Git-Repository, eine isolierte .venv, installiert lokale Abhängigkeiten und validiert das generierte Projekt.
umcp-scaffold create "My Project" ./my-project --type mcp-toolMit einem späteren Zeitpunkt ein generiertes Projekt validier en:
umcp-scaffold validate ./my-projectJedes generierte Projekt erhält eine .project-state.json mit Schema-Version, Namen, Paketnamen, Vorlagenart, Lebenszyklusstatus, Git-/Abhängigkeiten-Flags, Erstellungszeitpunkt und letztem Validierungsstatus. Der Generator lehnt nicht-leere Zielverzeichnisse ab, anstatt ein Projekt zu überschreiben.
Lokale Code-Analyse- und Test-Werkzeugsammlung
umcp-quality inspiziert ein lokales Python-Projekt und gibt einen maschinenlesbaren Qualitätsbericht mit PASS, FAIL und WARNING zurück.
umcp-quality ./my-project
umcp-quality ./my-project --format markdownCheck | Auswirkung |
Statische Code-Analyse | Analysiert jede Python-Quelldatei und meldet Syntaxfehler. |
Abhängigkeitsanalyse | Prüft die Metadaten von |
Fehlererkennung | Erfasst Syntax-, Konfigurations-, Test- und Quellcode-Kompilationsfehler im Bericht. |
Test-Discovery und -Ausführung | Ermittelt |
Build-Verifizierung | Kompiliert |
Konfiguration-Validierung | Validiert JSON-Dateub under |
Regressions-/Diff-Bericht | Verwendet den Git-Status, um uncommitted e zu markierten; es findet keine Äderung statt. |
Health-/Status-Bericht | Gibt erggregierte Zählerungen und ein gessmtes |
FAIL erzeugt einen Status ≠ null für den Befehl. Meanings WARNING zeigt einen unvollständigen, aber nicht fehlgeschlagenen Zustand – zumBeaßel fehlende virtuelle Umgebung, keine Tests, kein Konfigurations-verzeichnis oder nicht verfügare Git-Historie.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP hub server that aggregates tools from multiple domain packages into a single globally-available interface.1MIT
- AlicenseNot gradedqualityAmaintenanceProvides a shared MCP SDK wrapper for building MCP servers with stdio transport, tool registration, JSON-safe responses, and environment helpers.26MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for the Inistate platform: module discovery, entry management, and activity submission.
A basic MCP server to operate on the Postman API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ttacleinad-boop/Universal-MCP-Tool-Framework'
If you have feedback or need assistance with the MCP directory API, please join our Discord server