ArgoCD

Expone toda la API de ArgoCD a los LLMs a través de MCP usando solo 2 herramientas generadas automáticamente impulsadas por la especificación OpenAPI.

Documentación

ArgoCD

argocd-mcp

Toda la API de ArgoCD, expuesta a los LLMs mediante MCP.
103+ endpoints. Cero handlers hardcodeados. Dos modos: búsqueda o herramientas generadas.

Inicio RápidoCómo FuncionaOAuthOIDCConfiguración


La mayoría de los servidores MCP de ArgoCD hardcodean unas pocas operaciones: listar aplicaciones, sincronizar, obtener estado. Cuando ArgoCD añade una nueva funcionalidad, esperas a que el mantenedor la agregue.

argocd-mcp adopta un enfoque diferente, inspirado en el servidor MCP de Cloudflare que cubre más de 2500 endpoints con solo 2 herramientas. Lee la especificación OpenAPI de ArgoCD al iniciar y expone cada endpoint a través de solo 2 herramientas: search y execute. ¿Nueva versión de ArgoCD? Reinicia el servidor. Listo.

  • 103+ endpoints de la especificación OpenAPI de ArgoCD, cero handlers hardcodeados
  • Dos modos de herramientas: search (2 meta-herramientas) o generated (1 herramienta tipada por endpoint)
  • Funciona con Claude Desktop, Claude Code, Cursor o cualquier cliente MCP
  • Sin código por endpoint — la especificación OpenAPI es la fuente de verdad
  • Tres modos de autenticación: token estático, OAuth mediante ArgoCD Dex, u OAuth mediante el proveedor OIDC externo en el que ArgoCD confía (ambos otorgan RBAC por usuario)
  • Modo de solo lectura — desactiva todas las operaciones de escritura con una sola bandera
  • Delimitación de recursos — restringe qué recursos de ArgoCD se exponen con ALLOWED_RESOURCES
  • Límite de tasa — token bucket por usuario para proteger a ArgoCD de llamadas excesivas
  • Plantillas de prompts — flujos de trabajo preempaquetados para operaciones comunes (aplicaciones no saludables, diff, rollback, logs)
  • Registro de auditoría — logs JSON estructurados para cada llamada de herramienta (usuario, método, ruta, estado, duración)
  • Anotaciones MCP — las herramientas se anotan como de solo lectura, destructivas o idempotentes para una categorización adecuada del cliente
  • Búsqueda semántica opcional mediante embeddings de Ollama

Cómo Funciona

Al iniciar, el servidor obtiene la especificación Swagger de ArgoCD y analiza cada endpoint. Luego los expone a los LLMs mediante uno de dos modos:

Modo de búsqueda (predeterminado, TOOL_MODE=search)

Dos meta-herramientas manejan los 103+ endpoints. El LLM descubre endpoints buscando y luego los llama mediante un ejecutor genérico.

graph TD
    A[ArgoCD /swagger.json] -->|Fetch at startup| B[Parse Swagger 2.0]
    B --> C[103+ Endpoints in memory]
    C --> D[search_operations]
    C --> E[execute_operation]
    D -->|LLM discovers endpoints| F[Returns method, path, summary, params]
    E -->|LLM calls API| G[Proxies to ArgoCD with user token]

Modo generado (TOOL_MODE=generated)

Una herramienta MCP tipada por endpoint, generada dinámicamente al iniciar. El LLM llama a argocd_application_sync(name, revision) directamente — sin paso de búsqueda, sin construcción de ruta.

graph TD
    A[ArgoCD /swagger.json] -->|Fetch at startup| B[Parse Swagger 2.0]
    B --> C[103+ Endpoints]
    C -->|Generate per endpoint| D[argocd_application_list]
    C --> E[argocd_application_sync]
    C --> F[argocd_cluster_get]
    C --> G[... 100+ more tools]
    D & E & F & G -->|Typed params, 1 call| H[Proxies to ArgoCD]

¿Qué modo elegir?

