
Research
/Security News
77 Firefox Extensions Linked to Crypto Wallet and Credential Theft
Socket uncovered 77 linked Firefox extensions, including 40 that steal wallet secrets or credentials and 37 deceptive sports-score shells.
@cocaxcode/devflow-mcp
Advanced tools
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.
Conecta Jira con GitHub/GitLab desde tu AI assistant.
32 tools · Jira Cloud + Server · GitHub + GitLab · Flows personalizables · Reglas configurables
El Problema · Instalacion · Just Talk to It · Tools · Flows · Reglas · Almacenamiento · Arquitectura · Contribuir
Trabajas con Jira, GitHub/GitLab y la terminal. Cada vez que empiezas una tarea:
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:
| Feature | devflow-mcp |
|---|---|
| Jira Cloud + Server | Auto-detecta version (v2/v3) |
| GitHub + GitLab | Cloud y self-hosted |
| Flows personalizables | Playbooks YAML editables |
| Reglas configurables | Global + override por proyecto |
| Multi-proyecto | Cada proyecto con su conexion |
| Guard de seguridad | Bloquea si hay cambios sin pushear |
| Confirmacion explicita | Push, merge, branch, transiciones |
# 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
{
"mcpServers": {
"devflow": {
"command": "npx",
"args": ["-y", "@cocaxcode/devflow-mcp"]
}
}
}
{
"mcpServers": {
"devflow": {
"command": "npx",
"args": ["-y", "@cocaxcode/devflow-mcp"]
}
}
}
// .cursor/mcp.json o .windsurf/mcp.json
{
"mcpServers": {
"devflow": {
"command": "npx",
"args": ["-y", "@cocaxcode/devflow-mcp"]
}
}
}
{
"mcpServers": {
"devflow": {
"command": "npx",
"args": ["-y", "@cocaxcode/devflow-mcp"]
}
}
}
No necesitas memorizar nombres de herramientas. Habla con tu AI assistant de forma natural:
"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.
"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
"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)
"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)
"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.
"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
"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)
32 herramientas organizadas en 5 categorias:
| Tool | Descripcion |
|---|---|
df_project_setup | Configurar un nuevo proyecto (Jira + Git, auto-detecta todo) |
df_project_update | Modificar configuracion de un proyecto |
df_project_list | Listar todos los proyectos configurados |
df_project_switch | Cambiar el proyecto activo |
df_project_delete | Eliminar 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
| Tool | Descripcion | Confirmacion |
|---|---|---|
df_issues | Listar mis issues asignados (filtra por proyecto) | — |
df_issue | Detalle completo de un issue | — |
df_statuses | Transiciones disponibles para un issue | — |
df_transition | Mover issue a otro estado | Si |
df_assign | Asignar issue al usuario actual | — |
df_comment | Comentar en un issue | Si |
| Tool | Descripcion | Confirmacion |
|---|---|---|
df_branch | Crear branch (feat/ o fix/) desde la base | Si |
df_find_branch | Buscar branch por issue key | — |
df_checkout | Cambiar de rama (con guard) | — |
df_pull | Pull de la rama actual | — |
df_push | Push de la rama actual | Si |
df_merge | Merge de una rama en la actual | Si |
df_pr | Crear PR (GitHub) o MR (GitLab) | — |
df_branch, df_checkout y df_push verifican el estado del working directory:
El usuario debe resolver pendientes antes de continuar. Esto previene perdida de trabajo.
| Tool | Descripcion |
|---|---|
df_flow_create | Crear un flow personalizado |
df_flow_list | Listar todos los flows |
df_flow_get | Ver detalle de un flow |
df_flow_update | Modificar un flow existente |
df_flow_delete | Eliminar un flow (protege start-task) |
| Tool | Descripcion | Nivel |
|---|---|---|
df_rule_create | Crear regla global | Global |
df_rule_list | Listar todas las reglas | Global |
df_rule_get | Detalle de una regla | Global |
df_rule_update | Modificar una regla | Global |
df_rule_toggle | Activar/desactivar regla | Global |
df_rule_delete | Eliminar una regla | Global |
df_rule_project_override | Activar/desactivar regla global para un proyecto | Proyecto |
df_rule_project_add | Crear regla exclusiva del proyecto | Proyecto |
df_rule_project_remove | Eliminar regla o override del proyecto | Proyecto |
Los flows son playbooks que definen secuencias de pasos. No se ejecutan automaticamente — tu le dices a la IA cuando usarlos.
start-taskSe 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"
"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"
"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.
Las reglas son guardas configurables que bloquean o advierten sobre acciones. Hay dos niveles:
Aplican a todos los proyectos. Se crean con df_rule_create.
Reglas por defecto (activas):
| Regla | Ambito | Accion | Descripcion |
|---|---|---|---|
no-merge-to-base | git | block | No permitir push/merge directo a main/master |
no-merge-from-dev | git | block | No mergear ramas dev/int/develop hacia otras ramas |
no-close-issues | jira | block | No cerrar issues (Done, Closed, Resolved...) |
only-own-issues | jira | block | No modificar issues asignados a otros |
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.
df_rule_create:
name: "no-push-friday"
description: "Advertir al hacer push en viernes"
scope: "git"
action: "warn"
Opciones:
git, jira o allblock (impide la accion) o warn (solo avisa)Cuando una herramienta consulta reglas activas:
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
600 (solo tu usuario)Cuando ejecutas una herramienta, devflow-mcp determina el proyecto activo:
cwd con los paths de cada proyectodf_project_switchdf_project_setupsrc/
├── 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)
| Tipo | API | Autenticacion |
|---|---|---|
| Jira Cloud | REST API v3 | Email + API Token (Basic) |
| Jira Server / Data Center | REST API v2 | Personal Access Token (Bearer) |
Auto-deteccion via /rest/api/2/serverInfo — no necesitas saber que version usas.
| Proveedor | Soporte |
|---|---|
| GitHub (cloud) | REST API v3 |
| GitHub Enterprise | REST API v3 (custom URL) |
| GitLab (cloud) | REST API v4 |
| GitLab self-hosted | REST API v4 (custom URL) |
Auto-deteccion del proveedor al parsear el remote URL del repositorio.
git clone https://github.com/cocaxcode/devflow-mcp.git
cd devflow-mcp
npm install
npm run build
npm test
| Comando | Descripcion |
|---|---|
npm run build | Compilar con tsup |
npm run dev | Build en modo watch |
npm test | Ejecutar tests (Vitest) |
npm run test:watch | Tests en modo watch |
npm run typecheck | Verificar tipos |
npm run format | Formatear con Prettier |
npm run inspector | MCP Inspector |
FAQs
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.
The npm package @cocaxcode/devflow-mcp receives a total of 46 weekly downloads. As such, @cocaxcode/devflow-mcp popularity was classified as not popular.
We found that @cocaxcode/devflow-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Research
/Security News
Socket uncovered 77 linked Firefox extensions, including 40 that steal wallet secrets or credentials and 37 deceptive sports-score shells.

Security News
NIST disclosed an unreleased AI tool called V-etalon and opened a broad inquiry into NVD modernization after years of automation plans produced no public enrichment system.

Security News
In his AI Council 2026 talk, Feross Aboukhadijeh covers recent package compromises, vulnerability discovery, and a more automated security model.