Keeper sobre MCP
Wippy Keeper es el plano de control de una aplicación Wippy en ejecución — un banco de trabajo del registry, gobernanza sistema de archivos↔registry, orquestación de agentes/tareas, instalación desde el Hub, base de conocimiento, inspección de logs y procesos, y un flujo de revisión/push en Git, todo tras una UI integrada. Su característica definitoria es que expone esas capacidades de operador a clientes de IA (Claude, Codex, …) sobre MCP (Model Context Protocol). Esta página añade Keeper a una aplicación y conecta un cliente MCP a ella.
Qué Construirá
- Keeper añadido a una aplicación generada a partir de
app-template. - La UI de Keeper en
/app/keepery el endpoint MCP en/keeper-mcp/. - Un token MCP delimitado, y un cliente MCP configurado para dirigir la aplicación a través de Keeper.
Requisitos Previos
-
Una aplicación creada con app-template. Ya proporciona todo aquello a lo que Keeper se enlaza:
app:gateway,app:api,app:db,app:processes,app.security:adminyapp.env:store. -
El módulo Keeper instalado:
wippy add keeper/keeper wippy install
Añadir Keeper
Declare la dependencia y enlácela a los recursos de la aplicación. Solo admin_scope es
obligatorio (no tiene valor por defecto); el resto toma por defecto los nombres que app-template ya usa, mostrados
aquí explícitamente por claridad:
# src/app/deps/_index.yaml
- name: keeper
kind: ns.dependency
component: keeper/keeper
parameters:
- { name: app_db, value: app:db }
- { name: admin_scope, value: app.security:admin }
- { name: env_storage, value: app.env:store }
- { name: public_gateway, value: app:gateway } # aloja /keeper-mcp/
- { name: mcp_route, value: /keeper-mcp/ }
- { name: ui_server, value: app:gateway }
- { name: process_host, value: app:processes }
Arranque la aplicación:
wippy run
Keeper monta automáticamente tres superficies:
- UI —
/app/keeper - Transporte MCP —
/keeper-mcp/en el gateway público - API de tokens — en
app:api(/keeper/mcp/tokens,/keeper/mcp/scopes)
El transporte MCP está controlado por la variable de entorno MCP_ENABLED (por defecto true);
establézcala a false para cerrar el endpoint.
Emitir un Token MCP
Los tokens los emite un usuario administrador, están delimitados y se muestran exactamente una vez. Cree uno mediante la API de tokens (o la página MCP en la UI de Keeper):
curl -X POST http://localhost:8085/api/v1/keeper/mcp/tokens \
-H 'Authorization: Bearer <admin-session-token>' \
-H 'Content-Type: application/json' \
-d '{"label": "claude-dev", "preset": "developer"}'
# -> { "success": true, "token": { "token": "wkmcp_<64 hex>", ... } }
preset agrupa un conjunto de scopes. Presets disponibles: root, developer,
wippy_operator, observer, knowledge_manager, explorer_tools_only. Para un
control más fino, pase en su lugar un array scopes explícito (por ejemplo, registry.read,
state.write, git.pr, tasks.run, knowledge.read). El token wkmcp_... en bruto se
retorna una sola vez y se almacena únicamente como hash — cópielo inmediatamente.
Conectar un Cliente
Apunte un cliente MCP al endpoint con el token como cabecera bearer. Para Claude Code /
Codex, un .mcp.json en la raíz del proyecto:
{
"mcpServers": {
"keeper": {
"type": "http",
"url": "http://localhost:8085/keeper-mcp/",
"headers": { "Authorization": "Bearer wkmcp_<token>" }
}
}
}
Use la URL base pública de la aplicación en lugar de http://localhost:8085 en un entorno
desplegado.
Cómo Funciona la Superficie MCP
Keeper no expone una lista de herramientas plana y fija. Presenta unas pocas meta-herramientas más traits que activan herramientas concretas bajo demanda, de modo que la superficie permanece pequeña hasta que usted opta por una capacidad:
session_info— siempre disponible; reporta los scopes de la sesión y los traits activos.list_traits/describe_trait— descubra qué hay disponible.use_trait/drop_trait(yset_traits) — active o elimine un trait; esto emite unanotifications/tools/list_changedde MCP, de modo que las herramientas visibles cambian en vivo.list_tools/call_tool— enumere e invoque las herramientas que un trait materializó.
Lo que un token puede activar está acotado por sus scopes — a grandes rasgos registry.*,
state.*, hub.*, knowledge.*, git.*, components.*, tasks.*, agents.*,
tests.run, logger.*, env.*, functions.call, app.ui (más mcp.root para el bypass
completo de administrador). El access_mode del token (any / traits / tools_only) restringe además
cómo puede llamar a las herramientas.
Notas
- Alcance de gobernanza — establezca
GOV_MANAGED_NAMESPACES=apppara que la sincronización sistema de archivos↔registry de Keeper gobierne solo el namespace de su aplicación. No añadakeeper,wippyniuserspacea menos que esté desarrollando esos módulos. - Seguridad — los tokens están vinculados a la identidad administradora que los emite y a un conjunto de scopes, se almacenan
como SHA-256 y son revocables mediante
POST /keeper/mcp/tokens/revoke. La ruta/keeper-mcp/no ejecuta middleware de autenticación; el manejador impone el token bearer por sí mismo. - Aplicación de referencia —
app-keeperes el ejemplo trabajado que integra Keeper en el esqueleto de una aplicación; copie su bloquesrc/app/deps/_index.yamlsi desea una configuración conocida y funcional.
Siguientes Pasos
- Hola Mundo — la disposición mínima de un proyecto
- Autenticación — la identidad administradora que emite los tokens
- Agentes — los agentes y herramientas que exponen los traits de Keeper