pipelines-mcp
It is a read-only MCP server for inspecting pipeline jobs, their pods, configs, and logs on the dev EKS cluster and log store.
List and filter pipeline jobs by status, request ID, or limit, and fetch one job by request ID + step index + replica.
List pods for a given job and fetch individual pods by name.
Get full redacted YAML configs for a job or pod.
Read worker or service logs for a request, with cursor pagination and optional full output.
Cluster tools may return an AWS SSO login URL when authentication is needed.
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., "@pipelines-mcpshow me the latest pipeline jobs"
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.
pipelines-mcp
Read-only MCP server for pipeline jobs, pods, configs, and logs.
It talks to the dev EKS cluster (pipelines-prd namespace) and the log store. Region us-east-2. SSO profile reveliolabs is only for EKS.
Run
Needs Python 3.13 and uv. Cluster tools need AWS SSO for the reveliolabs profile.
uv sync
uv run pipelines-mcpThe process starts without talking to AWS. Cluster tools log you in if needed. A helper on 127.0.0.1:18201 gets the login; retry. If none, they return a URL. Over SSH: RemoteForward 18201 127.0.0.1:18201.
Related MCP server: Claude Ops Investigator
Use in OpenCode
Add this to ~/.config/opencode/opencode.json, or to an opencode.json in a project. Use the real absolute path to this repo.
{
"mcp": {
"pipelines": {
"type": "local",
"command": [
"uv",
"run",
"--directory",
"/absolute/path/to/pipelines-mcp",
"pipelines-mcp"
],
"enabled": true
}
}
}uv must be on PATH. Restart OpenCode after saving.
If the user gives a GitHub or Jenkins run, read that CI log first for the request_id UUID (not the run id), then read pipeline logs. If a cluster tool says AWS login started, retry the same request. Do not ask the user to open a URL unless the tool returned one.
Dev
uv sync --group dev
uv run pytest
uv run ruff check src tests
uv run basedpyrightAvailable Tools
8 toolsget_pipeline_jobB
Get one job by request_id, step_index, and replica.
| Name | Required | Description | Default |
|---|---|---|---|
| replica | Yes | ||
| request_id | Yes | ||
| step_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| status | Yes | |
| replica | Yes | |
| request_id | Yes | |
| start_time | Yes | |
| step_index | Yes | |
| failed_reason | Yes | |
| completion_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It only restates the retrieval action and the key fields, without mentioning what happens on not-found, whether the operation is read-only, or any limits/errors. This leaves an agent without expectations for side effects or failure modes.
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 entire description is a single 10-word sentence, with no redundant content or filler. It is appropriately concise for a simple lookup tool.
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 getter with an output schema, the description conveys the core operation, but with no annotations and 0% parameter coverage, it leaves gaps around usage context and parameter semantics. The sibling list is large, and without a differentiating note an agent could still be uncertain about selecting this over list_pipeline_jobs or get_pipeline_pod.
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%, and the description merely lists the three parameter names in the 'by' phrase, adding only that they together identify the job. It does not explain the meaning of step_index or replica, their formats, or allowed values, so the agent must infer from names.
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 opens with a specific verb ('Get') and a precise resource ('one job'), and it names the three identifiers that select the job. This distinguishes it from siblings like list_pipeline_jobs (plural) and get_pipeline_job_config/log, which target different resources or collections.
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 the tool is for fetching a single job when all three identifiers are known, but it does not explicitly contrast with list_pipeline_jobs or other siblings, nor state conditions when one should prefer this tool. No exclusion guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_job_configA
Get the full YAML config for one job by request_id, step_index, and replica. Secrets are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| replica | Yes | ||
| request_id | Yes | ||
| step_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| config | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It adds a useful trait ('Secrets are redacted') and the verb 'Get' implies read-only behavior, but it does not cover error conditions, existence guarantees, or any side effects.
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 a single sentence that front-loads the action and resource, names the three identifiers, and adds the important redaction caveat. Every word earns its place with no redundancy.
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 getter with an output schema, the description is nearly complete: it specifies the resource, selection keys, return format (YAML), and the redaction behavior. The only notable gap is explicit alternative-tool guidance, which is already handled in the usage_guidelines dimension.
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 names all three parameters and indicates they identify a single job, but it does not elaborate on their formats, semantics, or relationships beyond what the parameter 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 states a specific action ('Get'), a precise resource ('full YAML config for one job'), and the identifying parameters. This clearly differentiates it from siblings like get_pipeline_job and get_pipeline_pod_config.
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 when to use the tool: when the full YAML config for a specific job replica is needed. However, it does not explicitly mention when not to use it or contrast it with sibling tools such as get_pipeline_job or get_pipeline_pod_config.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_logA
Read pipeline worker logs for a request. Empty until the worker pod is running. Default is the last 100 lines plus a cursor. Pass cursor to get only new lines. full=true still caps size.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| cursor | No | ||
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| lines | Yes | |
| cursor | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It reveals several non-obvious traits: empty until pod running, default 100-line limit, cursor-based incremental retrieval, and that full=true still imposes a size cap. Exact caps and authentication details are absent, but the disclosed behavior is substantially helpful.
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?
Four short sentences, front-loaded with purpose and followed by dense, relevant behavioral details. Every sentence adds value and there is no 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?
An output schema exists, so return-format details are not required from the description. The description covers default behavior, pagination, empty-before-running semantics, and the full flag cap, which is sufficient for correct invocation. It could name the exact cap or route to sibling tools, but nothing critical is missing.
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 explains cursor and full behavior in functional terms, which the bare schema does not. The request_id parameter is only implied by 'for a request,' but that is reasonable given the required schema field is self-explanatory.
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?
Opens with a specific verb and resource: 'Read pipeline worker logs for a request.' This clearly differentiates the tool from siblings like get_pipeline_service_log or get_pipeline_pod by scoping it to worker logs tied to a request.
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?
Provides clear practical context: logs are empty until the worker pod is running, the default is last 100 lines, and passing a cursor retrieves only new lines. It does not explicitly name sibling alternatives or state when not to use this tool, but the usage pattern is clearly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_podA
Get one pod by pod_name.
| Name | Required | Description | Default |
|---|---|---|---|
| pod_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| phase | Yes | |
| job_name | Yes | |
| start_time | Yes | |
| container_statuses | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. 'Get' conveys a read-only single-resource lookup, but the description does not address missing-pod behavior, response shape, or any side effects. This is adequate for a simple getter but leaves edge cases implicit.
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 six words and contains no filler. The action and identifier are front-loaded, and every word contributes to meaning.
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 tool is simple, with one required parameter and an existing output schema, so the description does not need to explain return values. It is slightly terse regarding alternatives and edge cases, but nothing essential for selecting and invoking the tool is missing.
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 add meaning. 'by pod_name' clarifies that pod_name is the selection key, which is useful. However, it does not specify format, matching rules, or how the name is used beyond the obvious.
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 states a specific action (Get), a specific resource (one pod), and the lookup key (pod_name). This clearly distinguishes it from siblings like list_pipeline_pods and get_pipeline_pod_config.
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 phrase 'Get one pod by pod_name' implies the tool is for retrieving a single known pod, but it does not explicitly contrast with list_pipeline_pods or get_pipeline_pod_config. Usage context is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_pod_configA
Get the full YAML config for one pod by pod_name. Secrets are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| pod_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| config | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses that secrets are redacted, which is a meaningful behavioral trait beyond the basic 'get' semantics. The read-only nature is implied by 'Get', and the redaction note adds valuable safety 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?
Two short sentences with no filler. The main action is front-loaded, and the redaction note is a distinct, important behavioral caveat. Every word 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 single-parameter read tool with an output schema, the description covers the essential facts: what is returned, for which pod, and the redaction behavior. It could add a hint that pod_name comes from list_pipeline_pods, but the current description is sufficient for correct invocation in most contexts.
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. 'by pod_name' clarifies that pod_name is the selector for the config lookup, but it adds little detail about the expected format, provenance, or behavior when the pod does not exist. The single parameter is simple, but the description only minimally supplements 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 names a specific verb ('Get'), resource ('full YAML config'), and selection scope ('for one pod by pod_name'). The word 'config' clearly differentiates it from siblings like get_pipeline_pod, and the scope prevents confusion with job-level config 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?
It provides clear context: use this when you need the full YAML configuration for a single pod, identified by pod_name. It does not explicitly name alternatives or exclusion conditions, but the resource and scope are specific enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_service_logB
Read service logs for a request. Same cursor rules as pipeline log.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| cursor | No | ||
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| lines | Yes | |
| cursor | Yes | |
| truncated | 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 behavioral burden. It does state the operation is a read and implies cursor pagination behavior matches pipeline log. However, it omits authorization requirements, log scope, and possible side-effect context, though for a read tool the core mutation risk is addressed.
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?
Two short sentences with no filler. The verb and resource are front-loaded, and the second sentence efficiently reuses the sibling's cursor rules instead of repeating them.
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?
With no annotations and 0% schema description coverage, the description should clarify full, cursor behavior, and the distinction from pipeline log. The output schema covers return shape, so that omission is acceptable, but parameter semantics and tool-selection context remain under-specified.
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 needs to compensate for parameter meaning. It only hints at cursor rules; request_id and full are left to their schema names and defaults. The cursor cross-reference is minor but nonzero.
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 opens with an explicit verb and resource: 'Read service logs for a request'. This is clear, but it does not contrast directly with sibling get_pipeline_log beyond the word 'service', so sibling differentiation is only implicit.
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 only usage guidance is 'Same cursor rules as pipeline log', which addresses pagination mechanics, not when to select this tool over get_pipeline_log or other siblings. There are no explicit when-to-use, when-not-to-use, or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_jobsA
List pipeline jobs, newest first. Optional filters: status (Active, Complete, Failed, Pending, or running), request_id, limit (default 50, max 100). Job names are pipelines-{request_id}-{step_index}-{replica}.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | ||
| request_id | 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 carries the full burden of behavioral disclosure. It adds meaningful context: sort order ('newest first'), filter values, limit bounds, and the job-name naming convention. However, it omits details on empty-result behavior, exact versus partial matching for request_id, and pagination beyond the limit, leaving some behavior unspecified.
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?
Two compact sentences with no filler. The first sentence front-loads the core verb, object, and ordering; the second packs filters, defaults, and limits efficiently. The minor casing inconsistency in the status list does not detract from the concise structure.
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 read-only list tool with optional filters and an output schema, the description covers the essential invocation details: filters, defaults, limits, ordering, and naming. It lacks explicit differentiation from sibling get_* tools and nuanced pagination behavior, but these are minor gaps for an agent to invoke it correctly.
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 does so for all three parameters: limit's default/max, status's allowed values, and request_id's relationship to the job-name format. It does not fully specify request_id matching semantics, but the provided context adds real meaning 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 states a specific verb ('List'), a clear resource ('pipeline jobs'), and a distinguishing ordering trait ('newest first'). It differentiates from singular sibling tools like get_pipeline_job and get_pipeline_job_config by clearly indicating this is the bulk-listing operation.
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 about when to use this tool versus alternatives such as get_pipeline_job or get_pipeline_log. The description only lists optional filters; it does not explain scenarios that favor this tool, nor does it mention any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_podsB
List pods for one job. Empty if they are already gone.
| Name | Required | Description | Default |
|---|---|---|---|
| replica | Yes | ||
| request_id | Yes | ||
| step_index | 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 the full behavioral burden. It adds one meaningful trait: an empty result when pods are gone, which prevents the agent from misreading an empty list as an error. It does not disclose read-only semantics, ordering, or failure modes, but the edge-case note is a valuable disclosure.
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 two short sentences with the core action front-loaded and the behavioral nuance second. Every word contributes information, and there is no filler or redundancy.
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 three required parameters and zero schema descriptions, the tool is underspecified for correct invocation: parameter meanings and constraints are missing. The output schema covers return values, so that part is fine, but the input side is not adequately documented.
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%, and the description does not explain what request_id, step_index, and replica mean. The 'one job' phrase hints that request_id identifies the job, but the agent is left guessing about step_index and replica semantics. This is insufficient for a 3-required-parameter tool.
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 gives a clear verb-resource pair: list pods for one specific job. The 'Empty if they are already gone' line adds useful scoping, and the sibling get_pipeline_pod implies the single-vs-list distinction, though it is not stated explicitly.
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 establishes the context for use: listing pods for a single job. However, it never mentions alternatives like get_pipeline_pod or list_pipeline_jobs, nor does it state when this tool should not be used, so routing among siblings is left to inference.
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.
8 tool updates
v0.1.0- First observed
get_pipeline_job - First observed
get_pipeline_job_config - First observed
get_pipeline_log - First observed
get_pipeline_pod - First observed
get_pipeline_pod_config - First observed
get_pipeline_service_log - First observed
list_pipeline_jobs - First observed
list_pipeline_pods
TDQS
Scored across 8 tools
Each tool has a clearly distinct resource/action pairing: jobs, pods, job configs, pod configs, and two log types. Pipeline worker logs and service logs are the only overlapping pair, but the names and descriptions cleanly separate them.
All tools follow a consistent verb_noun pattern using get_ or list_ prefixes. The resource nouns are uniform and predictable, with job/config/pod/log/service modifiers making the hierarchy easy to infer.
Eight tools is a well-scoped size for a pipeline inspection server. Each tool covers a distinct need without redundancy or surface bloat.
The set provides solid read-only coverage of jobs, pods, configs, and logs, which matches an observability-focused purose. Minor gaps exist, such as no direct way to list services or aggregate request-level status, but agents can work around these using the existing list and get tools.
Maintenance
Related MCP Connectors
Read-only access to a Lumin project's logs, metrics, uptime checks, alerts and infrastructure.
Provides read access to your GKE and Kubernetes resources.
Read-only access to Auralogs production logs: search logs, inspect errors, review AI analyses.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables safe, read-only interaction with Kubernetes clusters, allowing users to list resources and fetch logs without any create/update/delete operations.116Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables read-only Kubernetes incident investigation through MCP tools for listing pods, describing resources, fetching logs, and searching runbooks.1-
- AlicenseNot gradedqualityCmaintenanceEnables read-only inspection of Google Ads accounts through MCP, including account inventory, reporting, metadata, change history, and safe GAQL queries.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables read-only interaction with a Kubernetes cluster, allowing listing of nodes, pods, deployments, and services, as well as fetching pod logs.-