appstore-mcp
Provides read-only visibility into Argo CD applications, including sync status, health, last operation, unhealthy resources, and deployment history.
Uses GitHub for org-restricted OAuth authentication and provides tools to query open pull requests in component repositories.
Provides tools to inspect GitHub Actions workflow runs for component CI and Kubernetes image bump workflows.
Checks the health of the Keycloak realm dhbw as part of public health endpoint monitoring.
Provides read-only Kubernetes cluster inspection across allowed namespaces, including pods, deployments, events, logs, nodes, ingress hosts, certificates, and CloudNativePG cluster status.
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., "@appstore-mcpIs staging healthy after the latest push?"
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.
appstore-mcp
A remote, read-only MCP server (streamable HTTP) for the DHBW AppStore T3 team. It lets Claude Code agents judge an automatic staging rollout: Argo CD state, pods and rollout digests, events and logs (bounded, redacted), CloudNativePG, public health endpoints, GitHub Actions runs and open pull requests, certificates and nodes. It replaces the retired Hermes agent.
Read-only by construction. The server only issues
GETs, its ServiceAccount hasget/list/watchand no access tosecretsorpods/exec, and every tool is annotatedreadOnlyHint.Student apps stay private.
dep-*namespaces expose counts and status only: no pod names, logs or events.Secrets never leave. A redaction filter scrubs tokens, passwords, URLs with credentials and keys from all output and from our own logs.
Auth: OAuth 2.1 (authorization code + PKCE, dynamic client registration) with GitHub as identity provider, restricted to members of the org
DHBW-AppStore-T3; plus static tokens for CI and agents.
Connect (everyone on the team)
# staging cluster namespace (the one agents check after a push to dev)
claude mcp add --transport http appstore https://appstore-mcp-staging.t3-k8s.s242437-at-student-dhbw-mannheim-de.users.dhbw.site/mcp
# then, in Claude Code: /mcp -> appstore -> Authenticate (GitHub login opens in the browser)Prod instance (same tools, same data, separate deployment): replace the host by
appstore-mcp.t3-k8s.s242437-at-student-dhbw-mannheim-de.users.dhbw.site. Both can read both
environments; pass env: "prod" to the tools.
To share the server with the whole repo checkout, commit a .mcp.json:
{ "mcpServers": { "appstore": { "type": "http",
"url": "https://appstore-mcp-staging.t3-k8s.s242437-at-student-dhbw-mannheim-de.users.dhbw.site/mcp" } } }CI and unattended agents (static token)
A teammate with kubectl access to the cluster mints a token (see docs/OPERATIONS.md),
then:
claude mcp add --transport http appstore https://<host>/mcp --header "Authorization: Bearer $APPSTORE_MCP_TOKEN"Only the SHA-256 of a token is stored in the cluster; revoke it by deleting its line from the Secret.
Related MCP server: k8s-telemetry-mcp
Tools
Tool | What it answers |
| Start here. Folds everything below into |
| digest committed in |
| sync, health, last operation, unhealthy resources, deployment history |
| readiness, restarts, container states, CrashLoop/ImagePull problems, rollout completeness |
| Warning events; last <= 300 log lines (64 KiB), redacted |
| counts and status of the student namespaces |
| CloudNativePG phase, instances, primary, backups |
| public frontend, |
| ingress hosts and cert-manager certificates (ready, expiry) |
| node conditions, capacity, allocatable, current usage |
| component CI, |
Readable namespaces: appstore-staging, appstore-prod, argocd, cert-manager, cnpg-system,
kube-system (and dep-* as aggregates). Configurable with READABLE_NAMESPACES.
For the harness
docs/harness-skill/verify-staging/SKILL.md is the skill
the agents use after a push (copy it to .claude/skills/verify-staging/ of a repo), and
docs/CLAUDE-snippet.md a short block for CLAUDE.md.
Operating it
docs/OPERATIONS.md: the one-time human steps (GitHub OAuth app, kubectl create secret),
token minting and rotation. Deployed by Argo CD from deployment (k8s/charts/appstore-mcp).
Develop
python3.12 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
ruff check . && pytestTests mock the Kubernetes API, GitHub and the public endpoints with httpx.MockTransport (the fakes assert
that no request is anything but a GET and nothing touches /secrets) and drive the whole OAuth flow
through the real ASGI app.
Configuration is by environment variables, see src/appstore_mcp/config.py. The chart in deployment
sets them; the secret ones come from the Secret appstore-mcp.
Design notes
Tokens are stateless where possible: access tokens are Fernet-sealed (1 h); refresh tokens (30 d, rotated), authorization codes (5 min, single use), pending logins and registered clients live in a small SQLite file on the volume
/data. Losing it only forces a fresh login.The GitHub user token is used once for the org-membership check (
read:org) and then dropped.The Kubernetes client is a small
httpxwrapper (GET only) instead of the officialkubernetespackage: smaller image, trivially mockable, and incapable of writing.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
A read-only verified record of agent-operable GTM tools: search, fetch, compare, track changes.
Read-only, deterministic AI triage and readiness tools implementing Sophon's published rubrics.
Run verified read-only code tools: quant diagnostics + agent-ops preflight, no source exposure.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides a read-only interface to Kubernetes clusters, enabling LLMs to list pods, get pod status and logs, fetch deployment manifests, and perform pod health analysis with resource trend tracking.-
- AlicenseAqualityBmaintenanceGives AI assistants read-only access to a Kubernetes cluster's observability stack — Loki, Prometheus, Tempo, the Kubernetes API — plus AWS telemetry from CloudTrail, Config, ECR, and RDS. 23 tools for querying logs, metrics, traces, Kubernetes events, deployments, and audit history in plain language.23Apache 2.0
- AlicenseNot gradedqualityBmaintenanceGives an LLM agent a fixed, typed set of on-call tools over a self-hosted GitOps Kubernetes platform, reading metrics, logs, alerts and deploy history from Prometheus, Loki, Alertmanager and GitHub without any cluster write access. Rollbacks and config changes are proposed as one-shot ids that require explicit human confirmation before becoming pull requests against the Git repository, with both steps recorded in an audit log.MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only production observability through a small set of tools for health, job status, latest data, approved logs, and deployment metadata, enabling AI planning and review without a production write path.MIT