Skip to main content
Glama
frenoid

YuniKorn MCP Server

by frenoid

YuniKorn MCP Server

A Model Context Protocol (MCP) server that interfaces with the Apache YuniKorn Scheduler, allowing AI agents to observe and reason about Kubernetes batch workload resource management, queue hierarchies, and application states.

Screenshots

Inspecting Yunikorn tools using MCP inspector get_partition_queues in MCP inspector

Querying the Yunikorn scheduler via MCP using Opencode Querying Yunikorn scheduler information in Opencode

Related MCP server: Kubectl MCP Tool

Features

  • 7 MCP Tools: Query partitions, queues, applications, nodes, user usage, and scheduler health

  • 2 MCP Resources: Static data access for partitions list and node utilization

  • Async HTTP: Non-blocking API calls using httpx

  • Proper Error Mapping: YuniKorn HTTP errors mapped to standard MCP error responses

  • Resource Awareness: Handles YuniKorn's raw bytes and millicore values

  • CORS Enabled: Allows connections from any origin for browser-based MCP Inspector

  • Streamable HTTP: Default transport with stdio fallback for IDE integration

Installation

uv pip install -r requirements.txt

If you are using a virtual environment, make sure it is activated first:

source .venv/bin/activate
uv pip install -r requirements.txt

Usage

Running the Server

The default transport is Streamable HTTP on port 8000:

Run locally

uv run python -m main

Run with Docker

docker run -p 8000:8000 -e YUNIKORN_BASE_URL="http://<REPLACE_ME>/ws/v1" docker.io/frenoid/yunikorn-mcp-server:latest

Command line options

Option

Description

Default

--transport

Transport protocol (stdio, streamable-http)

streamable-http

--host

Host to bind (HTTP transport only)

0.0.0.0

--port

Port to listen on (HTTP transport only)

8000

--log-level

Logging level

INFO

Examples:

# Streamable HTTP on custom port
uv run python -m main --transport streamable-http --host 127.0.0.1 --port 8080

# Stdio mode for Claude Code / IDE integration
uv run python -m main --transport stdio

Environment Variables

Variable

Description

Default

YUNIKORN_BASE_URL

Base URL of the YuniKorn REST API

http://localhost:9089/ws/v1/

TLS_INSECURE

Disable HTTPS certificate verification (true/false)

false

# Connect to a remote YuniKorn instance
YUNIKORN_BASE_URL=http://yunikorn.example.com:9089/ws/v1/ uv run python -m main

# Connect to an HTTPS endpoint with a self-signed certificate
YUNIKORN_BASE_URL=https://yunikorn.example.com:9089/ws/v1/ TLS_INSECURE=true uv run python -m main

Connecting with MCP Inspector

The Streamable HTTP endpoint is exposed at the /mcp path:

http://localhost:8000/mcp

Testing

Run the test suite against a live YuniKorn instance:

YUNIKORN_BASE_URL=http://your-yunikorn-host:9089/ws/v1/ uv run python test_server.py

To run a quick compliance check:

YUNIKORN_BASE_URL=http://your-yunikorn-host:9089/ws/v1/ uv run python test_updated_server.py

Data Format Notes

  • Memory: Represented in raw bytes (64-bit signed integers).

  • CPU (vcore): Represented in millicores (thousandths of a core, i.e. 1000m = 1 core).

  • Other resources: No specific unit assigned.

  • Active applications: The virtual "active" state represents New, Accepted, Running, Completing, and Failing statuses.

  • allocationID vs uuid: uuid is deprecated. allocationID contains the same base value as uuid with a hyphen-counter suffix (e.g., -0, -1).

  • allocationDelay: The difference between allocationTime and requestTime for an allocation.

API Conformance

This MCP server conforms to the Apache YuniKorn Scheduler REST API (v1.8.0). Each tool maps directly to a documented endpoint.

Tool

YuniKorn Endpoint

get_partitions

GET /ws/v1/partitions

get_partition_queues

GET /ws/v1/partition/{partitionName}/queues

