npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

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-mcp

Claude 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.