Sign In

@cocaxcode/devflow-mcp

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cocaxcode/devflow-mcp

MCP server that connects Jira (Cloud + Server) with GitHub/GitLab to automate your dev workflow. Branch creation, issue transitions, PR/MR generation, and custom flow playbooks — all from your AI assistant.

Source
npmnpm
Version
0.1.1
Version published
Weekly downloads
72
-27.27%
Maintainers
1
Weekly downloads
 
Created
Source

@cocaxcode/devflow-mcp

Conecta Jira con GitHub/GitLab desde tu AI assistant.
32 tools · Jira Cloud + Server · GitHub + GitLab · Flows personalizables · Reglas configurables

npm version downloads tools tests node license

El Problema · Instalacion · Just Talk to It · Tools · Flows · Reglas · Almacenamiento · Arquitectura · Contribuir

El Problema

Trabajas con Jira, GitHub/GitLab y la terminal. Cada vez que empiezas una tarea:

  • Abres Jira, buscas el issue, lees el detalle
  • Vas a la terminal, haces checkout a main, pull, creas la branch
  • Vuelves a Jira, mueves el issue a "In Progress"
  • Cuando terminas, push, crear PR, volver a Jira...

devflow-mcp te da todo esto como herramientas MCP que tu AI assistant (Claude Code, Cursor, Windsurf, etc.) puede usar directamente. Cada herramienta funciona de forma independiente — la IA orquesta, el MCP ejecuta.

Lo que lo diferencia:

Featuredevflow-mcp
Jira Cloud + ServerAuto-detecta version (v2/v3)
GitHub + GitLabCloud y self-hosted
Flows personalizablesPlaybooks YAML editables
Reglas configurablesGlobal + override por proyecto
Multi-proyectoCada proyecto con su conexion
Guard de seguridadBloquea si hay cambios sin pushear
Confirmacion explicitaPush, merge, branch, transiciones

Instalacion

Claude Code (recomendado)

# Instalacion global (disponible en todos tus proyectos)
claude mcp add devflow --scope user -- npx -y @cocaxcode/devflow-mcp

# O instalacion por proyecto
claude mcp add devflow -- npx -y @cocaxcode/devflow-mcp

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp"]
    }
  }
}
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp"]
    }
  }
}

Cursor / Windsurf

// .cursor/mcp.json o .windsurf/mcp.json
{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp"]
    }
  }
}

VS Code / Codex / Gemini CLI

{
  "mcpServers": {
    "devflow": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/devflow-mcp"]
    }
  }
}

Just Talk to It

No necesitas memorizar nombres de herramientas. Habla con tu AI assistant de forma natural:

Empezar una tarea

"Vamos con PROJ-123"

La IA lee el issue, resume la tarea, busca si ya hay branch, crea una nueva si no, mueve a "In Progress" y asigna el issue — todo siguiendo el flow start-task.

Consultar issues

"Dame mis tareas del proyecto ACME"

ACME-45  Corregir login OAuth       In Progress  High
ACME-52  Refactor del dashboard     To Do        Medium
ACME-61  Actualizar dependencias    To Do        Low

Crear branch y cambiar de estado

"Crea una branch fix para PROJ-456 con descripcion fix-oauth-redirect"

Preview:
  branch: fix/PROJ-456-fix-oauth-redirect
  base: main
  actions: checkout main → pull → create branch

¿Confirmas? (confirm: true para ejecutar)

Push con seguridad

"Pushea los cambios"

Preview:
  branch: feat/PROJ-123-add-login
  commits pendientes:
    - a1b2c3d feat: add login component
    - d4e5f6g feat: add auth service

¿Confirmas? (confirm: true para ejecutar)

Merge con deteccion de conflictos

"Mergea la rama main en mi branch actual"

Si hay conflictos, te dice exactamente en que archivos:

Conflicto detectado:
  - src/auth/login.ts
  - src/config/routes.ts

Resuelve los archivos y haz commit para completar el merge.

Crear un PR

"Crea un PR con titulo 'feat: add OAuth login'"

PR creado:
  url: https://github.com/org/repo/pull/42
  title: feat: add OAuth login
  provider: github

Comentar en Jira

"Comenta en PROJ-123 que el PR ya esta listo para review"

Preview:
  issue: PROJ-123
  comentario: "PR listo para review: https://github.com/org/repo/pull/42"

¿Confirmas? (confirm: true para publicar)

Tools

32 herramientas organizadas en 5 categorias:

Proyectos (5 tools)

ToolDescripcion
df_project_setupConfigurar un nuevo proyecto (Jira + Git, auto-detecta todo)
df_project_updateModificar configuracion de un proyecto
df_project_listListar todos los proyectos configurados
df_project_switchCambiar el proyecto activo
df_project_deleteEliminar un proyecto
Ejemplo: configurar un proyecto
Usa df_project_setup con:
  name: "mi-proyecto"
  jiraUrl: "https://mi-empresa.atlassian.net"
  jiraEmail: "dev@empresa.com"
  jiraToken: "ATATT3x..."
  jiraProjectKey: "PROJ"
  gitToken: "ghp_..."
  paths: ["C:/repos/mi-proyecto"]