get_applications_by_state

GET /ws/v1/partition/{partitionName}/applications/{state}?status={status}

inspect_application

GET /ws/v1/partition/{partitionName}/application/{appId}

get_node_details

GET /ws/v1/partition/{partitionName}/nodes or /node/{nodeId}

get_user_usage

GET /ws/v1/partition/{partitionName}/usage/users or /usage/user/{userName}

check_scheduler_health

GET /ws/v1/scheduler/healthcheck

Resources:

Resource

YuniKorn Endpoint

yunikorn://partitions/list

GET /ws/v1/partitions

yunikorn://nodes/utilization

GET /ws/v1/scheduler/node-utilizations

Error Mapping

YuniKorn HTTP Code

MCP Error

400 Bad Request

INVALID_REQUEST

404 Not Found

INVALID_REQUEST

500 Internal Server Error

INTERNAL_ERROR

Available Tools

7 tools
check_scheduler_healthA

Returns the health status of the scheduler, checking for critical logs and negative resource values. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses that the tool checks for critical logs and negative resource values, and importantly warns that resource values are raw integers (bytes/millicores) and should be converted. This adds meaningful behavioral context beyond a simple 'get health' statement.

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 sentences, front-loaded with the main purpose, and the second sentence provides a critical unit-conversion warning. 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.

Completeness5/5

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

Given the tool has no parameters and the output schema exists to describe return values, the description is sufficient: it states the purpose, what is checked, and a key formatting caveat. This is complete for a simple health-check tool.

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. There is no parameter information needed, and the description appropriately adds no irrelevant parameter details.

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 returns scheduler health status and specifies what it checks (critical logs and negative resource values). This distinguishes it from sibling tools that focus on partitions, applications, and nodes.

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?

No guidance is provided on when to use this tool versus alternatives. The note about raw integers is about interpreting output, not about tool selection, so it does not address usage context.

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

get_applications_by_stateA

Retrieves applications filtered by their current lifecycle state (active, rejected, or completed). Active is a virtual state representing New, Accepted, Running, Completing, or Failing apps. When state is 'active', you can optionally set status to new, accepted, running, completing, or failing (case-insensitive) to narrow results. Defaults to running if not specified. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes
statusNo
partitionNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the virtual state mapping (active includes New, Accepted, Running, Completing, Failing), the default status (running), and importantly warns that resource values are raw integers (bytes/millicores) and need conversion. This is valuable beyond the schema, though it omits details like pagination or error cases.

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 three sentences, front-loaded with the core purpose, and every sentence adds essential information (purpose, virtual state/status nuance, and unit conversion warning). No wasted words.

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 tool has an output schema, so return value structure need not be in the description. The description covers the core lifecycle state filtering, the status sub-filter, and the critical unit conversion, making it mostly complete. Minor gaps include not explaining partitionName and not addressing potential large result sets or ordering.

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?

Schema description coverage is 0%, so the description must compensate. It clearly explains the 'state' values, the 'status' options for active state, and the default status, but it does not explain 'partitionName' at all, which is a required parameter. This is a significant gap for a parameter that must be provided.

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 opens with 'Retrieves applications filtered by their current lifecycle state', which is a specific verb+resource+scope. It clearly distinguishes this tool from sibling tools (get_partitions, inspect_application, etc.) by focusing on applications by state, and enumerates the exact states (active, rejected, completed) and the virtual state composition.

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 provides clear context on when to use the tool (to retrieve applications by lifecycle state) and explains the optional status narrowing for the active state, but it does not explicitly mention alternatives or when not to use it. It gives context but no exclusions.

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

get_node_detailsA

Fetches all nodes or a specific node managed by YuniKorn, including capacity and utilization percentages. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdNo
partitionNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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 adds valuable context about raw integer units (bytes, millicores) and the need to convert them, which is beyond what the schema provides. However, it omits error cases, pagination, and permission requirements.

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 sentences: a clear purpose statement plus an important note about value formatting. No filler, front-loaded, and every sentence adds value.

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?

