Servidor MCP para interactuar con Docmost. Implementa el transporte Streamable HTTP de la especificación MCP (2025-03-26). Sin dependencias externas, únicamente Node.js (v18+).
Versión actual: 0.3.0 (reflejada en package.json).
| Variable | Requerida | Default | Descripción |
|---|---|---|---|
DOCMOST_BASE_URL |
Sí | — | URL base de Docmost (ej. https://demo.docmost.com) |
DOCMOST_API_TOKEN |
* | — | Token Bearer para autenticarse contra Docmost |
DOCMOST_EMAIL |
* | — | Email para login automático contra Docmost |
DOCMOST_PASSWORD |
* | — | Password para login automático contra Docmost |
MCP_AUTH_TOKEN |
No | — | Token Bearer para proteger el acceso al servidor MCP |
READ_ONLY |
No | false |
Deshabilita herramientas de escritura |
ALLOW_DELETE |
No | false |
Habilita la herramienta delete_page |
REQUEST_TIMEOUT |
No | 30000 |
Timeout en ms para llamadas al API de Docmost |
PORT |
No | 3000 |
Puerto del servidor |
* Necesitas DOCMOST_API_TOKEN o DOCMOST_EMAIL + DOCMOST_PASSWORD.
# Con token
export DOCMOST_BASE_URL="https://demo.docmost.com"
export DOCMOST_API_TOKEN="<tu-token>"
export MCP_AUTH_TOKEN="<secreto-para-proteger-el-mcp>"
npm startÚnico endpoint: POST /mcp — acepta JSON-RPC 2.0.
# Initialize
curl -s http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
# List tools
curl -s http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
-H "Mcp-Session-Id: <session-id-from-initialize>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# Call tool
curl -s http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
-H "Mcp-Session-Id: <session-id>" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_pages","arguments":{"query":"onboarding"}}}'| Método | Ruta | Descripción |
|---|---|---|
POST |
/mcp |
JSON-RPC 2.0 (initialize, tools/list, tools/call, ping) |
GET |
/mcp |
SSE stream para notificaciones del servidor |
DELETE |
/mcp |
Terminar sesión (enviar Mcp-Session-Id) |
GET |
/health |
Health check (sin auth) |
GET |
/ |
Info del servidor |
| Tool | Parámetros | Descripción |
|---|---|---|
list_spaces |
— | Espacios disponibles |
list_pages |
spaceId |
Páginas de un espacio |
get_page |
pageId |
Contenido completo de una página |
search_pages |
query |
Búsqueda por texto libre |
get_random_page |
spaceId? |
Página/artículo aleatorio con contenido completo |
get_page_url |
pageId |
URL pública de una página |
get_parent_page |
pageId |
Página padre |
list_children |
pageId |
Páginas hijas directas |
download_file |
fileId |
Descarga archivo adjunto (base64) |
| Tool | Parámetros | Descripción |
|---|---|---|
create_page |
title, content, spaceId, folderId? |
Crear página |
update_page |
pageId, title?, content?, ... |
Actualizar página |
upload_file |
pageId, fileName?, fileBase64 o fileUrl |
Subir archivo a página |
| Tool | Parámetros | Descripción |
|---|---|---|
delete_page |
pageId |
Eliminar página permanentemente |
Imagen: ghcr.io/makespacemadrid/docmost-mcp:latest
docker compose up -dCopia .env.example a .env y rellena las variables.
npm start # Producción
npm run dev # Desarrollo (NODE_ENV=development)
npm run lint # Validar archivos