prottime-flow-mcp
v0.4.0
Published
Servidor MCP de Prottime Flow: le da a un modelo el catalogo real de nodos de tu instalacion, le revisa el JSON de importacion y puede dejar el flujo creado.
Maintainers
Readme
MCP de Prottime Flow
Un servidor MCP que le da a un modelo —Claude, o cualquiera que hable el protocolo— lo que le falta para escribir un flujo importable sin inventarse nada: el catálogo real de nodos, sus parámetros exactos, y una revisión del JSON antes de darlo por bueno.
Por qué existe
Un modelo puede redactar el documento de importación de memoria, pero se equivoca justo en lo que no puede saber: cómo se llama exactamente un parámetro, qué opciones acepta un desplegable, por qué asa sale la rama falsa de un condicional. Y esos errores no dan la cara al importar: el flujo entra, se ve bien, y falla al ejecutarse.
Aquí lo pregunta y se lo dicen. El catálogo sale de las definiciones del propio repositorio, las mismas que usa el motor, así que no puede quedarse viejo: el día que añades un nodo, el servidor lo sabe sin que nadie lo actualice.
Enchufarlo
Solo hace falta una ficha, y la da tu propio panel: Ajustes → Escribir flujos con IA la genera y te enseña estos bloques ya rellenos.
Por defecto habla con https://flow.prottime.com. Si tu Prottime Flow es otro
—el tuyo, o uno local mientras pruebas— ponlo en PROTTIME_FLOW_URL.
Claude Code
claude mcp add prottime-flow --env PROTTIME_FLOW_URL=https://flow.prottime.com --env PROTTIME_FLOW_TOKEN=pfm_... -- npx -y prottime-flow-mcpClaude Desktop y compañía
En su fichero de configuración de servidores MCP:
{
"mcpServers": {
"prottime-flow": {
"command": "npx",
"args": ["-y", "prottime-flow-mcp"],
"env": {
"PROTTIME_FLOW_URL": "https://flow.prottime.com",
"PROTTIME_FLOW_TOKEN": "pfm_..."
}
}
}
}La ficha actúa en nombre de quien la creó: el modelo ve los mismos flujos que esa persona y con sus mismos permisos. Se revoca desde la misma pantalla.
Las herramientas
| Herramienta | Para qué |
|---|---|
| list_nodes | Los 41 tipos que existen, por grupo. El primer sitio al que mirar |
| describe_node | Todo de un tipo: cada parámetro con su clave exacta, su tipo, sus opciones y cuándo se muestra; las credenciales que pide; por qué asas sale |
| build_workflow | De una descripción sencilla al JSON listo para importar |
| validate_workflow | Revisa un documento y dice qué está mal |
| list_workflows | Los flujos que ya existen, con su identificador. Por aquí se empieza para cambiar uno |
| get_workflow | Trae uno entero, en el mismo formato con el que se importa |
| list_executions | Cómo le ha ido: las últimas corridas con su estado y su error |
| get_execution | Una corrida paso a paso: dónde se rompió y qué decía |
| import_workflow | Lo deja creado en tu instalación, desactivado. Con onConflict: replace, actualiza el que ya estaba |
| expression_reference | Cómo se escriben las expresiones {{ ... }} |
| connection_status | Contra qué instalación habla y si la ficha vale |
Cómo se usa, en la práctica
Basta con pedirlo en palabras:
Móntame un flujo que lea el correo, transcriba los adjuntos y me llame por teléfono si viene algo urgente.
El modelo mira el catálogo, pregunta por los nodos que va a usar, construye el
documento y lo valida. Lo que devuelve se guarda en un .json y se importa
desde Flujos → Importar.
build_workflow pone la contabilidad
Solo hay que decidir lo que es una decisión —qué nodos, en qué orden, con qué
parámetros—. Los identificadores, las posiciones en el lienzo, las conexiones,
el sobre del formato y los valores por defecto de cada nodo los pone la
herramienta. Los pasos se encadenan solos en el orden dado; from sirve para
ramificar:
{
"name": "Aviso de correo urgente",
"steps": [
{ "id": "t", "type": "trigger.email", "label": "Correo entrante",
"params": { "transcribeAttachments": true }, "credentials": { "imap": "" } },
{ "id": "d", "type": "ai.decide", "label": "¿Es urgente?",
"params": { "question": "¿Esto es urgente?", "context": "{{ $json.subject }}" } },
{ "type": "prottime.query", "label": "Ver tareas", "from": [{ "node": "d", "out": "urgente" }] },
{ "type": "util.log", "label": "Registrar", "from": [{ "node": "d", "out": "fallback" }] }
]
}Y avisa de lo que no cuadra
Sin cortar: devuelve el documento igualmente, con la lista de lo que hay que mirar. Un parámetro mal escrito, un campo obligatorio vacío, una credencial sin asignar, un tipo de nodo que no existe, una conexión que sale por un asa inexistente, una expresión sin cerrar, un nodo que no recibe nada.
Es la parte que más ahorra: son los fallos que el panel acepta sin queja y que solo se descubren cuando el flujo ya está corriendo.
Lo que no hace
No activa nada. Un flujo importado entra siempre desactivado: nada se pone a escuchar correo ni a correr en cron sin que alguien lo mire antes.
No lee tus flujos existentes. Conoce el catálogo de nodos de tu instalación, no lo que tengas montado con ellos.