The tool has a simple parameter set and an output schema, so the description doesn't need to detail return structure. However, it lacks explicit usage guidance and leaves partitionName semantics unclear. The raw integer note adds useful context, making the description adequate but not comprehensive.

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?

Schema description coverage is 0%, but the description partially explains that nodeId is optional ('all nodes or a specific node') and clarifies output unit semantics. It does not explicitly explain partitionName, which is required and left undocumented by the schema.

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 fetches nodes (all or specific) managed by YuniKorn, including capacity and utilization. This distinguishes it from sibling tools like get_partitions or get_applications_by_state, 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 when to use the tool (when node-level resource details are needed) but does not explicitly compare with alternatives or state exclusions. No direct guidance is provided about when other tools would be preferred.

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

get_partition_queuesA

Fetches the full queue hierarchy for a specific partition. Includes maxResource, guaranteedResource, and pendingResource for each queue. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
partitionNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It adds key behavioral insight by stating that resource values are raw integers (bytes for memory, millicores for CPU) and that they must be converted to human-readable formats before presentation. It also discloses exactly which resource fields are included.

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 concise and front-loaded: two sentences pack the purpose, included fields, and an important conversion caveat with no redundancy 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?

Given the tool's simplicity (one required parameter) and the presence of an output schema, the description sufficiently covers what the tool does, key return fields, and a critical usage caveat. Minor aspects like exact hierarchy format are left unspecified, but overall it is complete enough for a reliable agent to use.

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 schema provides no descriptions (0% coverage), so the description must compensate. It identifies that the partitionName parameter refers to 'a specific partition,' but it does not elaborate on the parameter's format, possible values, or how to derive them. The contribution is minimal but non-zero.

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: 'Fetches the full queue hierarchy for a specific partition.' This specifies the resource (queue hierarchy) and the scope (partition), distinguishing it from sibling tools like get_partitions or get_applications_by_state.

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 effectively conveys when to use this tool: when needing queue hierarchy and resource details for a specific partition. It does not explicitly mention alternatives or exclusions, but the context is strong enough to guide selection.

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

get_partitionsA

Retrieves general information and statistics for all partitions in the cluster. Useful for seeing total cluster capacity, used capacity, and node counts. IMPORTANT: resource values (memory, cpu) are returned as raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses a key behavioral trait: resource values are returned as raw integers (bytes/millicores) and must be converted to human-readable formats. This is valuable beyond the basic read operation implied by 'Retrieves.' It does not mention permissions or side effects, but for a read-only tool the provided detail is substantial.

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 sentences, front-loaded with the purpose and followed by the critical unit-conversion note. Every sentence earns its place with no redundant wording.

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

Completeness5/5

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

Given the tool has no parameters, an output schema exists, and sibling tools give surrounding context, the description is sufficiently complete. It covers what the tool returns, its scope, and an essential caveat about raw units, so the agent has enough information to use it correctly.

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 input schema has zero parameters, which yields a baseline of 4. The description adds no parameter-specific information because none exist, but it does clarify that the tool covers 'all partitions' and the type of data retrieved, which still aids understanding.

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 states a specific verb ('Retrieves') and resource ('partitions in the cluster'), and clarifies the scope ('all partitions'). It also lists the kind of information (total cluster capacity, used capacity, node counts), which distinguishes it from sibling tools like get_partition_queues that focus on queues rather than partitions.

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 gives clear context for when to use the tool: 'Useful for seeing total cluster capacity, used capacity, and node counts.' It implies the tool is for cluster-level statistics but does not explicitly mention alternatives or when not to use it, so it just misses the top score.

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

get_user_usageA

Retrieves resource usage and quota information for all users or a specific user. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNameNo
partitionNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It prominently discloses that resource values are raw integers (bytes, millicores) and instructs conversion, which is critical for correct interpretation of results. This goes beyond simple read-only intent, though it omits details like error conditions or permission requirements.

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?

