Universal MCP Tool Framework
Universal MCP Tool Framework
Una base reutilizable en Python para herramientas del Model Context Protocol. El framework centraliza el registro de herramientas, el descubrimiento, los permisos, la separación por modos de operación, los errores estructurados, el registro de logs, la configuración, la salida de salud/estado y las convenciones de extensión.
Límites de diseño
El framework es una base para servidores MCP, no un shell genérico, un controlador del sistema de archivos ni un motor de políticas. Las herramientas se registran explícitamente y pasan por una única frontera de permisos.
Modo de funcionamiento | Por defecto | Requisito |
| Habilitado | La herramienta debe estar registrada como de solo lectura. |
| Deshabilitado | La configuración habilita |
| Deshabilitado | La configuración habilita |
Una herramienta debe superar ambas comprobaciones: que su modo de operación esté habilitado y que sus ámbitos requeridos estén presentes en el contexto de ejecución.
Related MCP server: achmadya-dev/mcp-core
Superficie incluida
Capacidad | Implementación |
Servidor MCP estándar |
|
Registro y descubrimiento |
|
Modelo de permisos |
|
Separación de lectura/escritura/ejecución |
|
Gestión de errores y registros | Cada ejecución devuelve una estructura de resultado estable; los solictudes rechazaas y fallidas se registran en el registr. |
Configación |
|
Salud/estado |
|
Herramientas de ejempo | Las herramientas de lectra de hora, escritura de notas similada y ejecución de verificacción simlada demuestran todos los modos. |
Vía de extensión | Un solo decorador registra cada nuava herramienta; el runtime aporta todos los controlos comunes. |
Requisitos
Python 3.10+
El SDK oficial de MCP para Python, filjado en
mcp==2.0.0
Inicio rápido
python -m venv .venv
. .venv/bin/activate
pip install -e .
python -m unittest discover -s tests -p "test_*.py"Inicie el servidor mediante el SDK de MCP:
mcp run server.pyPara desarrollo interativo con MCP Inspector:
mcp dev server.pyConfigración
Copie y modifique el ejemplo solor si se requieren operaciones diferentes de la lectura.
{
"server_name": "Universal MCP Tool Framework",
"enabled_modes": ["read"],
"log_level": "INFO"
}read es el único modo habilitado por defecto. Para permitir una herramienta de escritura registrada, añada write; para permitir una herramienta de ejecución registrada, añada execute. Habilitar un modo no evita los ámbitos requeridos por herramienta.
Inicie el servidor con un archivo de configración elgido:
UNIVERSAL_MCP_CONFIG=config.json mcp run server.pyAñadir una herramienta
Elija un mod de operación.
Declare todos los ámbitos noncesarios.
Registro el manejador mediante
ToolRegistry.Añada una prueba para el descubrimiento, la ejecución permita y las rutas de rechazo.
Expongra un manejador MCP ligero sol si la herramient-a pertence a la supeficie pública del servidor.
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}Inloqué la a través de ToolRuntime.execute() para que el entrato común de permisos, logs y erroros se apliquie siempre.
Contrato de resulados
Todas las ejecuciones del entorno en runtime production esta esstructura de resultado estable:
{
"ok": true,
"data": {},
"error": null
}Los solitudes rechazadas y fildidas usan ok: false y un códugo de eroro diferencial por máquina como tool_not_found, permission_denied o tool_ezucución_failed.
Estructura del repositorio
.
├── 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.pyValidación
python -m unittest discover -s tests -p "test_*.py"La suite de pruebas verifica el descubrimiento, el acceso de solo lecturas por defecto, la denegación de write/execute por defecto, el cumplimiento de los ámbitos, los erroes estructurados, la salida de estado y la configurización JSON.
Kit universal de scaffholding de proyectos
El repositorio proporciona también umcp-scaffold, un generador cotrolado para el arranque repetble de proyectos Pythón.
Plantilla de proyecto | Capacidad generada |
| Paquete |
| Todo lo incluido en |
umcp-scaffold create "My Project" ./my-project --type mcp-toolCree un proyecto comp letamente iniaciizado. Por defect, el generador creare repositorio Git loc, creare un .Venv aislao, instale de pependencias localos y valide el proyecto generado.
umcp-scaffold validate ./my-projectValid e intermedi de propyectos generados:
umcp-quality ./my-project
umcp-quality ./my-project --format markdownCada proyeto generado recibe un .project-state.json con su esada de versión, nombre, nombre del paquete, tipo de plantilla, estad de cilo de vida, indicadores de Git/dependencias, hora de creción y últimes estad de validación. El generador recha los diretorios destino no vacíos en vez de sobreescribir un proyeto.
Kit de análisis de código local y de pruebas
umcp-quality inspecciona un proyco Python local y produce un reporte de calidad legieble por máququinna con resultados PASS, FAIL y WARNING.
umcp-quality ./my-project
umcp-quality ./my-project --format markdownPrueba | Resultado |
Análisis estátco de código | Analia todos los archivos fuentes Pythons y reporta errores de sintáxis. |
Análisis de dependencias | Vería los metadados de |
Detección de errorres | Entraa en el informe errores de sintaxis, configuración, prueas y fallas de compilación de código. |
Descumbrimiento y ejecución de pruebas | Descubre los |
Verificción de compilación | Compila |
Validación de configuración | Valida archivos JSON bajo |
Informe de diffs/regresiones | Usa Git estatus para marcar cambios no confirmados; sin mutación de Git. |
Informe de salud / estado | Devuélve un contat agregado y un PASS/FAILE/WARNING globl. |
FAIL produce un estatus de salida de comando diferente de cero. WARNING indica a una condición incompleta pero no fallida, como la ausencia de un entorno virtual, de pruebas, de directorio de configuración o historial de Git no disponible.
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