BúsquedaGenerado
Herramientas registradas2103+
Rondas del LLM2 (búsqueda → ejecución)1 (llamada directa)
Tipado de parámetrosCadenas JSON crudasParámetros individuales tipados
Uso de contextoBajo (~200 tokens)Mayor (mitigado por la carga diferida del cliente)
Mejor paraClientes ligeros, contexto limitadoClaude Code, Claude Desktop, Cursor

Clientes como Claude Code y Claude Desktop admiten carga diferida de herramientas — solo cargan las definiciones de herramientas en el contexto cuando es necesario, por lo que las 103+ herramientas no consumen la ventana de contexto por adelantado.


Inicio Rápido

Gráfico Helm (Kubernetes)

helm install argocd-mcp oci://ghcr.io/matthisholleville/charts/argocd-mcp \
  --set argocd.baseURL=https://argocd.example.com \
  --set argocd.token=your-token

Consulta todas las opciones de configuración en charts/argocd-mcp/values.yaml.

Token Estático (simple)

Ideal para desarrollo local, CI/CD o configuraciones de un solo usuario. Utiliza un token de API estático de ArgoCD.

Claude Code

claude mcp add argocd -s user -- \
  docker run --rm -i \
  -e ARGOCD_BASE_URL=https://argocd.example.com \
  -e ARGOCD_TOKEN=your-token \
  ghcr.io/matthisholleville/argocd-mcp:latest

Claude Desktop

Añade a tu configuración MCP de Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "argocd": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
        "-e", "ARGOCD_BASE_URL=https://argocd.example.com",
        "-e", "ARGOCD_TOKEN=your-token",
        "ghcr.io/matthisholleville/argocd-mcp:latest"
      ]
    }
  }
}

OAuth mediante ArgoCD Dex (RBAC por usuario)

Ideal para configuraciones multiusuario y de producción. Cada usuario se autentica con su propia identidad mediante el Dex integrado de ArgoCD. No se necesita token estático — el id_token de Dex del usuario se reenvía a ArgoCD, que aplica sus políticas RBAC por usuario.

Paso 1: Inicia el servidor

docker run -p 8080:8080 \
  -e ARGOCD_BASE_URL=https://argocd.example.com \
  -e MCP_TRANSPORT=http \
  -e AUTH_MODE=oauth \
  -e DEX_CLIENT_ID=argo-cd-cli \
  -e SERVER_BASE_URL=http://localhost:8080 \
  ghcr.io/matthisholleville/argocd-mcp:latest

Paso 2: Conecta tu cliente MCP

Claude Code

claude mcp add --transport http --callback-port 9382 argocd http://localhost:8080/mcp

Luego ejecuta /mcp dentro de Claude Code para autenticarte mediante el navegador.

Claude Desktop

Claude Desktop requiere una URL de acceso público (la redirección OAuth pasa por claude.ai). Expón el servidor mediante un proxy inverso o ngrok, luego configura SERVER_BASE_URL en consecuencia. En modo oidc, esa devolución de llamada no es una URL de bucle local, por lo que también debe estar en la lista de permitidos: OIDC_ALLOWED_REDIRECT_URIS=https://claude.ai/api/mcp/auth_callback.

Añade la URL pública como servidor MCP remoto en Configuración > Conectores (por ejemplo, https://mcp.example.com/mcp). Claude Desktop maneja el flujo OAuth automáticamente.

Requisito: configuración de Dex de ArgoCD

El cliente Dex argo-cd-cli necesita las URL de devolución de llamada de tus clientes MCP registradas como URI de redirección. Añade una anulación de staticClients en tu dex.config de ArgoCD:

staticClients:
  - id: argo-cd-cli
    name: Argo CD CLI
    public: true
    redirectURIs:
      - http://localhost
      - http://localhost:8085/auth/callback
      - http://localhost:9382/callback
      - https://claude.ai/api/mcp/auth_callback
URI de redirecciónUtilizado por
http://localhostCLI de ArgoCD (argocd login --sso)
http://localhost:8085/auth/callbackCLI de ArgoCD (heredado)
http://localhost:9382/callbackClaude Code (--callback-port 9382)
https://claude.ai/api/mcp/auth_callbackClaude Desktop

ArgoCD registra automáticamente argo-cd-cli al iniciar y lo antepone a la lista de clientes. Dex utiliza la última definición cuando hay IDs duplicados, por lo que nuestra anulación gana de forma segura (ref).

Nota: El cliente argo-cd-cli es público (sin secreto), por lo que esta anulación es segura — a diferencia de anular argo-cd que tiene un secreto interno (ref).

Cómo funciona internamente:

  • El servidor MCP actúa como un proxy OAuth hacia el Dex de ArgoCD
  • Utiliza el cliente público argo-cd-cli (no se necesita secreto)
  • El id_token de Dex (con aud: argo-cd-cli) se intercambia en el campo access_token y se reenvía como Bearer a ArgoCD
  • ArgoCD valida el token contra el JWKS de Dex y aplica RBAC por usuario
  • Cada usuario solo ve las aplicaciones y recursos a los que tiene acceso

OAuth mediante un proveedor OIDC externo (sin Dex)

Para instancias de ArgoCD configuradas con oidc.config en lugar de dex.config: ArgoCD se comunica directamente con el proveedor de identidad y no ejecuta Dex, por lo que /api/dex/* no responde nada y AUTH_MODE=oauth no puede completar un flujo. AUTH_MODE=oidc actúa como proxy hacia ese mismo proveedor, y el RBAC por usuario funciona exactamente igual que en el modo Dex.

Los dos ajustes son mutuamente excluyentes en ArgoCD (oidc.config gana y Dex nunca se sirve), así que elige el modo que coincida con tu instancia:

ArgoCD tieneModoProveedor
dex.configoauthDex integrado de ArgoCD
oidc.configoidctu IdP, directamente
docker run -p 8080:8080 \
  -e ARGOCD_BASE_URL=https://argocd.example.com \
  -e MCP_TRANSPORT=http \
  -e AUTH_MODE=oidc \
  -e SERVER_BASE_URL=http://localhost:8080 \
  ghcr.io/matthisholleville/argocd-mcp:latest

No se necesita emisor ni ID de cliente: el servidor lee el propio /api/v1/settings de ArgoCD al iniciar y utiliza el proveedor que declara, prefiriendo cliClientID sobre clientID cuando ambos están configurados. Anula con OIDC_ISSUER + OIDC_CLIENT_ID (ambos juntos) para apuntar a otra cosa. La conexión del cliente es idéntica al modo Dex.

Requisito: configuración del proveedor de identidad

El ID de cliente debe ser una audiencia que ArgoCD acepte. ArgoCD valida el aud del id_token entrante contra su oidc.config clientID / cliClientID. Un token emitido para cualquier otro cliente se rechaza con failed to verify the token, razón por la cual el servidor usa por defecto el cliente que el propio ArgoCD anuncia.

Registra una URI de redirección en esa aplicación:

{SERVER_BASE_URL}/oauth/callback

Los clientes MCP vinculan un puerto de bucle local que no puede pre-registrarse. Dex acepta cualquier redirección de bucle local para un cliente público (RFC 8252), por lo que el modo oauth no necesita ese manejo, pero la mayoría de los proveedores requieren una coincidencia exacta y la rechazarían.

Así que en modo oidc, este servidor es el destino de redirección registrado: transporta el redirect_uri y el state del cliente a través del parámetro state ascendente (firmado con HMAC, por lo que ninguno puede ser manipulado en el navegador), luego retransmite el código de vuelta al bucle local que el cliente vinculó. Las devoluciones de llamada del cliente no necesitan registro alguno.

Debido a que el proveedor ahora solo ve la devolución de llamada de este servidor, su propia lista de permitidos de URI de redirección ya no limita dónde puede terminar un código de autorización, y este servidor debe hacerlo por sí mismo. Acepta redirecciones de bucle local (RFC 8252, lo que vinculan los clientes MCP) y rechaza todo lo demás; un cliente que devuelve la llamada a una URL pública fija, por ejemplo https://claude.ai/api/mcp/auth_callback para la integración alojada de claude.ai, debe estar listado en OIDC_ALLOWED_REDIRECT_URIS. Solo la firma no sería suficiente: la firma prueba que este servidor emitió el estado, no que el destino sea seguro.

Configura OIDC_PROXY_CALLBACK=false para pasar el redirect_uri del cliente directamente, para un proveedor que tolere redirecciones de bucle local. Cada devolución de llamada del cliente debe registrarse entonces.

Clientes confidenciales: si la aplicación a la que apunta ArgoCD requiere un secreto de cliente (la mayoría de los tipos de aplicación web lo hacen), pásalo como OIDC_CLIENT_SECRET. Se añade del lado del servidor en el intercambio de tokens, por lo que los clientes MCP aún se registran como públicos y nunca lo ven. Los clientes Públicos/PKCE (por ejemplo, una aplicación registrada específicamente para uso CLI y referenciada por ArgoCD como cliClientID) no necesitan secreto.

Grupos para RBAC: ArgoCD solicita la reclamación de grupos a través de su propio requestedIDTokenClaims. Los proveedores que solo emiten una reclamación bajo petición necesitan lo mismo de este servidor, de lo contrario cada usuario termina en policy.default:

-e OIDC_REQUESTED_ID_TOKEN_CLAIMS='{"id_token":{"groups":{"essential":true}}}'

Los ámbitos se toman del propio requestedScopes de ArgoCD cuando se descubren, ya que los proveedores no se ponen de acuerdo sobre qué ámbitos existen siquiera (ni Entra ID ni Google Workspace tienen groups). Se recurre a openid profile email groups cuando ArgoCD no declara ninguno, y OIDC_SCOPES anula ambos. openid es obligatorio de cualquier manera: sin él, el proveedor no emite ningún id_token, por lo que el inicio rechaza un conjunto de ámbitos que lo omita y el intercambio de tokens falla con 502 en lugar de entregar al cliente un token opaco que daría 401 en cada llamada a ArgoCD.

Ten en cuenta que no se solicita offline_access, por lo que no hay token de actualización y los clientes se re-autentican cuando expira el id_token. Añádelo mediante OIDC_SCOPES para un proveedor que lo acepte.

Cómo funciona internamente:

  • El servidor MCP actúa como un proxy OAuth hacia el proveedor, descubierto mediante {issuer}/.well-known/openid-configuration, cuyo issuer debe coincidir con el solicitado
  • /oauth/callback es el destino de redirección del proveedor y retransmite el código a la devolución de llamada del propio cliente, que se valida contra el bucle local más OIDC_ALLOWED_REDIRECT_URIS
  • El id_token del proveedor se intercambia en el campo access_token y se reenvía como Bearer a ArgoCD
  • ArgoCD lo valida contra el JWKS del proveedor y aplica RBAC por usuario
  • El inicio falla de forma ruidosa cuando ArgoCD anuncia una configuración Dex en su lugar, señalando a AUTH_MODE=oauth
  • El estado de la devolución de llamada se firma con una clave por proceso a menos que se configure OIDC_STATE_KEY, por lo que ejecutar más de una réplica requiere esa clave compartida

Búsqueda Semántica (opcional)

Habilita la búsqueda vectorial impulsada por Ollama para mejores resultados en consultas de lenguaje natural:

docker compose up --build -d  # Starts Ollama + argocd-mcp with embeddings

Configura EMBEDDINGS_ENABLED=true, OLLAMA_URL y EMBEDDINGS_MODEL (por defecto nomic-embed-text).


Modo de Solo Lectura (opcional)

Configura DISABLE_WRITE=true para evitar cualquier acción disruptiva en tu clúster. Cuando está habilitado:

  • Los endpoints de escritura están ocultos — las operaciones POST, PUT, PATCH, DELETE se filtran del índice de búsqueda, por lo que el LLM nunca las descubre.
  • La ejecución de escritura está bloqueada — incluso si un llamador elabora manualmente una solicitud execute_operation con un método de escritura, es rechazada.
  • Las operaciones de lectura funcionan normalmenteGET, HEAD, OPTIONS no se ven afectadas.

Esto es ideal para entornos de producción, demostraciones o cualquier configuración donde quieras que los LLM observen pero nunca modifiquen tus recursos de ArgoCD.

# Claude Code
claude mcp add argocd -s user -- \
  docker run --rm -i \
  -e ARGOCD_BASE_URL=https://argocd.example.com \
  -e ARGOCD_TOKEN=your-token \
  -e DISABLE_WRITE=true \
  ghcr.io/matthisholleville/argocd-mcp:latest

Alcance de Recursos (opcional)

Establece ALLOWED_RESOURCES para restringir qué tipos de recursos de ArgoCD puede descubrir y llamar el LLM. Esto filtra tanto los resultados de búsqueda como bloquea la ejecución de endpoints fuera de alcance.

# Only expose application and version endpoints
ALLOWED_RESOURCES=ApplicationService,VersionService

Se combina con DISABLE_WRITE:

# Read-only access to applications only
DISABLE_WRITE=true
ALLOWED_RESOURCES=ApplicationService

Etiquetas de recursos disponibles (de la especificación OpenAPI de ArgoCD):

EtiquetaEndpoints
AccountService6
ApplicationService31
ApplicationSetService6
CertificateService3
ClusterService7
GPGKeyService4
NotificationService3
ProjectService12
RepoCredsService8
RepositoryService17
SessionService3
SettingsService2
VersionService1

La coincidencia no distingue entre mayúsculas y minúsculas (applicationservice funciona).


Modo de Herramientas Generadas (opcional)

Establece TOOL_MODE=generated para crear una herramienta MCP por endpoint de ArgoCD al inicio. En lugar de buscar y luego ejecutar, el LLM llama directamente a herramientas tipadas:

# Claude Code
claude mcp add argocd -s user -- \
  docker run --rm -i \
  -e ARGOCD_BASE_URL=https://argocd.example.com \
  -e ARGOCD_TOKEN=your-token \
  -e TOOL_MODE=generated \
  ghcr.io/matthisholleville/argocd-mcp:latest
Cómo funcionan las herramientas generadas

El operationId de cada endpoint se convierte en un nombre de herramienta en snake_case con el prefijo argocd_:

operationIdNombre de la herramienta
ApplicationService_Syncargocd_application_sync
ClusterService_Getargocd_cluster_get
ApplicationSetService_Listargocd_application_set_list

Los parámetros están tipados individualmente — no se necesita JSON crudo para casos comunes:

argocd_application_sync(
  name:      "frontend"      ← path param (required)
  revision:  "HEAD"          ← body param, flattened
  dryRun:    true            ← body param, flattened
  strategy:  '{"apply":{}}'  ← nested object stays JSON string
)

Las herramientas están anotadas con sugerencias MCP (readOnlyHint, destructiveHint, idempotentHint) para que clientes como Claude Desktop las categoricen correctamente (lectura vs escritura/eliminación).

DISABLE_WRITE y ALLOWED_RESOURCES se aplican al inicio — las herramientas prohibidas simplemente no se generan. El LLM ni siquiera puede verlas.


Límite de Tasa (opcional)

Protege ArgoCD de llamadas API excesivas estableciendo RATE_LIMIT. Solo execute_operation tiene límite de tasa — la búsqueda es local y no se ve afectada.

RATE_LIMIT=10              # 10 requests/sec per user
RATE_LIMIT_BURST=20        # allow short bursts up to 20
Cómo funciona el límite de tasa

El límite de tasa utiliza un cubo de tokens por usuario. Cada usuario tiene un cubo que se rellena a RATE_LIMIT tokens por segundo, con un máximo de RATE_LIMIT_BURST tokens. Cuando el cubo está vacío, las solicitudes se rechazan hasta que los tokens se rellenen.

Modo de autenticaciónClave del cuboComportamiento
OAuthCorreo del usuario del JWTCada usuario tiene un límite independiente
Token estáticoClave compartida "static-token"Todos los clientes comparten un cubo

Nota: En modo de token estático, un LLM agresivo puede agotar a otros clientes. Prefiere el modo OAuth en configuraciones de producción multiusuario.

Cuando una solicitud tiene límite de tasa:

  • La llamada nunca llega a ArgoCD — se rechaza antes del proxy
  • Se emite una entrada de registro de auditoría con blocked: true
  • El LLM recibe un error claro: "rate limit exceeded: too many requests, please slow down"

Si RATE_LIMIT_BURST no está establecido, se usa por defecto el valor de RATE_LIMIT. Establece RATE_LIMIT=0 (u omítelo) para deshabilitar el límite de tasa por completo.


Plantillas de Prompts

Flujos de trabajo preempaquetados para operaciones comunes de ArgoCD. Los clientes MCP (Claude Desktop, Cursor) muestran estos como prompts seleccionables en su interfaz.

PromptDescripciónArgumentos
unhealthy-appsEncuentra todas las aplicaciones con estado degradado o sincronización desincronizada
sync-statusVista general estilo panel de todas las aplicaciones
app-diffMuestra qué cambiaría en la sincronizaciónappName (obligatorio)
rollbackMuestra el historial y revierte a una revisión anteriorappName (obligatorio)
app-logsObtiene y analiza registros de contenedoresappName (obligatorio), container (opcional)

Cada prompt guía al LLM a través de un flujo de trabajo paso a paso usando search_operations y execute_operation. No se necesitan herramientas adicionales.


Registro de Auditoría

El registro de auditoría está habilitado por defecto. Cada llamada search_operations y execute_operation emite una entrada de registro JSON estructurada a stderr:

{"time":"2026-03-22T10:00:00Z","level":"INFO","msg":"audit","tool":"execute_operation","method":"GET","path":"/api/v1/applications","blocked":false,"duration_ms":142,"status_code":200,"user":"alice@example.com"}

Cada entrada incluye:

  • toolsearch_operations o execute_operation
  • user — correo del token OAuth (vacío en modo de token estático)
  • method / path — la llamada API de ArgoCD (ejecución) o query (búsqueda)
  • status_code — código de respuesta HTTP ascendente
  • blockedtrue si la llamada fue rechazada por DISABLE_WRITE o ALLOWED_RESOURCES
  • duration_ms — tiempo de ida y vuelta en milisegundos
  • error — mensaje de error (registrado a nivel ERROR cuando está presente)

Establece AUDIT_LOG=false para deshabilitar.


Métricas

Las métricas de Prometheus se exponen en GET /metrics siempre que MCP_TRANSPORT=http (no hay superficie HTTP en modo stdio, por lo que no hay nada que raspar allí). A diferencia del registro de auditoría, las métricas están siempre activas y no se pueden deshabilitar: no llevan identidad de usuario, solo un conjunto de etiquetas tool/status acotado, por lo que no hay razón de volumen o privacidad para apagarlas.

MétricaTipoEtiquetasDescripción
mcp_tool_calls_totalContadortool, statusTotal de llamadas a herramientas. status es ok, blocked (rechazado por DISABLE_WRITE, ALLOWED_RESOURCES, o RATE_LIMIT), o error (una llamada fallida, o una rechazada durante la validación de la solicitud, p. ej., un parámetro obligatorio faltante)
mcp_tool_duration_secondsHistogramatoolLatencia de llamadas a herramientas completadas (el viaje de ida y vuelta a ArgoCD). Las llamadas blocked y rechazadas por validación nunca llegan a ArgoCD y se excluyen intencionalmente — de lo contrario, dispararían el histograma hacia 0 y sesgarían p95/p99 lejos de la latencia real, peor aún bajo límites de tasa intensos. Agrupado hasta 120s para que las operaciones lentas (sincronización, despliegue) no colapsen en +Inf

tool es search_operations / execute_operation en el modo de búsqueda predeterminado, o el nombre de herramienta generado (p. ej., argocd_application_sync) en TOOL_MODE=generated.

curl http://localhost:8080/metrics | grep mcp_tool_
Ejemplo de PromQL
# Call rate by tool, last 5 minutes
sum by (tool) (rate(mcp_tool_calls_total[5m]))

# p95 latency
histogram_quantile(0.95, sum by (le, tool) (rate(mcp_tool_duration_seconds_bucket[5m])))

# Error ratio
sum(rate(mcp_tool_calls_total{status="error"}[5m])) / sum(rate(mcp_tool_calls_total[5m]))

Configuración

VariableObligatoriaPredeterminadoDescripción
ARGOCD_BASE_URLURL del servidor de ArgoCD
ARGOCD_TOKENCuando AUTH_MODE=tokenToken API de ArgoCD
AUTH_MODENotokentoken (estático), oauth (Dex de ArgoCD) o oidc (proveedor externo, sin Dex)
DEX_CLIENT_IDCuando AUTH_MODE=oauthargo-cd-cliID de cliente Dex
SERVER_BASE_URLCuando AUTH_MODE=oauth, o oidc con OIDC_PROXY_CALLBACKhttp://localhost:8080 en modo oauth, ninguno en oidcURL pública de este servidor. En modo de devolución de llamada proxy oidc es la URI de redirección registrada en el proveedor, por lo que no tiene valor predeterminado y el inicio falla sin él
OIDC_ISSUERNoleído de ArgoCDURL del emisor del proveedor. Establecer junto con OIDC_CLIENT_ID
OIDC_CLIENT_IDNoleído de ArgoCDID de cliente. Debe ser una audiencia que ArgoCD acepte
OIDC_CLIENT_SECRETPara clientes confidencialesAñadido en el lado del servidor en el intercambio de tokens
OIDC_SCOPESNorequestedScopes de ArgoCD, si no openid profile email groupsÁmbitos separados por espacios. Debe incluir openid
OIDC_PROXY_CALLBACKNotrueRegistrar {SERVER_BASE_URL}/oauth/callback en el proveedor y retransmitir códigos a los clientes, en lugar de registrar la devolución de llamada de cada cliente
OIDC_REQUESTED_ID_TOKEN_CLAIMSNoParámetro de solicitud JSON claims, p. ej., {"id_token":{"groups":{"essential":true}}}
OIDC_ALLOWED_REDIRECT_URISNoValores de redirect_uri de clientes no de bucle local separados por comas para aceptar. El bucle local siempre se acepta; cualquier otra cosa se rechaza
OIDC_STATE_KEYCon >1 réplicaSecreto compartido (mín. 32 caracteres) con el que se firma el estado de la devolución de llamada. Sin establecer, genera una clave por proceso, que solo funciona con una sola réplica
ARGOCD_SPEC_URLNo{base}/swagger.jsonAnular URL de especificación
MCP_TRANSPORTNostdiostdio o http
MCP_ADDRNo:8080Dirección de escucha HTTP
ARGOCD_TLS_INSECURENofalseOmitir verificación de certificado TLS (establece true para certificados autofirmados)
TOOL_MODENosearchsearch (2 meta-herramientas) o generated (1 herramienta por endpoint)
DISABLE_WRITENofalseBloquear todas las operaciones de escritura (POST, PUT, PATCH, DELETE)
ALLOWED_RESOURCESNoLista separada por comas de etiquetas de recursos para exponer (p. ej., ApplicationService,VersionService)
RATE_LIMITNo0 (deshabilitado)Máximo de solicitudes execute_operation por segundo por usuario
RATE_LIMIT_BURSTNoigual que RATE_LIMITTamaño máximo de ráfaga antes de la limitación
AUDIT_LOGNotrueRegistro de auditoría JSON estructurado para cada llamada de herramienta
EMBEDDINGS_ENABLEDNofalseHabilitar búsqueda vectorial de Ollama
OLLAMA_URLNohttp://localhost:11434/apiURL de API de Ollama
EMBEDDINGS_MODELNonomic-embed-textModelo de incrustación de Ollama

Compilar desde el código fuente

make build
ARGOCD_BASE_URL=https://argocd.example.com ARGOCD_TOKEN=xxx ./bin/argocd-mcp

Licencia

MIT