Two sentences, each earns its place. The first states the tool's purpose, and the second delivers a high-value conversion warning. No filler or redundant repetition of schema details.

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 output schema covers return structure, and the description supplies the missing unit semantics. For a simple read-only usage tool, this is sufficient context; the only gap is the lack of explicit usage guidance, already scored separately.

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?

Schema coverage is 0%, so description must compensate. It clarifies that the optional userName parameter can target a specific user or omit to get all users, which maps directly to the schema's default-null userName. However, it does not explain partitionName beyond the schema title, leaving partial ambiguity.

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?

Description uses a specific verb ('Retrieves') and resource ('resource usage and quota information') with clear scope ('all users or a specific user'). This clearly distinguishes it from sibling tools focused on partitions, queues, applications, nodes, and health.

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?

No guidance on when to use this tool versus siblings, no explicit exclusions, and no prerequisites are stated. The description implies a query tool but does not help the agent decide between it and related tools.

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

inspect_applicationA

Provides detailed metadata for a single application, including its allocation log and resource requests. Both uuid (deprecated) and allocationID fields may appear in allocations; allocationID contains the same base value as uuid plus a hyphen-counter suffix (e.g., -0, -1). Use allocationID to identify specific task allocations. IMPORTANT: resource values are raw integers (bytes for memory, millicores for CPU). Convert these to human-readable formats (e.g., GiB or Cores) before presenting to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYes
partitionNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It does well by explaining the uuid/allocationID relationship and the raw integer representation of resources, which are non-obvious and critical for correct interpretation. It does not mention side effects or auth, but this is clearly a read-only introspection tool.

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 compact and well-structured: it leads with the core purpose, then provides the essential field-variant note, and ends with a clear conversion warning. Every sentence adds value, and there is no redundant or filler content.

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?

An output schema exists, so the description does not need to enumerate return fields. It covers the most crucial contextual quirks (allocation identifiers and unit conversions) that would trip up an agent. The only minor gap is not giving a hint about the partitionName parameter's role, but the name itself is fairly meaningful.

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

Parameters2/5

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

The schema provides no parameter descriptions (0% coverage), and the tool description does not elaborate on `appId` or `partitionName`. While the names are self-explanatory, there is no guidance on how they relate to the returned metadata or any format expectations (e.g., is appId the UUID?). The description does not bridge the schema coverage gap.

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's function: 'Provides detailed metadata for a single application, including its allocation log and resource requests.' This is a specific verb-resource pair and distinguishes from sibling tools that list or summarize many applications (e.g., get_applications_by_state).

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?

Usage is implied by the phrase 'for a single application'—it is the tool to call when deep metadata on one application is needed. However, there is no explicit when-to-use vs alternatives, no exclusions, and no mention of 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedcheck_scheduler_health
    • First observedget_applications_by_state
    • First observedget_node_details
    • First observedget_partition_queues
    • First observedget_partitions
    • First observedget_user_usage
    • First observedinspect_application

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct domain entity: partitions, partition queues, applications, individual application details, nodes, user usage, and scheduler health. There is no overlap in purpose, making selection unambiguous.

Naming Consistency5/5

All tool names follow a clear verb_noun pattern (get_partitions, get_partition_queues, get_applications_by_state, inspect_application, get_node_details, get_user_usage, check_scheduler_health). The pattern is consistent and predictable.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose of monitoring and querying a YuniKorn cluster. Each tool covers a necessary aspect without unnecessary bloat.

Completeness4/5

The tool set covers the core query surfaces: partitions, queues, applications, nodes, user usage, and health. Minor gaps exist (e.g., no scheduler configuration or historical metrics retrieval), but the primary workflows are fully supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with Kubernetes/Minikube clusters through natural language, allowing AI agents like Codename Goose to manage Kubernetes resources via the Model Context Protocol.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with Kubernetes clusters through natural language, supporting core Kubernetes operations, monitoring, security, and diagnostics.
    108 npm
    956
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An Model Context Protocol server that lets language models directly manage and visualize Kubernetes clusters through safe, high-level operational tools.
    1
    -