bitacora-mcp
Allows deploying HTML presentations as Google Apps Script web apps, including deployment status queries and idempotent publication of specific versions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bitacora-mcpCreate a presentation titled 'Q3 Review' with HTML Q3 Results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bitacora-mcp — Fase 2
MCP server en NestJS para crear, versionar, recuperar y publicar presentaciones HTML. El store git es la fuente de verdad; Apps Script (Google Workspace) es el target de publicación, descartable y reconstruible desde cualquier commit.
Qué hace (y qué no, todavía)
✅
create/update/get/list/list_versions/rollback✅ Cada operación es un commit → historial real en git, rollback no destructivo
✅ Normaliza el HTML: envuelve fragments en documento completo con
<title>escapado (mismo patrónescHtmldel review de XSS)✅
deploy/get_deployment: publica un commit como web app de Apps Script (idempotente por versión) y consulta el estado de publicación✅ Transform sandbox-safe antes de publicar: fuerza
<!DOCTYPE html>,<base target="_top">y bloquea assetshttp://(mixed content)⛔ Sin OAuth de Workspace:
ownerse pasa como argumento y el deploy corre bajo una cuenta personal (en Fase 3 sale del login del usuario + service account de dominio)
Related MCP server: marp-agent-mcp
Arquitectura interna
Los módulos mapean 1:1 a los futuros packages/ del monorepo:
core/→ normalización y validación de HTML (DeckService,escHtml)store/→GitSpecStore, el store versionado en git (decks + índice de deployments)presentations/→ orquestación +@McpControllercon las 6 tools de versionadodeployer/→ toda la fricción de Google en un lugar: OAuth, cliente de la Apps Script API, transform sandbox-safe, y las 2 tools de publicación
Correr
npm install
npm run build
npm start # levanta el server por stdioEl store se crea en ~/.bitacora-store (configurable con DECK_STORE_DIR).
Publicar en Apps Script (setup de Google, una sola vez)
El deploy corre bajo cuenta personal en esta fase (Fase 3 migra a service account de dominio). Pasos previos, una sola vez por máquina/cuenta:
En Google Cloud Console, un proyecto (o uno nuevo).
Habilitar la Google Apps Script API en ese proyecto (APIs & Services → Library).
Credentials → Create credentials → OAuth client ID, tipo Desktop app.
Descargar el JSON y guardarlo en
~/.bitacora-google/oauth-client.json(override conGOOGLE_OAUTH_CLIENT_PATH).Correr el consent flow local:
npm run build npm run google:authorizeAbre una URL de consentimiento, levanta un server local (loopback) para recibir el redirect, y cachea el refresh token en
~/.bitacora-google/token.json(override conGOOGLE_TOKEN_PATH). Se refresca solo de ahí en más.
Las credenciales de Google se guardan fuera del store git a propósito
(~/.bitacora-google/, no DECK_STORE_DIR): el store se versiona y podría
compartirse; nada con secretos debe vivir ahí.
Variables opcionales para el manifest del web app:
Env var | Default | Qué controla |
|
| Quién puede abrir la URL publicada ( |
|
| Con qué identidad corre el |
Prueba end-to-end
npm run smoke # cliente MCP que ejercita todo el ciclo sobre stdioEl smoke test corre con DECK_DEPLOYER_MOCK=1: el ciclo deploy /
get_deployment se ejercita contra un cliente de Apps Script en memoria, sin
tocar Google ni requerir credenciales. Para probar contra la API real, corré
el server con DECK_DEPLOYER_MOCK sin setear (o en 0) y las credenciales de
la sección anterior ya cacheadas.
Conectar a Claude Desktop
En claude_desktop_config.json:
{
"mcpServers": {
"bitacora": {
"command": "node",
"args": ["/RUTA/ABSOLUTA/bitacora-mcp/dist/main.js"],
"env": { "DECK_STORE_DIR": "/RUTA/ABSOLUTA/deck-store" }
}
}
}Tools
Tool | Qué hace |
| Crea un deck y lo guarda versionado. Devuelve |
| Nueva versión con HTML y/o metadata nuevos. |
| HTML + metadata en HEAD o en un |
| Lista los decks, filtrable por |
| Historial de commits de un deck. |
| Vuelve a un |
| Publica un |
| Devuelve el estado de publicación actual (commit, scriptId, deploymentId, url). |
Notas de stack
@rekog/mcp-nestv2 — APIMcpStrategy+@McpController(noMcpModule.forRoot).Transporte stdio:
logger: falseporque stdout está reservado para el protocolo.El mismo
McpStrategyaceptaStreamableHttpTransportpara el salto a remoto con OAuth de la Fase 3, sin tocar las tools.
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
Flicense-qualityBmaintenanceMCP server that wraps the Slideless HTTP API as tools for listing, sharing, uploading, and managing HTML presentations from any MCP host without installing the CLI.Last updated- Flicense-qualityAmaintenanceMCP server for generating slides from natural language, with interactive preview and export to PDF, PPTX, and Markdown.Last updated17
- Alicense-qualityCmaintenanceProvides MCP server for Google Slides API, enabling creation, reading, modification, and management of Google Slides presentations using service account authentication.Last updated254GPL 3.0
- FlicenseCqualityBmaintenanceA TypeScript-based MCP server that automatically generates structured technical presentation PPTX files via deck JSON and layout engine.Last updated9
Related MCP Connectors
List, share, upload, and manage Slideless HTML presentations from any MCP host.
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
A MCP server built for developers enabling Git based project management with project and personal…
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/diohernandez/bitacora-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server