@bimpsas/platform-mcp
v0.1.1
Published
Servidor MCP de BIMP: consultas y CRUD de proyectos/tareas de la plataforma interna por lenguaje natural, vía Claude Desktop o Claude Code.
Downloads
288
Readme
MCP de BIMP
Servidor MCP que conecta un cliente de IA (Claude Desktop, Claude Code) directamente con la base de datos de la app (Firestore, el mismo proyecto bimp-platform que usa la app web). Permite hacer preguntas en lenguaje natural sobre proyectos y tareas ("¿cuántas tareas abiertas tenemos?", "¿quién tiene más tareas asignadas?") y también crear/editar/borrar datos sin pasar por un formulario en la app.
Es un proyecto Node separado de la app web (tiene su propio package.json) porque corre como proceso local en la máquina de cada persona, no en el navegador.
Por qué existe
La app todavía no tiene pantallas para editar categorías, clientes, proyectos ni tareas (solo lectura). Mientras esas pantallas no existan, este MCP permite hacer esas operaciones vía un cliente de IA en lugar de construir formularios — ver la sección correspondiente de este README en el repositorio raíz (AGENTS.md) para el contexto completo del proyecto.
Cómo funciona
- Usa
firebase-admincon una cuenta de servicio de Firebase (la misma que ya usanscripts/seed-data.mjsyscripts/seed-users.mjs). - Importante: el Admin SDK de Firebase ignora
firestore.rulespor completo — tiene acceso total a la base de datos sin las restricciones que aplican en el navegador. Por eso este servidor solo debe correr localmente, en la máquina de alguien ya autorizado a tocar los datos de BIMP, con su propia copia de la credencial (nunca se sube a git ni se publica en el paquete de npm), y cada herramienta valida a mano lo que un formulario validaría (que el proyecto/categoría/persona exista, etc.) antes de escribir. - Las herramientas están organizadas por colección en
src/tools/(categorias.ts,clientes.ts,proyectos.ts,tareas.ts).src/util.tstiene las funciones compartidas (buscar por texto parcial, generar ids legibles, mensajes de error). - Las herramientas de borrado (
eliminar_*) exigen un parámetroconfirmar: truey bloquean el borrado si hay datos que dependen de eso (ej. no se puede borrar una categoría con proyectos).
Uso dentro de este repo (desarrollo)
npm install
npm run build # compila TypeScript a dist/Ya está configurado como servidor MCP del proyecto (.mcp.json en la raíz) — cualquiera que abra el repo con Claude Code lo detecta automáticamente. Sin nada más que configurar: usa por defecto la serviceAccountKey.json de la raíz del repo (ver instrucciones en los comentarios de scripts/seed-data.mjs para generarla) — nunca se sube a git.
Uso instalado desde npm (para el resto del equipo)
Publicado como @bimpsas/platform-mcp. No hace falta clonar el repo ni tener Node instalado más allá de correrlo.
- Pide una copia de la credencial de Firebase a quien administra la cuenta de BIMP (no se puede generar sola — da acceso total a la base de datos, así que se comparte solo por un canal seguro, nunca por chat público ni se sube a ningún repositorio). Guárdala en tu computador, ej.
C:\Users\<tú>\bimp-serviceAccountKey.json. - Agrega esto a la configuración de tu cliente MCP (
claude_desktop_config.jsonen Claude Desktop, oclaude mcp adden Claude Code), con la ruta a tu copia del archivo:
{
"mcpServers": {
"bimp": {
"command": "npx",
"args": ["-y", "@bimpsas/platform-mcp"],
"env": {
"BIMP_SERVICE_ACCOUNT_KEY": "C:\\Users\\<tú>\\bimp-serviceAccountKey.json"
}
}
}
}- Reinicia el cliente. La primera vez,
npxdescarga el paquete automáticamente.
Cómo hacer cambios: desarrollar → probar en local → publicar
Flujo completo para modificar una herramienta existente o agregar una nueva.
- Crea una rama desde
main(ej.feature/mcp-nombre-del-cambio) — igual que el resto del repo, no se comitea directo amain. - Edita el código en
mcp-server/src/(los archivos.ts, nunca los dedist/— esos se generan solos). - Compila para generar
dist/:cd mcp-server npm run build - Pruébalo en local antes de publicar nada. Este repo ya tiene el servidor registrado en
.mcp.jsonapuntando amcp-server/dist/index.js(el que acabas de compilar), así que:- Si estás en Claude Code, reinicia la sesión (o la ventana) — vuelve a leer
.mcp.jsony toma el build nuevo. - Si estás en Claude Desktop con la config apuntando a este repo (ruta absoluta a
mcp-server/dist/index.js, ver más abajo), reinicia la app. - Prueba a mano las herramientas que cambiaste (pregúntale al agente algo que las use) contra datos de prueba — no contra proyectos/tareas reales. El proyecto
ZZZ Pruebas MCPexiste justo para esto.
- Si estás en Claude Code, reinicia la sesión (o la ventana) — vuelve a leer
- Cuando quede bien, sube la versión del paquete (usa semver:
patchpara arreglos,minorpara herramientas nuevas o cambios que no rompen nada existente,majorsi algo deja de funcionar como antes):
Esto actualizanpm version patch # o minor/majorpackage.jsony crea un tag de git con la versión. - Publica:
Requiere sesión iniciada en npm (npm publishnpm login) con acceso a la organizaciónbimpsas, y va a pedir un código de un solo uso (OTP) por navegador — así que corre este comando tú mismo en tu terminal, no se puede automatizar. - Verifica que quedó publicado:
Debe mostrar la versión nueva ennpm view @bimpsas/platform-mcpdist-tags: latest. - Comitea y sube el cambio (código fuente + el
package.json/package-lock.jsoncon la versión nueva + el tag de git que creónpm version), abre el Pull Request y mergéalo amain— mismo flujo que el resto del repo.
Nota para el equipo: todos instalan con npx -y @bimpsas/platform-mcp, que siempre baja la última versión publicada — nadie tiene que actualizar nada manualmente después de un npm publish. Basta con que reinicien su cliente de Claude la próxima vez que lo abran.
Pendiente
- Colección
users(equipo): sin herramientas todavía, a propósito. - Mover una tarea de un proyecto a otro.
- Campo de "última actualización" en las tareas (hoy solo existe
completedAt, cuando se completan).