Auto-detecta:
  ✓ Jira Cloud (API v3)
  ✓ GitHub (cocaxcode/mi-proyecto)
  ✓ Base branch: main

Jira (6 tools)

ToolDescripcionConfirmacion
df_issuesListar mis issues asignados (filtra por proyecto)
df_issueDetalle completo de un issue
df_statusesTransiciones disponibles para un issue
df_transitionMover issue a otro estadoSi
df_assignAsignar issue al usuario actual
df_commentComentar en un issueSi
Reglas que aplican a Jira
  • no-close-issues (activa por defecto): Bloquea mover issues a estados finales (Done, Closed, Resolved, Finalizado, Cerrado...). Solo un humano deberia cerrar tareas desde Jira.
  • only-own-issues (activa por defecto): No permite transicionar, asignar ni editar issues de otros usuarios. Solo consultar y comentar.

Git (7 tools)

ToolDescripcionConfirmacion
df_branchCrear branch (feat/ o fix/) desde la baseSi
df_find_branchBuscar branch por issue key
df_checkoutCambiar de rama (con guard)
df_pullPull de la rama actual
df_pushPush de la rama actualSi
df_mergeMerge de una rama en la actualSi
df_prCrear PR (GitHub) o MR (GitLab)
Guards de seguridad

df_branch, df_checkout y df_push verifican el estado del working directory:

  • Archivos sin commitear → Bloquea y lista los archivos
  • Commits sin pushear → Bloquea y lista los commits

El usuario debe resolver pendientes antes de continuar. Esto previene perdida de trabajo.

Reglas que aplican a Git
  • no-merge-to-base (activa por defecto): Bloquea push y merge directo a la rama base (main/master). Obliga a usar PR/MR.
  • no-merge-from-dev (activa por defecto): Bloquea mergear ramas de desarrollo (dev, develop, int, integration, development) hacia otras ramas. Estas ramas solo reciben merges.

Flows (5 tools)

ToolDescripcion
df_flow_createCrear un flow personalizado
df_flow_listListar todos los flows
df_flow_getVer detalle de un flow
df_flow_updateModificar un flow existente
df_flow_deleteEliminar un flow (protege start-task)

Reglas (9 tools)

ToolDescripcionNivel
df_rule_createCrear regla globalGlobal
df_rule_listListar todas las reglasGlobal
df_rule_getDetalle de una reglaGlobal
df_rule_updateModificar una reglaGlobal
df_rule_toggleActivar/desactivar reglaGlobal
df_rule_deleteEliminar una reglaGlobal
df_rule_project_overrideActivar/desactivar regla global para un proyectoProyecto
df_rule_project_addCrear regla exclusiva del proyectoProyecto
df_rule_project_removeEliminar regla o override del proyectoProyecto

Flows

Los flows son playbooks que definen secuencias de pasos. No se ejecutan automaticamente — tu le dices a la IA cuando usarlos.

Flow por defecto: start-task

Se activa cuando dices algo como "vamos con PROJ-123":

name: start-task
trigger: "cuando el usuario dice 'vamos con', 'empezar tarea', 'nueva tarea' + issue ID"
steps:
  - tool: df_issue
    note: "Lee el detalle del issue y resume la tarea"
  - tool: df_find_branch
    note: "Busca si ya existe branch para este issue"
  - tool: df_branch
    confirm: true
    note: "Solo si no se encontro branch existente"
  - tool: df_statuses
    note: "Obtiene transiciones para saber el ID de 'In Progress'"
  - tool: df_transition
    target: "In Progress"
    confirm: true
  - tool: df_assign
    note: "Asigna el issue si no tiene asignado"

Crear un flow personalizado

"Crea un flow llamado 'finish-task' que haga push, cree PR y comente en Jira"

name: finish-task
trigger: "cuando el usuario dice 'terminar tarea', 'finalizar' + issue ID"
steps:
  - tool: df_push
    confirm: true
    note: "Push de los commits pendientes"
  - tool: df_pr
    note: "Crear PR/MR hacia la rama base"
  - tool: df_comment
    confirm: true
    note: "Comentar en el issue con el link del PR"

Editar un flow

"Modifica el flow 'start-task' para que no haga assign"

Usa df_flow_update para cambiar pasos, trigger o nombre. El flow start-task se puede modificar pero no eliminar.

Reglas

Las reglas son guardas configurables que bloquean o advierten sobre acciones. Hay dos niveles:

Reglas globales

Aplican a todos los proyectos. Se crean con df_rule_create.

Reglas por defecto (activas):

ReglaAmbitoAccionDescripcion
no-merge-to-basegitblockNo permitir push/merge directo a main/master
no-merge-from-devgitblockNo mergear ramas dev/int/develop hacia otras ramas
no-close-issuesjirablockNo cerrar issues (Done, Closed, Resolved...)
only-own-issuesjirablockNo modificar issues asignados a otros

