Skip to main content
Glama
kamroy

platform-mcp-server

by kamroy

Platform MCP Server

Serveur MCP (Model Context Protocol) read-only qui expose l'état de multi-tenant-platform et golden-path-portal à un agent IA (Claude Desktop, ou tout autre client MCP).

➡️ Voir le design doc pour le contexte, et ADR-0001 pour la décision de rester read-only en v1 (pas d'action possible sur le cluster depuis l'agent).

Tools exposés

Tool

Rôle

list_tenants

Liste les namespaces tenants, avec leur niveau PodSecurity

get_tenant_pods

Statut des pods d'un tenant (running, redémarrages)

get_tenant_slo

Disponibilité, error budget, latence p95 d'un tenant

list_argocd_applications

Statut sync/santé de toutes les Applications ArgoCD

get_chaos_schedules

Expériences de chaos actives d'un tenant

list_catalog_services

Services enregistrés sur le golden-path-portal

Related MCP server: Kubernetes Tools MCP Server

Prérequis

  • kubectl configuré et pointant vers ton cluster k3s (le serveur hérite de ton contexte local, pas de credentials séparés)

  • Un port-forward actif vers Prometheus pour get_tenant_slo :

    kubectl port-forward svc/monitoring-kube-prometheus-prometheus -n platform 9091:9090
  • Node.js 18+ (pour fetch natif)

Installation

npm install

Utilisation avec Claude Desktop

Édite ta config Claude Desktop (claude_desktop_config.json — sur macOS : ~/Library/Application Support/Claude/claude_desktop_config.json, sur Windows/WSL : vérifie le chemin équivalent dans les paramètres de l'app) :

{
  "mcpServers": {
    "platform": {
      "command": "node",
      "args": ["/chemin/absolu/vers/platform-mcp-server/server.js"],
      "env": {
        "PROM_URL": "http://localhost:9091",
        "GOLDEN_PATH_CATALOG": "/chemin/absolu/vers/golden-path-portal/catalog.json"
      }
    }
  }
}

Redémarre Claude Desktop. Tu peux ensuite demander directement :

"Quel est l'error budget de team-a en ce moment ?" "Liste tous les services enregistrés sur la plateforme." "Est-ce que toutes les Applications ArgoCD sont saines ?"

Claude appelle les tools correspondants et répond à partir des données réelles de ton cluster.

Test manuel sans client MCP

node --check server.js   # valide la syntaxe
node server.js            # démarre le serveur (attend un client sur stdin)

Pourquoi read-only (résumé)

Exposer des actions (suspendre un chaos, scaler un déploiement) à un agent IA est une décision de sécurité à part entière — confirmation requise, scope de permissions, audit trail. La v1 se concentre sur la valeur immédiate (obtenir des réponses) sans ouvrir cette surface de risque. Détail complet dans l'ADR-0001.

Tool DescriptionsA

Average 3.9/5 across 6 of 6 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct resource (tenants, pods, SLO, ArgoCD applications, chaos schedules, catalog services) with clear descriptions. Even the tenant-specific tools (pods, SLO, chaos schedules) are differentiated by the resource they return, so there is minimal ambiguity.

Naming Consistency4/5

The naming generally follows a list_/get_ prefix with resource names, but the pattern is not perfectly consistent: list_ is used for global resources while get_ is used for tenant-specific ones, and get_chaos_schedules omits 'tenant' from its name. Despite this minor deviation, the verb_noun structure is recognizable.

Tool Count5/5

Six tools is a well-scoped number for a read-only platform observability server. The set covers the main platform resources without unnecessary bloat, and each tool serves a distinct purpose within the apparent domain.

Completeness3/5

The tool set covers listing and basic tenant-scoped queries but lacks any single-resource detail views (e.g., a specific ArgoCD app or catalog service) and any management/mutation operations. This limits the surface to read-only inspection, which may be intentional but leaves notable gaps for a 'platform' server.

Available Tools

6 tools
get_chaos_schedulesA

Liste les Schedule Chaos Mesh actives d'un tenant (recurrence, type d'experience).

ParametersJSON Schema
NameRequiredDescriptionDefault
tenantYesNom du namespace tenant, ex: team-a
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It does mention that only 'active' schedules are listed, which is a useful filter, but it gives no information about output shape, pagination, ordering, permissions, or side effects. The verb 'Liste' implies a read operation, but beyond that, the behavior is under-specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with the action and resource front-loaded. It contains no filler, repetition, or unnecessary detail, making it concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one required parameter, no nested objects, no output schema), the description is reasonably complete: it states what the tool does and the schema documents the tenant parameter. It could benefit from noting the response format, but for a simple list endpoint, the essential context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'tenant' is fully described in the schema with an example ('Nom du namespace tenant, ex: team-a'), giving 100% schema description coverage. The tool description adds no additional parameter-level semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Liste' and clearly names the resource: 'Schedule Chaos Mesh actives d'un tenant'. It also adds the parenthetical detail '(recurrence, type d'experience)' to clarify what kind of information is returned. This distinguishes it from sibling tools like get_tenant_pods or list_argocd_applications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving active Chaos Mesh schedules for a given tenant, which is contextually clear. However, it provides no explicit guidance about when to choose this tool over alternatives or any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tenant_podsA

