MCP
Manual · MCP ops

Conectar al MCP ops (worklist remoto)

El MCP ops corre remoto, en el Container App ya desplegado. No necesitás clonar el repo, ni npm install, ni credenciales de Postgres en tu máquina — solo un token bearer y Claude Code instalado.

QA — activo HTTP · Streamable

Este manual es para Claude Code. ¿Vas a conectar ops desde Claude Desktop o Claude Mobile en cambio? Los pasos son distintos (Desktop necesita un puente mcp-remote; Mobile no lo soporta de forma confiable todavía) — ver Conectar desde Claude.

0. Qué necesitás antes de empezar

Prefijo Scope Puede hacer
opsmcp_r_ read Solo consultar: ops_list, ops_sprints, ops_render.
opsmcp_w_ write Todo lo de read + crear/editar/asignar/borrar ítems y activar sprints. En un ítem raíz (sin parent_id) el status tope es to_be_human_revieweddone requiere admin. En una subtask (con parent_id), done sí está permitido con write.
opsmcp_a_ admin Todo lo anterior, sin techo de status. Solo Daniel lo porta.

El prefijo es cosmético — el scope real es contra qué lista matchea el servidor. Si no tenés un token, pedíselo a Daniel; no hay forma de generarlo vos mismo salvo que seas global-admin real (ver la sección "Emitir un token nuevo" más abajo).

1. Conectar — QA (para validar primero)

Copiá este comando literal, reemplazando <TU_TOKEN> por el token que te dieron (empieza con opsmcp_r_, opsmcp_w_ u opsmcp_a_):

bash
claude mcp add --transport http ops-qa https://ops-qa.dynamotech.co/mcp \
  --header "Authorization: Bearer <TU_TOKEN>"

2. Conectar — producción (uso normal)

bash
claude mcp add --transport http ops https://ops.dynamotech.co/mcp \
  --header "Authorization: Bearer <TU_TOKEN>"

No hace falta correr los dos — usá el que te haya indicado Daniel. Según la documentación operativa vigente del MCP (skill mcp_ops del repo ops-dynamo), https://ops-qa.dynamotech.co/mcp está activo; https://ops.dynamotech.co/mcp puede responder 503 hasta que se corra el runbook de activación de producción. Si tu conexión a ops (prod) devuelve 503, es esto — no un bug de tu lado (ver Troubleshooting).

3. Verificar que conectó

Abrí (o reiniciá) una sesión de Claude Code y corré:

/mcp

Deberías ver ops (o ops-qa) listado con estado connected. Si dice failed o no aparece, andá a Troubleshooting.

4. Probar una tool real

En la misma sesión, pedile al agente:

Corré ops_list y mostrame los primeros ítems

Si tu token es válido vas a ver ítems reales del board (proyecto AI Factory por default). Si tu token es write o admin, probá también crear un ítem de prueba con ops_add y confirmá que aparece con ops_list.

5. Qué puede hacer cada tool

Tool read write admin
ops_list
ops_sprints
ops_render ✅ (markdown como texto, no archivo)
ops_add✅ (tope to_be_human_reviewed en raíz)
ops_update✅ (mismo tope)
ops_assign
ops_delete
ops_sprint_activate
ops_token_mint / ops_token_list / ops_token_revoke ❌*

* Ninguna columna de esta tabla alcanza para las 3 tools de administración de tokens — gatean solo contra authz.isGlobalAdmin===true (identidad real), nunca contra el scope del token/JWT que estés usando. Un token admin de las listas de env, o un JWT humano común, las ve rechazadas igual que un token read.

6. Emitir un token nuevo — solo global-admin real

Emitir/listar/revocar tokens de tabla (ops.mcp_tokens, con identidad real detrás — no un secreto ciego compartido) exige ser global-admin real. Si no lo sos, esta sección no aplica — pedile el token a Daniel como en el paso 0.

Opción A — desde una sesión ya conectada como admin

Pedile al agente:

Corré ops_token_mint con user_id: "<uuid del usuario>", scope: "write", label: "para Fulano"

La respuesta incluye el token en claro — copialo en ese momento, no se vuelve a mostrar (ni ops_token_list ni ninguna otra consulta lo recupera después; solo su hash queda en la DB).

Opción B — vía curl al endpoint REST

bash
curl -s -X POST https://ops-qa.dynamotech.co/mcp/tokens \
  -H "Authorization: Bearer <TU_TOKEN_O_JWT_GLOBAL_ADMIN>" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "<uuid del usuario>", "scope": "write", "label": "para Fulano"}'

Reemplazá ops-qa por ops para producción.

Listar tokens vigentes (sin exponer el claro ni el hash)

bash
curl -s https://ops-qa.dynamotech.co/mcp/tokens \
  -H "Authorization: Bearer <TU_TOKEN_O_JWT_GLOBAL_ADMIN>"

Revocar un token

bash
curl -s -X POST https://ops-qa.dynamotech.co/mcp/tokens/<id>/revoke \
  -H "Authorization: Bearer <TU_TOKEN_O_JWT_GLOBAL_ADMIN>"

200 con revoked_at seteado la primera vez; 404 si ya estaba revocado o el id no existe. A partir de acá el token revocado devuelve 401 en /mcp — no hace falta un redeploy.

7. Rotación de tokens

Si tu token dejó de funcionar de un día para otro, probablemente fue rotado: Daniel agrega el token nuevo a la lista del GitHub Secret del ambiente (OPS_MCP_READ_TOKENS_QA/_PROD, o el equivalente WRITE/ADMIN), se redeploya el ambiente, y el token viejo se retira de la lista en un paso posterior. Pedile a Daniel el token nuevo y repetí el paso 1/2.

8. Diferencia con el MCP local (stdio)

Local (stdio)Remoto (HTTP, este manual)
Requiere clone del repoNo
Requiere npm installNo
Requiere credenciales de Postgres en tu máquinaNo
Autorización WORKLIST_FULLACCESS=1 (honor system) Bearer token con scope enforced en el servidor
Quién lo usa hoy Factory/dispatcher, agentes locales de Daniel Cualquier persona/agente con un token válido

Errores esperados (401/403/503/405) y qué hacer con cada uno: ver Troubleshooting.