Reglas por proyecto

Cada proyecto puede:

  • Sobreescribir una regla global — activarla o desactivarla solo para ese proyecto:

    "Desactiva la regla no-close-issues para el proyecto staging"

    Usa df_rule_project_override con enabled: false.

  • Crear reglas propias — solo aplican a ese proyecto:

    "Crea una regla en este proyecto que advierta al hacer push los viernes"

    Usa df_rule_project_add.

  • Eliminar overrides o reglas propias:

    "Elimina el override de no-close-issues en este proyecto"

    Usa df_rule_project_remove.

Crear una regla personalizada

df_rule_create:
  name: "no-push-friday"
  description: "Advertir al hacer push en viernes"
  scope: "git"
  action: "warn"

Opciones:

  • scope: git, jira o all
  • action: block (impide la accion) o warn (solo avisa)

Resolucion de reglas

Cuando una herramienta consulta reglas activas:

  • Se cargan las reglas globales
  • Se aplican los overrides del proyecto (proyecto gana)
  • Se agregan las reglas propias del proyecto
  • Se filtran por scope y estado (enabled)

Almacenamiento

Todos los datos se guardan en ~/.dfm/:

~/.dfm/
├── projects/          # Configuraciones de proyecto (.json)
│   ├── mi-proyecto.json
│   └── otro-proyecto.json
├── flows/             # Definiciones de flows (.yaml)
│   └── start-task.yaml
├── rules/             # Reglas globales (.json)
│   ├── no-merge-to-base.json
│   ├── no-merge-from-dev.json
│   ├── no-close-issues.json
│   └── only-own-issues.json
├── active-project     # Proyecto activo (texto plano)
└── config.json        # Configuracion del servidor
  • Proyectos: JSON con credenciales, paths, overrides de reglas y reglas propias
  • Flows: YAML editables con pasos y triggers
  • Reglas: JSON con nombre, scope, accion y estado
  • Permisos: Los archivos de proyecto se crean con permisos 600 (solo tu usuario)

Resolucion de proyecto

Cuando ejecutas una herramienta, devflow-mcp determina el proyecto activo:

  • Por directorio: Compara tu cwd con los paths de cada proyecto
  • Fallback: Usa el proyecto marcado como activo con df_project_switch
  • Error: Si no hay match, pide configurar con df_project_setup

Arquitectura

src/
├── index.ts              # Entry point (stdio transport)
├── server.ts             # Factory: createServer() + instructions
├── lib/
│   ├── types.ts          # Interfaces, defaults, valid tool names
│   ├── storage.ts        # CRUD: projects, flows, rules, config
│   ├── git-exec.ts       # Git CLI wrapper (execFile)
│   ├── jira/
│   │   ├── client.ts     # JiraClient (Cloud v3 + Server v2)
│   │   └── types.ts      # Raw Jira API response shapes
│   └── git/
│       ├── detect.ts     # parseRemoteUrl (SSH/HTTPS, GitHub/GitLab)
│       ├── github.ts     # GitHubClient (REST API v3)
│       ├── gitlab.ts     # GitLabClient (REST API v4)
│       ├── factory.ts    # createGitProviderClient()
│       └── types.ts      # Git provider interfaces
└── tools/
    ├── project.ts        # 5 tools: setup, update, list, switch, delete
    ├── jira.ts           # 6 tools: issues, issue, statuses, transition, assign, comment
    ├── git.ts            # 7 tools: branch, find_branch, checkout, pull, push, merge, pr
    ├── flow.ts           # 5 tools: create, list, get, update, delete
    └── rule.ts           # 9 tools: CRUD global + 3 project-level

Stack: TypeScript · MCP SDK · Zod · YAML · tsup

Tests: 4 suites · 51 tests (Vitest + InMemoryTransport)

Compatibilidad

Jira

TipoAPIAutenticacion
Jira CloudREST API v3Email + API Token (Basic)
Jira Server / Data CenterREST API v2Personal Access Token (Bearer)

Auto-deteccion via /rest/api/2/serverInfo — no necesitas saber que version usas.

Git

ProveedorSoporte
GitHub (cloud)REST API v3
GitHub EnterpriseREST API v3 (custom URL)
GitLab (cloud)REST API v4
GitLab self-hostedREST API v4 (custom URL)

Auto-deteccion del proveedor al parsear el remote URL del repositorio.

Contribuir

git clone https://github.com/cocaxcode/devflow-mcp.git
cd devflow-mcp
npm install
npm run build
npm test
ComandoDescripcion
npm run buildCompilar con tsup
npm run devBuild en modo watch
npm testEjecutar tests (Vitest)
npm run test:watchTests en modo watch
npm run typecheckVerificar tipos
npm run formatFormatear con Prettier
npm run inspectorMCP Inspector

Licencia

MIT — hecho por cocaxcode

Keywords

mcp

FAQs

Package last updated on 20 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts