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-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ápido • Cómo Funciona • OAuth • OIDC • Configuració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) ogenerated(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úsqueda | Generado | |
|---|---|---|
| Herramientas registradas | 2 | 103+ |
| Rondas del LLM | 2 (búsqueda → ejecución) | 1 (llamada directa) |
| Tipado de parámetros | Cadenas JSON crudas | Parámetros individuales tipados |
| Uso de contexto | Bajo (~200 tokens) | Mayor (mitigado por la carga diferida del cliente) |
| Mejor para | Clientes ligeros, contexto limitado | Claude 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ón | Utilizado por |
|---|---|
http://localhost | CLI de ArgoCD (argocd login --sso) |
http://localhost:8085/auth/callback | CLI de ArgoCD (heredado) |
http://localhost:9382/callback | Claude Code (--callback-port 9382) |
https://claude.ai/api/mcp/auth_callback | Claude 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-clies público (sin secreto), por lo que esta anulación es segura — a diferencia de anularargo-cdque 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_tokende Dex (conaud: argo-cd-cli) se intercambia en el campoaccess_tokeny 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 tiene | Modo | Proveedor |
|---|---|---|
dex.config | oauth | Dex integrado de ArgoCD |
oidc.config | oidc | tu 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, cuyoissuerdebe coincidir con el solicitado /oauth/callbackes 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ásOIDC_ALLOWED_REDIRECT_URIS- El
id_tokendel proveedor se intercambia en el campoaccess_tokeny 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,DELETEse 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_operationcon un método de escritura, es rechazada. - Las operaciones de lectura funcionan normalmente —
GET,HEAD,OPTIONSno 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):
| Etiqueta | Endpoints |
|---|---|
AccountService | 6 |
ApplicationService | 31 |
ApplicationSetService | 6 |
CertificateService | 3 |
ClusterService | 7 |
GPGKeyService | 4 |
NotificationService | 3 |
ProjectService | 12 |
RepoCredsService | 8 |
RepositoryService | 17 |
SessionService | 3 |
SettingsService | 2 |
VersionService | 1 |
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_:
| operationId | Nombre de la herramienta |
|---|---|
ApplicationService_Sync | argocd_application_sync |
ClusterService_Get | argocd_cluster_get |
ApplicationSetService_List | argocd_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ón | Clave del cubo | Comportamiento |
|---|---|---|
| OAuth | Correo del usuario del JWT | Cada usuario tiene un límite independiente |
| Token estático | Clave 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.
| Prompt | Descripción | Argumentos |
|---|---|---|
unhealthy-apps | Encuentra todas las aplicaciones con estado degradado o sincronización desincronizada | — |
sync-status | Vista general estilo panel de todas las aplicaciones | — |
app-diff | Muestra qué cambiaría en la sincronización | appName (obligatorio) |
rollback | Muestra el historial y revierte a una revisión anterior | appName (obligatorio) |
app-logs | Obtiene y analiza registros de contenedores | appName (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:
- tool —
search_operationsoexecute_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
- blocked —
truesi la llamada fue rechazada porDISABLE_WRITEoALLOWED_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étrica | Tipo | Etiquetas | Descripción |
|---|---|---|---|
mcp_tool_calls_total | Contador | tool, status | Total 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_seconds | Histograma | tool | Latencia 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
| Variable | Obligatoria | Predeterminado | Descripción |
|---|---|---|---|
ARGOCD_BASE_URL | Sí | URL del servidor de ArgoCD | |
ARGOCD_TOKEN | Cuando AUTH_MODE=token | Token API de ArgoCD | |
AUTH_MODE | No | token | token (estático), oauth (Dex de ArgoCD) o oidc (proveedor externo, sin Dex) |
DEX_CLIENT_ID | Cuando AUTH_MODE=oauth | argo-cd-cli | ID de cliente Dex |
SERVER_BASE_URL | Cuando AUTH_MODE=oauth, o oidc con OIDC_PROXY_CALLBACK | http://localhost:8080 en modo oauth, ninguno en oidc | URL 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_ISSUER | No | leído de ArgoCD | URL del emisor del proveedor. Establecer junto con OIDC_CLIENT_ID |
OIDC_CLIENT_ID | No | leído de ArgoCD | ID de cliente. Debe ser una audiencia que ArgoCD acepte |
OIDC_CLIENT_SECRET | Para clientes confidenciales | Añadido en el lado del servidor en el intercambio de tokens | |
OIDC_SCOPES | No | requestedScopes de ArgoCD, si no openid profile email groups | Ámbitos separados por espacios. Debe incluir openid |
OIDC_PROXY_CALLBACK | No | true | Registrar {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_CLAIMS | No | Parámetro de solicitud JSON claims, p. ej., {"id_token":{"groups":{"essential":true}}} | |
OIDC_ALLOWED_REDIRECT_URIS | No | Valores 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_KEY | Con >1 réplica | Secreto 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_URL | No | {base}/swagger.json | Anular URL de especificación |
MCP_TRANSPORT | No | stdio | stdio o http |
MCP_ADDR | No | :8080 | Dirección de escucha HTTP |
ARGOCD_TLS_INSECURE | No | false | Omitir verificación de certificado TLS (establece true para certificados autofirmados) |
TOOL_MODE | No | search | search (2 meta-herramientas) o generated (1 herramienta por endpoint) |
DISABLE_WRITE | No | false | Bloquear todas las operaciones de escritura (POST, PUT, PATCH, DELETE) |
ALLOWED_RESOURCES | No | Lista separada por comas de etiquetas de recursos para exponer (p. ej., ApplicationService,VersionService) | |
RATE_LIMIT | No | 0 (deshabilitado) | Máximo de solicitudes execute_operation por segundo por usuario |
RATE_LIMIT_BURST | No | igual que RATE_LIMIT | Tamaño máximo de ráfaga antes de la limitación |
AUDIT_LOG | No | true | Registro de auditoría JSON estructurado para cada llamada de herramienta |
EMBEDDINGS_ENABLED | No | false | Habilitar búsqueda vectorial de Ollama |
OLLAMA_URL | No | http://localhost:11434/api | URL de API de Ollama |
EMBEDDINGS_MODEL | No | nomic-embed-text | Modelo 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