mcp-read-only-argocd
This server provides read-only access to one or more Argo CD instances via MCP, allowing you to inspect and query GitOps deployments without making any changes. Authentication uses browser session cookies and multiple instances are supported.
Connections & Instance Info
list_connections– View all configured Argo CD instances (name, URL, description)get_version– Retrieve the Argo CD version of a specific instanceget_settings– Fetch the global settings of a specific Argo CD instance
Applications
list_applications– List all applications, optionally filtered by project names or label selectorsget_application– Get detailed info on a specific app (sync status, health, spec)get_application_resource_tree– View the full Kubernetes resource tree and relationships for an appget_application_managed_resources– List managed resources, filterable by API group, kind, namespace, or resource nameget_application_logs– Retrieve pod logs, with options for pod/container filtering, tail lines, and time window
Projects
list_projects– List all Argo CD projectsget_project– Get detailed project info including source repos, destinations, and roles
Clusters
list_clusters– List all registered Kubernetes clusters and their connection statusget_cluster– Get detailed info about a specific cluster by server URL
Repositories
list_repositories– List all configured Git/Helm repositories and their connection statusget_repository– Get detailed info about a specific repository by URL
Provides read-only access to Argo CD instances using browser session cookies, enabling listing applications, projects, clusters, repositories, and retrieving application details, resource trees, managed resources, and logs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-read-only-argocdList all applications in staging."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Read-Only Argo CD Server
A secure MCP (Model Context Protocol) server that provides read-only access to Argo CD instances using browser session cookies.
Default layout:
Config:
~/.config/lukleh/mcp-read-only-argocd/connections.yamlCredentials: stored in
connections.yamlCache:
~/.cache/lukleh/mcp-read-only-argocd/
Features
Read-only by design: only read operations are exposed
Session cookie authentication: uses your existing
argocd.tokenbrowser sessionMulti-instance support: connect to multiple Argo CD instances at once
Automatic cookie rotation: refreshed session cookies are persisted to
connections.yamlStale token recovery: a 401 response triggers a one-time Chrome cookie refresh and retry
Package-native runtime paths: no repository checkout required for normal use
Related MCP server: argocd-mcp
Why Session Cookies?
Unlike token-based setups, this server can reuse your existing browser session:
no extra API token management
uses your existing SSO/OIDC login
matches the permissions you already have in the UI
Prerequisites
Python 3.11 or higher
an Argo CD browser session cookie
an MCP client such as Claude Code or Codex
Quick Start
1. Install the Server
# Run the published package without cloning the repository
uvx mcp-read-only-argocd@latest --write-sample-config
# Or install it once and reuse the command directly
uv tool install mcp-read-only-argocd
mcp-read-only-argocd --write-sample-configWhen using uvx, prefer mcp-read-only-argocd@latest in user-facing docs and
MCP client configs. This avoids reusing a stale cached tool environment after a
new release is published.
The command above writes a starter config to ~/.config/lukleh/mcp-read-only-argocd/connections.yaml.
2. Confirm Runtime Paths
uvx mcp-read-only-argocd@latest --print-paths3. Edit the Connections File
Edit ~/.config/lukleh/mcp-read-only-argocd/connections.yaml:
- connection_name: staging
url: https://argocd.example.com
description: Staging Argo CD
session_token: your-session-token
- connection_name: production
url: https://argocd-prod.example.com
description: Production Argo CD
session_token: your-other-session-token4. Get Your argocd.token Session Cookie
Log in to your Argo CD web UI
Open browser developer tools
Go to Application/Storage -> Cookies
Copy the value of the
argocd.tokencookie
5. Store the Session Cookie
Put the cookie value in the session_token field for each connection in
~/.config/lukleh/mcp-read-only-argocd/connections.yaml. The server detects
changes to connections.yaml before tool calls, so editing this file does not
require an MCP restart.
If Argo CD rejects the active token with a 401 response, the server tries once to
load a fresh argocd.token from Chrome Profile 1 for the matching connection
domain. When that token differs from the active token, the failed request is
retried once. If the retry succeeds, the fresh token is written back to
connections.yaml.
6. Configure Your MCP Client
Claude Code
claude mcp add mcp-read-only-argocd \
--scope user \
-- uvx mcp-read-only-argocd@latestCodex
codex mcp add mcp-read-only-argocd \
-- uvx mcp-read-only-argocd@latest7. Restart and Test
Restart your MCP client and try a simple query such as:
List all applications in the staging Argo CD instance.Configuration
connections.yaml supports a list of Argo CD connections:
- connection_name: staging
url: https://argocd.example.com
description: Staging Argo CD instance
session_token: your-session-token
timeout: 30
verify_ssl: trueFields:
connection_name: unique identifier used in tool calls and token refreshesurl: Argo CD base URLdescription: optional human-readable descriptionsession_token: Argo CDargocd.tokenbrowser cookietimeout: optional request timeout in secondsverify_ssl: optional SSL verification toggle
Runtime path override environment variables:
MCP_READ_ONLY_ARGOCD_CONFIG_DIRMCP_READ_ONLY_ARGOCD_CACHE_DIR
Command Line Testing
# Show the resolved runtime paths
uvx mcp-read-only-argocd@latest --print-paths
# Write or refresh the default connections.yaml
uvx mcp-read-only-argocd@latest --write-sample-config
uvx mcp-read-only-argocd@latest --write-sample-config --overwrite
# Run the server with the default home-directory config
uvx mcp-read-only-argocd@latest
# Or point at a different runtime root
uvx mcp-read-only-argocd@latest --config-dir /path/to/config-dirMCP Tools
Core
list_connectionsget_versionget_settings
Applications
list_applicationsget_applicationget_application_resource_treeget_application_managed_resourcesget_application_logs
Projects
list_projectsget_project
Clusters
list_clustersget_cluster
Repositories
list_repositoriesget_repository
Local Development
If you want to work on the repository itself:
git clone https://github.com/lukleh/mcp-read-only-argocd.git
cd mcp-read-only-argocd
uv sync --extra dev
uv run pytest -q
uv run mcp-read-only-argocd --print-paths
uv run python smoke_test.py --print-pathsThe checked-in sample file remains available at connections.yaml.sample for documentation and review, but package users should prefer --write-sample-config.
License
MIT
Available Tools
14 toolsget_applicationB
Get detailed information about a specific application.
Args: connection_name: Name of the Argo CD connection name: Application name
Returns: JSON string with application details including sync status, health, and spec.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the return format but fails to specify effects such as what happens on missing application, authentication requirements, or rate limits. The description assumes a simple read but omits important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four short lines, front-loading the purpose. It uses a clear structure with Args and Returns sections, though it could be more streamlined. Overall, it is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and the presence of an output schema, the description covers the basic purpose and return type. However, it lacks details on error handling, prerequisites, and interaction with siblings, making it only moderately complete for real-world use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions are missing (0% coverage), but the description adds brief parameter semantics: 'connection_name: Name of the Argo CD connection' and 'name: Application name.' This provides minimal context beyond the schema's property names, earning a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a specific application.' It distinguishes from sibling tools like get_application_logs, which focus on specific aspects, by indicating it returns overall application details including sync status, health, and spec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives like list_applications or get_application_logs. It lacks context about prerequisites or preferred scenarios, leaving the agent with no criteria for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_application_logsA
Get logs for an application's pods.
Args: connection_name: Name of the Argo CD connection name: Application name namespace: Optional namespace (defaults to application's namespace) pod_name: Optional specific pod name to get logs from container: Optional container name within the pod tail_lines: Number of lines from the end to return (e.g., 100) since_seconds: Return logs from the last N seconds
Returns: JSON string with log entries.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| name | Yes | ||
| namespace | No | ||
| pod_name | No | ||
| container | No | ||
| tail_lines | No | ||
| since_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It mentions parameter defaults ('namespace defaults to application's namespace') but does not disclose whether the operation is read-only, error handling, authentication requirements, or effects like rate limits. The return type is stated as 'JSON string with log entries' but lacks details on log format or truncation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-structured: a one-line summary, followed by a clear Args list, and a Returns line. Every sentence adds value with no redundancy. It is front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and parameters adequately for a log retrieval tool. However, it lacks information on default behavior when optional parameters like pod_name are omitted (e.g., whether logs from all pods are returned) and does not clarify error scenarios or response format details. With an output schema present, return value details are partially covered, but behavioral edges remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides meaningful explanations for all 7 parameters, including defaults and examples (e.g., 'tail_lines: Number of lines from the end to return (e.g., 100)'). This significantly enriches understanding beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get logs for an application's pods', which is a specific verb and resource. It distinguishes from sibling tools that retrieve other application details (e.g., get_application, get_application_managed_resources) or unrelated resources (e.g., get_cluster).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching application logs but provides no explicit guidance on when to use this tool versus alternatives (e.g., when pod logs vs. application-level logs). No exclusions or context-specific conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_application_managed_resourcesA
Get managed resources for an application.
Args: connection_name: Name of the Argo CD connection name: Application name group: Optional API group to filter (e.g., "apps", "networking.k8s.io") kind: Optional resource kind to filter (e.g., "Deployment", "Service") namespace: Optional namespace to filter resource_name: Optional resource name to filter
Returns: JSON string with list of managed resources.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| name | Yes | ||
| group | No | ||
| kind | No | ||
| namespace | No | ||
| resource_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes the return format (JSON string of managed resources) and optional filters, but with no annotations, it fails to declare read-only behavior, error conditions, or permission requirements. Sufficient for a simple get operation but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The docstring format with Args and Returns sections is well-structured and front-loaded. Each parameter is described concisely, though the list could be slightly more compact without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers parameters and return value, but lacks information on error handling, prerequisites (e.g., connection must exist), and default behavior when no filters match. Output schema exists but is not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds clear meaning for all six parameters, explaining each field's purpose (e.g., connection_name as Argo CD connection name, optional filters for group, kind, etc.). This significantly aids agent understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves managed resources for an application, using a specific verb and resource. It distinguishes from sibling tools that focus on other aspects like application details, logs, or resource tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_application or get_application_resource_tree. The description only states the function without context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_application_resource_treeB
Get the Kubernetes resource tree for an application.
Shows all resources created by the application and their relationships.
Args: connection_name: Name of the Argo CD connection name: Application name
Returns: JSON string with resource tree including nodes and their parent references.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states the output is a 'JSON string with resource tree including nodes and their parent references,' which adds some transparency about the return format. However, it does not disclose edge cases like missing applications, permission requirements, or whether the operation is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with a purpose line, elaboration, and separate Args/Returns sections. Every sentence is informative, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two simple parameters and an output schema exists, the description provides basic context: it returns a JSON string with the resource tree. However, it lacks details on error scenarios, prerequisites, or behavior when resources are absent, making it adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description's Arg section is the only source. It provides minimal explanations: 'connection_name: Name of the Argo CD connection' and 'name: Application name,' which essentially restate the parameter names and add little semantic value beyond what the names imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the Kubernetes resource tree for an application' and elaborates that it shows 'all resources created by the application and their relationships.' This distinguishes it from sibling tools like get_application_managed_resources, which focuses on managed resources without the tree structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or scenarios where this tool is preferred over siblings such as get_application or get_application_managed_resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_clusterB
Get detailed information about a specific cluster.
Args: connection_name: Name of the Argo CD connection server: Cluster server URL (e.g., "https://kubernetes.default.svc")
Returns: JSON string with cluster details including connection info and namespaces.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| server | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. With no annotations provided, the description carries the full burden, and it minimally states that it returns a JSON string.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a one-line purpose followed by a clear list of arguments and return value. Every sentence is necessary and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation, the description covers the basic purpose and parameters. However, missing usage guidelines and behavioral transparency reduce completeness. The presence of an output schema mitigates the need to detail return values, but overall context is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It provides brief but meaningful descriptions for both parameters (connection name and server URL), adding value over the bare schema property names. However, it does not specify format constraints beyond an example for the server parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a specific cluster, using a clear verb+resource pattern. However, it does not explicitly differentiate from sibling tools like list_clusters, though the name implies specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get detailed information about a specific project.
Args: connection_name: Name of the Argo CD connection name: Project name
Returns: JSON string with project details including source repos, destinations, and roles.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals the return value includes 'project details including source repos, destinations, and roles', adding behavioral context beyond the implied read-only nature. No annotations exist, so this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two sentences for the main purpose, then clear arg/return sections. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description sufficiently summarizes return values. It covers the main functionality for a two-parameter getter, but could mention error scenarios or that the project must exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description explicitly clarifies both parameters: 'connection_name' as the Argo CD connection name and 'name' as the project name, adding meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'project', distinguishing it from sibling tools like get_application or get_cluster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides argument details but no guidance on when to use this tool versus alternatives like list_projects or get_application. No context on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repositoryA
Get detailed information about a specific repository.
Args: connection_name: Name of the Argo CD connection repo: Repository URL (e.g., "https://github.com/org/repo")
Returns: JSON string with repository details including connection status and type.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| repo | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It states that the tool is a read operation ('Get') and returns a JSON string, but it does not mention side effects, performance characteristics, or any required permissions. For a simple get tool, this is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using only a few lines (title, args, returns). Every sentence serves a purpose, and there is no redundant information. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to detail return values. It provides an adequate summary of what is returned (repository details including connection status and type). Minor omissions like error handling or prerequisites are negligible for a straightforward get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant value by explaining each parameter: 'connection_name: Name of the Argo CD connection' and 'repo: Repository URL (e.g., ...)'. This provides context and examples beyond the bare input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get detailed information about a specific repository.' This is a specific verb+resource combination that distinguishes it from sibling tools like list_repositories (which lists repositories) and get_cluster (which retrieves cluster details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use when you need details on a specific repository. However, there is no explicit guidance on when to use this tool versus alternatives like list_repositories, nor any prerequisites or conditions. The description lacks explicit when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_settingsC
Get Argo CD settings.
Args: connection_name: Name of the Argo CD connection
Returns: JSON string with Argo CD settings.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only mentions returning a JSON string, without disclosing side effects, permissions, or read-only nature. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise but lacks sufficient detail. It structures the information with Args and Returns, but could be improved with more substance without adding verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has an output schema, the description only says 'JSON string with Argo CD settings,' which is vague. It does not clarify what settings are included or the format, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description adds no extra meaning for 'connection_name' beyond its name and type. It does not explain how to obtain the value or any constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'Argo CD settings', which is distinct from siblings like get_application or get_cluster. However, it lacks specificity about what settings are included, but does not restate the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus others, nor when not to use it. The description only states the action and parameters, omitting any contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Get Argo CD version information.
Args: connection_name: Name of the Argo CD connection to check
Returns: JSON string with version information.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral transparency. The description indicates a read operation without side effects, which is clear. However, it could mention that no destructive actions occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, front-loading the purpose. No unnecessary information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple info-retrieval tool with one parameter and an output schema, the description is complete. It explains what the tool does and the parameter's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It provides a clear meaning for the single parameter connection_name: 'Name of the Argo CD connection to check,' which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get Argo CD version information,' which uses a specific verb and resource. It distinguishes itself from sibling tools like get_application or get_cluster by focusing on version data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. Usage is implied by the tool's name and purpose, but no when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_applicationsA
List all applications in Argo CD.
Args: connection_name: Name of the Argo CD connection projects: Optional list of project names to filter by selector: Optional label selector to filter applications (e.g., "app=myapp")
Returns: JSON string with list of applications.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes | ||
| projects | No | ||
| selector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It implies a read-only operation with optional filters, but does not disclose pagination, rate limits, or default behavior (e.g., returns all apps if no filters). Adequate but minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with clear Args and Returns sections, no wasted sentences. Front-loaded with the main purpose, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and parameter semantics well. Mentions return type (JSON string). With output schema existing, it need not detail return fields. Could implicitly assume default behavior (listing all apps) but that is inferred from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds essential meaning: connection_name is the connection name, projects is a filter list, selector is a label selector with example. This fully compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all applications in Argo CD' with a specific verb and resource, distinguishing it from sibling tools like get_application (single app) or list_clusters (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description lists optional filters but does not explicitly state when to use this tool vs alternatives like get_application. It implies use for listing multiple apps but lacks explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clustersA
List all clusters registered in Argo CD.
Args: connection_name: Name of the Argo CD connection
Returns: JSON string with list of clusters including server URLs and connection status.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It specifies the tool is a read operation that returns a JSON list with server URLs and connection status, providing adequate transparency for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two purposeful sentences followed by Args/Returns. No wasted words, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema, the description covers the necessary aspects: action, input, and return format. It is complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter connection_name is described as 'Name of the Argo CD connection,' which is basic. Schema coverage is 0%, so the description compensates partially but lacks depth about what constitutes a valid connection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all clusters registered in Argo CD' using a specific verb-resource pair. It effectively distinguishes from sibling tools like get_cluster (singular) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives. While the purpose is clear, no conditions, prerequisites, or exclusions are mentioned, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connectionsA
List all available Argo CD connections with their configuration details.
Returns: JSON string with connection details including name, url, and description.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral burden, but it only mentions listing connections and returning JSON with name, url, and description. It does not disclose potential traits like authentication requirements, rate limits, or side effects. For a simple list operation this is adequate but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the purpose and then explain the return format. Every word earns its place; no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description is complete. It covers what the tool does and what it returns, leaving no obvious gaps for a list-connections tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so baseline is 4 per instructions. The description does not add parameter-level detail, but none is needed given the tool's no-parameter design.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all available Argo CD connections with configuration details, using the specific verb 'List' and resource 'Argo CD connections'. It distinguishes from sibling tools which focus on other resources (applications, clusters, projects, repositories).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives is provided. However, since siblings are for different resource types, usage is implied. A explicit 'when-not' or alternative mention would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
List all projects in Argo CD.
Projects define the scope of resources an application can deploy.
Args: connection_name: Name of the Argo CD connection
Returns: JSON string with list of projects.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'List all projects' without mentioning read-only nature, error handling, or authentication details beyond the connection_name parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (2 sentences plus Args/Returns), well-structured, and front-loaded with the primary purpose. Every sentence serves a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions the return type (JSON string with list of projects) and the single required parameter. However, it lacks information on pagination, error conditions, or project filtering, making it adequate but not thorough for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds minimal meaning by stating 'connection_name: Name of the ArgoCD connection.' This provides basic context but no additional constraints or format hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all projects in Argo CD,' specifying the action (list) and resource (projects) with scope (all). This distinguishes it from sibling tools like get_project (single project) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It mentions that 'Projects define the scope of resources an application can deploy' but offers no explicit usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repositoriesB
List all repositories configured in Argo CD.
Args: connection_name: Name of the Argo CD connection
Returns: JSON string with list of repositories including URLs and connection status.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavior by stating the return format (JSON string with URLs and connection status). However, it omits side effects, permissions, or constraints, so only minimal transparency is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences and a clear Args/Returns structure. It is front-loaded and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one undocumented parameter and an existing output schema, the description lacks detail on parameter semantics and fails to address errors or authentication. Completeness is poor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no meaningful detail beyond the parameter name 'connection_name'. It does not explain acceptable values, source, or default behavior, failing to compensate for missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all repositories configured in Argo CD', providing a specific verb and resource. It distinguishes from siblings like 'get_repository' and other list functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.2.0- First observed
get_application - First observed
get_application_logs - First observed
get_application_managed_resources - First observed
get_application_resource_tree - First observed
get_cluster - First observed
get_project - First observed
get_repository - First observed
get_settings - First observed
get_version - First observed
list_applications - First observed
list_clusters - First observed
list_connections - First observed
list_projects - First observed
list_repositories
TDQS
Scored across 14 tools
Each tool targets a distinct Argo CD resource or aspect (e.g., application details, logs, managed resources). There is no overlap in purpose, and descriptions clearly differentiate them.
All tools follow the verb_noun pattern with snake_case (e.g., get_application, list_applications). Naming is consistent and predictable throughout.
With 14 tools covering the main read-only operations for Argo CD (applications, clusters, projects, repositories, settings), the count is well-scoped and each tool earns its place.
The tool set provides comprehensive read-only coverage: listing and getting details for all major resources, plus application logs, managed resources, and resource tree. No obvious gaps for a read-only interface.
Maintenance
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP (Model Context Protocol) server that integrates with the ArgoCD API, enabling AI assistants and large language models to manage ArgoCD applications and resources through natural language interactions.1012MIT

argocd-mcpofficial
AlicenseCqualityCmaintenanceAn implementation of Model Context Protocol (MCP) server for Argo CD.1417,824 npm570Apache 2.0- AlicenseAqualityBmaintenanceRead-only MCP server for safe Kubernetes inspection, diagnosis, and debugging. Supports Kubernetes core, Helm, Argo Workflows, and Argo CD.2259 npm5MIT
- AlicenseBqualityBmaintenanceMCP server for Argo CD that provides multi-environment profiles, SSO or API key authentication, application search with cache, and REST API tools from the bundled OpenAPI catalog.264 npmMIT