Liste les pods d'un tenant donne avec leur statut et leur nombre de redemarrages.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenantYesNom du namespace tenant, ex: team-a
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It indicates a read-only listing (pods with status and restart count) but does not disclose any potential side effects, permissions, or output format. It adds some context but is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and resource. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one fully documented parameter, the description provides sufficient information about what is returned (status and restart count). It does not mention output structure, but no output schema exists, so the statement is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'tenant' is fully described in the schema with an example. The description does not add meaning beyond the schema, but schema coverage is 100%, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists pods of a given tenant with their status and restart count. This is a specific verb (lists) and resource (pods), which differentiates it from siblings like list_tenants or get_tenant_slo.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is used to retrieve pod information for a specific tenant, which is clear from the wording 'd'un tenant donne'. However, it does not explicitly mention alternatives or when not to use it, so it lacks explicit exclusions but provides clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tenant_sloA

Recupere la disponibilite (SLI), l'error budget restant et la latence p95 d'un tenant, via les recording rules Prometheus de multi-tenant-platform. Necessite un port-forward actif vers Prometheus.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenantYesNom du namespace tenant, ex: team-a
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden. It reveals the dependency on a port-forward and the data source (Prometheus recording rules), which is helpful, but it doesn't mention potential failure modes, required permissions, or whether the operation is purely read-only. Still, the read-only nature is strongly implied by 'Récupère'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the action and outputs, and includes the essential prerequisite. Every word adds value, with no unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description clearly states what data will be returned (availability, error budget, p95 latency) and the necessary setup, which is sufficient for a simple retrieval tool with only one parameter and no output schema. It doesn't detail return formatting, but that is reasonable for this level of complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'tenant' is well described in the schema (namespace name, example team-a), and schema coverage is 100%. The description does not add additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Récupère' and clearly identifies the resource (tenant SLO data) and the exact metrics retrieved (availability, error budget, p95 latency). This distinguishes it from sibling tools that target tenants, pods, or Argo CD applications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete prerequisite (active port-forward to Prometheus), which gives operational guidance, but it does not explicitly mention when to use this tool versus alternatives or any exclusion cases. Usage context is implied rather than fully stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_argocd_applicationsA

Liste les Applications ArgoCD avec leur statut de synchronisation et de sante.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the core behavior (returns a list) and the content of the response (sync and health status). It does not explicitly confirm read-only behavior or mention pagination, but for a list operation this is largely implicit and acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action and output details without any unnecessary words or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool, the description is sufficiently complete: it names the resource and the included fields. With no output schema, the description partially compensates by mentioning sync and health status. It is adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline score of 4 applies. The description adds no parameter semantics, which is appropriate since there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists ArgoCD applications ('Liste les Applications ArgoCD') and specifies the included data ('statut de synchronisation et de sante'). This specific verb+resource combination distinguishes it from sibling tools like list_tenants or get_chaos_schedules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The name and description imply it is for retrieving ArgoCD application lists, but there is no mention of preconditions, exclusions, or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_catalog_servicesA

Liste les services enregistres dans le catalogue du golden-path-portal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of disclosing behavior. The term 'Liste' implies a read-only operation, but the description does not mention output format, pagination, or other behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the essential purpose without unnecessary words. It earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless listing tool, the description is adequate but minimal. It does not describe the return structure or any filtering capabilities, which would be useful given the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema description coverage is effectively 100% since the schema has no properties. With no parameters, the description does not need to add parameter-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly uses the verb 'Liste' and specifies the resource 'services enregistrés dans le catalogue du golden-path-portal', making the tool's purpose explicit. This distinguishes it from sibling tools like list_tenants and list_argocd_applications, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor does it mention exclusions or prerequisites. It simply states what the tool does without contextualizing its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tenantsA

Liste les namespaces tenants de multi-tenant-platform, avec leur niveau de PodSecurity applique.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses the main behavior (listing tenant namespaces and their PodSecurity levels) and implicitly indicates a read-only operation. However, it omits details like authentication, scope, or potential errors, though for a simple list these are minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, resource, and a key output attribute. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description is largely sufficient. It covers the key output aspect (PodSecurity level) and the target platform. It could mention scope (e.g., global vs current context) but is not critically incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds meaningful context about what the tool returns (namespaces with PodSecurity level), which is valuable since the schema is empty and provides no semantic cues.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and the resource (tenant namespaces of multi-tenant-platform), with additional detail about including PodSecurity level. This distinguishes it from sibling tools like get_tenant_pods or list_argocd_applications, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a clear use case (listing tenant namespaces and their PodSecurity levels) but provides no explicit when-to-use vs alternatives, exclusions, or comparison with siblings. It is sufficient to infer usage but lacks direct guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

F
license - not found
A
quality
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kamroy/platform-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server