Skip to main content
Glama

kodekloud-mcp

CI License: MIT Python 3.10+ MCP Standard

A production-quality, open-source Model Context Protocol (MCP) server that connects your personal KodeKloud learning account to AI assistants—including Claude Desktop, Claude Code, Cursor, and ChatGPT.

Review course completion, inspect syllabus outlines, view active hands-on labs, track certification exam readiness (CKA, CKAD, CKS, Terraform), and generate personalized weekly study schedules directly from inside your AI chat client.


CAUTION

DISCLAIMER & TERMS OF SERVICE NOTICE

kodekloud-mcp is an independent, unofficial community project. It is not affiliated, associated, authorized, endorsed by, or in any way officially connected with KodeKloud, its subsidiaries, or its affiliates. The official KodeKloud website is available at https://kodekloud.com.

This tool is intended solely for personal educational use by authenticated KodeKloud account holders querying their own learning statistics. Users must strictly abide by KodeKloud's Terms of Service. Do not use this tool to scrape unauthorized content, share subscription access, or bypass platform safeguards.


Table of Contents

  1. Features

  2. Architecture & Security Principles

  3. MCP Tools & Prompts Reference

  4. Authentication & Session Credential Guide

  5. Installation & Quick Start

  6. Client Configuration

  7. Deployment Guide

  8. Troubleshooting & Logs

  9. Security Best Practices


Related MCP server: argocd-mcp

Features

  • Read-Only by Default: Safeguards your account against unintentional state changes.

  • Offline Mock Mode (KODEKLOUD_USE_MOCK=true): Ships enabled by default so you can test the entire server, inspect tool structures, and run tests immediately without real credentials.

  • Dual Transport Protocols:

    • stdio: Lightning-fast, private local communication for Claude Desktop, Claude Code, and Cursor.

    • sse / streamable-http: Modern streaming HTTP transport for remote agents, webhooks, and ChatGPT connectors.

  • Credential Auto-Detection: Accepts either a raw browser Cookie string or a Bearer JWT token. Formats appropriate headers automatically.

  • Strict Credential Redaction: Automatically scrubs authentication cookies, bearer tokens, and JWTs from all logs and error messages.

  • Resilient Network Handling:

    • Automatic exponential backoff with jitter on HTTP 429 (Rate Limiting), respecting upstream Retry-After headers.

    • Graceful degradation on schema drift (API structural variations never crash the server).

    • In-memory async-safe TTL caching (default 60s) to avoid spamming KodeKloud servers.

    • User-friendly error messaging for expired sessions (HTTP 401/403).


Architecture & Security Principles

flowchart LR
    subgraph AI Clients
        CD[Claude Desktop]
        CC[Claude Code]
        CR[Cursor]
        CG[ChatGPT]
    end

    subgraph kodekloud-mcp Server
        direction TB
        CLI[CLI Entrypoint\nkodekloud-mcp]
        FMCP[FastMCP Engine\nstdio / sse]
        CACHE[(In-Memory\nTTL Cache)]
        CONF[Config & Secret Redactor\nBearer vs Cookie Detect]
        MOCK{Mock Mode?}
        MD[Mock Data Generator\nRealistic CKA / Labs]
        CLIENT[KodeKloudClient\nBackoff & Drift Tolerance]
    end

    subgraph Upstream
        KK[(KodeKloud Platform\nlearn.kodekloud.com)]
    end

    CD -->|stdio JSON-RPC| FMCP
    CC -->|stdio JSON-RPC| FMCP
    CR -->|stdio JSON-RPC| FMCP
    CG -->|HTTP / SSE /mcp| FMCP

    FMCP --> CONF
    FMCP --> CACHE
    CONF --> MOCK
    MOCK -- Yes --> MD
    MOCK -- No --> CLIENT
    CLIENT -->|HTTPS + Session Credential| KK
  1. Stdio Protocol Sanctity: MCP clients communicate with the server over stdout. All operational logs, warnings, and error traces are strictly written to stderr.

  2. Zero Persistent Storage of Secrets: The server does not write session credentials to disk, databases, or cache files. Credentials live exclusively in runtime process memory.

  3. Endpoint Isolation: Upstream endpoints and response parsers are isolated in src/kodekloud_mcp/kodekloud_client.py with clearly designated TODO markers.


MCP Tools & Prompts Reference

Available Tools

KodeKloud Learn Tools (learn.kodekloud.com)

Tool Name

Type

Description

Key Arguments

get_course_progress

Read

Fetch percentage completed, labs completed vs total, and last activity timestamp.

course_name (optional string)

list_enrolled_courses

Read

List enrolled courses, categories, difficulty, and status (In Progress, Completed, Not Started).

None

get_course_outline

Read

Retrieve syllabus modules, lectures, lab exercises, and the immediate next suggested lesson.

course_name (required string)

get_active_labs

Read

Check currently running, paused, or stopped interactive labs with remaining time.

None

get_certifications

Read

View active certification paths (CKA, CKAD, Terraform) and exam readiness percentages.

None

get_learning_summary

Read

Compact study digest: current & longest daily streak, total hours, and next suggested lesson.

None

start_lab

Write

Launch/provision an interactive hands-on lab environment. (Disabled by default)

lab_id (required string)

stop_lab

Write

Terminate an active lab session and clean up resources. (Disabled by default)

lab_id (required string)

KodeKloud Engineer Tools (engineer.kodekloud.com / Project Nautilus)

Tool Name

Type

Description

Key Arguments

get_engineer_task

Read

Fetch active assigned ticket, scenario requirements, target servers (e.g. stapp01), credentials, points, and deadline.

None

get_engineer_profile

Read

Retrieve current engineering role (DevOps, SysAdmin), total XP/points, global leaderboard rank, success rate, and promotion eligibility.

None

list_engineer_history

Read

Inspect past completed, failed, or expired tasks, points earned, and completion timestamps.

limit (default: 10), status (optional filter)

NOTE

Write tools (start_lab, stop_lab) are registered only when KODEKLOUD_ENABLE_WRITE_TOOLS=true is set. In read-only mode, they do not appear in the tool catalog.

Available Prompts

  • study_plan(goal: str): Directs the LLM to inspect your current progress (get_learning_summary), enrolled courses (get_course_progress), remaining syllabus outline (get_course_outline), and exam readiness (get_certifications) to generate a customized, week-by-week study roadmap with hands-on lab milestones.

  • troubleshoot_engineer_task(): Instructs the LLM to act as a Senior DevOps Tech Lead & Mentor for your active KodeKloud Engineer ticket. Inspects the task requirements and target servers via get_engineer_task() and provides step-by-step diagnostic workflows without spoiling the solution.


Authentication & Session Credential Guide

KodeKloud relies on authenticated browser sessions. You provide your credential via the KODEKLOUD_SESSION_COOKIE environment variable. The server auto-detects:

  • Tokens starting with Bearer or matching a JWT (eyJ...) are sent via Authorization: Bearer <token>.

  • Any other string is sent as a Cookie header.

Extracting Credentials in Google Chrome

  1. Open Google Chrome and log into your account at learn.kodekloud.com.

  2. Press F12 (or Cmd+Option+I on macOS) to open DevTools.

  3. Select the Network tab, check the Fetch/XHR filter, and refresh the page (Ctrl+R / Cmd+R).

  4. Click on any authenticated request (e.g. me, progress, or courses).

  5. In the Headers pane on the right:

    • Scroll down to Request Headers.

    • Look for authorization: If present, copy the full value starting with Bearer eyJ...

    • Look for cookie: If no Authorization header is present, copy the entire string after cookie: (e.g., _session_id=...; remember_token=...).

Chrome DevTools Extraction

Extracting Credentials in Firefox

  1. Open Firefox and log into learn.kodekloud.com.

  2. Press F12 (or Cmd+Option+I on macOS) to open the Web Developer Tools.

  3. Go to the Storage tab -> expand Cookies -> select https://learn.kodekloud.com.

  4. Copy the values of your session authentication cookies, or inspect the Network tab headers as described above.

Discovering Endpoints & Sanitizing HAR Traces

Because KodeKloud does not have an official public REST documentation, community members can discover active endpoints:

  1. In the browser DevTools Network tab, perform an action (e.g. view a course or check active labs).

  2. Right-click the request list and select Save all as HAR with content.

  3. CRITICAL SANITIZATION STEP: Open the .har file in a text editor. Use find-and-replace to sanitize:

    • Search for Bearer and replace the token with Bearer REDACTED_TOKEN.

    • Search for cookie and replace session values with REDACTED_COOKIE.

    • Search for your email address, real name, and IP address.

  4. Compare your sanitized payload with the models in src/kodekloud_mcp/models.py, and submit an issue or PR!


Installation & Quick Start

uv runs the MCP server directly in an isolated temporary virtual environment without requiring a manual install:

# Test in offline Mock Mode (default)
uvx kodekloud-mcp

# Connect with live session cookie (Linux / macOS)
export KODEKLOUD_SESSION_COOKIE="your_cookie_or_jwt_here"
export KODEKLOUD_USE_MOCK=false
uvx kodekloud-mcp

# Connect with live session cookie (Windows PowerShell)
$env:KODEKLOUD_SESSION_COOKIE="your_cookie_or_jwt_here"
$env:KODEKLOUD_USE_MOCK="false"
uvx kodekloud-mcp

2. Install via pip

# Install package from repository
pip install git+https://github.com/Maghav/kodekloud-mcp.git

# Verify installation
kodekloud-mcp --help

3. Run with Docker & Docker Compose

The included Dockerfile builds a non-root, minimal runtime image.

Using Docker CLI:

# Build the container
docker build -t kodekloud-mcp .

# Run locally in stdio mode (interactive)
docker run -i --rm \
  -e KODEKLOUD_USE_MOCK=true \
  kodekloud-mcp --transport stdio

# Run as an HTTP/SSE server on port 8000
docker run -d --rm \
  -p 8000:8000 \
  -e KODEKLOUD_USE_MOCK=true \
  -e KODEKLOUD_SESSION_COOKIE="your_cookie" \
  kodekloud-mcp --transport sse --host 0.0.0.0 --port 8000

Using Docker Compose:

# Start background SSE server
docker compose up -d

# Check server logs
docker compose logs -f

Client Configuration

Claude Desktop

To connect kodekloud-mcp to Claude Desktop, edit your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "kodekloud": {
      "command": "uvx",
      "args": ["kodekloud-mcp"],
      "env": {
        "KODEKLOUD_SESSION_COOKIE": "your_cookie_or_jwt_here",
        "KODEKLOUD_USE_MOCK": "false",
        "KODEKLOUD_ENABLE_WRITE_TOOLS": "false",
        "KODEKLOUD_CACHE_TTL_SECONDS": "60"
      }
    }
  }
}
TIP

If you do not haveuv installed, replace "command": "uvx" with "command": "python" and pass "-m", "kodekloud_mcp.cli" in "args".

Claude Code CLI

Add kodekloud-mcp directly to your Claude Code workspace:

claude mcp add kodekloud -- uvx kodekloud-mcp

Or with live credentials:

claude mcp add kodekloud -e KODEKLOUD_SESSION_COOKIE="your_cookie" -e KODEKLOUD_USE_MOCK="false" -- uvx kodekloud-mcp

Cursor IDE

In Cursor:

  1. Open Settings -> Features -> MCP Servers.

  2. Click Add New MCP Server.

  3. Configure:

    • Name: KodeKloud

    • Type: command

    • Command: uvx kodekloud-mcp

    • Set environment variables KODEKLOUD_SESSION_COOKIE and KODEKLOUD_USE_MOCK in your project .env or system environment.

ChatGPT (Remote SSE Connector)

For remote LLMs and ChatGPT Custom GPT Actions that require an HTTPS/SSE streaming URL:

  1. Launch kodekloud-mcp in SSE mode behind a TLS reverse proxy (e.g., Caddy or Cloudflare Tunnel):

    kodekloud-mcp --transport sse --host 0.0.0.0 --port 8000
  2. Endpoint URL for client connection: https://mcp.yourdomain.com/sse (or https://mcp.yourdomain.com/mcp for streamable HTTP).


Deployment Guide

Personal Deployment

For individual learners:

  • Recommended: Run locally over stdio. It runs as a private subprocess on your computer, requires zero open ports, and keeps your session credentials strictly local.

  • Remote Personal Host: If you prefer accessing your server from mobile or ChatGPT, deploy the Docker container to a personal VPS, Fly.io, or Google Cloud Run behind Caddy/Nginx enforcing HTTPS and basic auth.

Architecture for the KodeKloud Community

IMPORTANT

Zero Multi-Tenancy Guarantee: kodekloud-mcp is intentionally designed as an open-source package where every learner runs their own instance with their own credential.

DO NOT build or host a shared multi-tenant service storing other users' session cookies. Storing third-party session tokens introduces severe liability, risk of credential harvesting, and violates user trust.

If an organization or community team ever provides a hosted proxy service:

  1. In-Memory Per-Request Authentication Only: Never write cookies to disk or databases. Transmit credentials per-request via client headers.

  2. Mandatory HTTPS: Reject unencrypted plain HTTP connections.

  3. Per-User Rate Limiting: Apply token-bucket rate limiting per IP/user to prevent upstream blocks.

  4. Privacy & Data Minimization: Never record student learning histories or PII in centralized logging aggregators.

Open Source Publishing Checklist

When releasing or maintaining community distributions:

  • Semantic Versioning: Adhere strictly to MAJOR.MINOR.PATCH in pyproject.toml and CHANGELOG.md.

  • Git Release Tags: Create signed git tags (git tag -s v0.1.0 -m "Release v0.1.0").

  • PyPI Trusted Publishing: Use GitHub Actions OIDC Trusted Publishing (no static API tokens stored in repository secrets).

  • Community Templates: Include .github/ISSUE_TEMPLATE/ for bug reports and feature requests.

  • Security Disclosures: Maintain SECURITY.md with a clear vulnerability reporting route.

  • Contribution Guide: Maintain CONTRIBUTING.md detailing test suites and sanitization procedures.


Troubleshooting & Logs

1. Viewing Server Logs

Because stdout is reserved for JSON-RPC messages in stdio mode, all operational messages are emitted to stderr.

  • In Claude Desktop: View logs at:

    • macOS: tail -f ~/Library/Logs/Claude/mcp-server-kodekloud.log

    • Windows: Get-Content "$env:APPDATA\Claude\logs\mcp-server-kodekloud.log" -Wait

  • In CLI / Shell: When running directly, logs appear in your console terminal in real-time.

2. Session Expired (HTTP 401 / 403)

  • Symptom: KodeKloud session expired or rejected (HTTP 401/403). Your browser session credential is no longer valid.

  • Cause: KodeKloud sessions expire periodically or when you log out from another browser tab.

  • Solution: Open Chrome/Firefox, log in to KodeKloud, copy the fresh cookie or Bearer token, and update KODEKLOUD_SESSION_COOKIE.

3. Rate Limit Exceeded (HTTP 429)

  • Symptom: KodeKloud API rate limit exceeded (HTTP 429). The request was automatically retried 3 times...

  • Solution: The server retries automatically with exponential backoff. Increase KODEKLOUD_CACHE_TTL_SECONDS=120 to cache responses longer and reduce request frequency.

4. Claude Desktop Does Not Detect the Server

  • Solution: Check that uv or python is in your system PATH. Restart Claude Desktop completely (Cmd+Q on macOS, or right-click tray icon and exit on Windows).


Security Best Practices

  1. Treat Your Cookie as a Password: Anyone with your session cookie can access your KodeKloud account. Never paste it in public forums, GitHub issues, or chat screenshots.

  2. Instant Invalidation: If you suspect your cookie was exposed, simply log out of KodeKloud in your browser. This immediately terminates the server session.

  3. Never Commit .env Files: The .gitignore file is pre-configured to ignore all .env files. Verify with git status before committing.

  4. Principle of Least Privilege: Keep KODEKLOUD_ENABLE_WRITE_TOOLS=false unless you specifically require lab automation.


License

This project is licensed under the MIT License. See LICENSE for full details.

Available Tools

9 tools
get_active_labsB

List active interactive hands-on labs with status and remaining lease time.

Inspects currently provisioned or running lab sessions (Running, Paused, Stopped), remaining time before automatic expiration, and access URLs.

Returns: ActiveLabsResponse with active lab session details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesCount of currently active or provisioned labs.
errorNoError message if the operation or upstream request failed.
warningNoDiagnostic warning or configuration guidance message.
active_labsNoList of active lab sessions.

TDQS

B3.4/5.0
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 behavioral burden. It usefully enumerates the states inspected (Running, Paused, Stopped) and mentions automatic expiration, which signals this is a read-only listing. However, it does not state that it is non-mutating, nor does it cover pagination or rate/scope limits, which would matter for an agent deciding how to call it.

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

Conciseness4/5

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

Front-loaded with the purpose sentence, then a compact breakdown of what is inspected, then the return type. It is slightly longer than strictly necessary because the 'Returns' block largely restates what the first two sentences already covered, but it is not wasteful.

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 need not explain return structure in depth, and it correctly keeps return description light. For a zero-parameter read listing, the remaining gap is the absence of usage guidance and any statement of the operation's read-only nature, but coverage is otherwise adequate.

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?

There are zero parameters, so the baseline is 4. The description correctly adds no parameter noise and instead documents return fields, which is appropriate for a parameterless listing tool.

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

Purpose4/5

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

States a specific verb (List) and resource (active interactive hands-on labs) with the returned fields named (status, remaining lease time). It does not reference any sibling tool, but the resource is specific enough that an agent can distinguish it from get_course_progress or list_enrolled_courses.

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 when-to-use or when-not-to-use guidance is given. The description explains what the tool returns but never says under what circumstances an agent should prefer this over other lab/session related calls, or what triggers its use.

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

get_certificationsB

Track active certification paths, mock exams, and exam readiness scores.

Provides exam preparation progress for certifications like CKA, CKAD, CKS, HashiCorp Terraform Associate, and AWS, including mock exam completion rates and target exam dates.

Returns: CertificationsResponse with tracked certifications and readiness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of certification tracks tracked.
errorNoError message if the operation or upstream request failed.
warningNoDiagnostic warning or configuration guidance message.
certificationsNoList of tracked certifications and learning paths.

TDQS

B3.3/5.0
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 of behavioral disclosure. It implies a read operation through 'Returns', but never states read-only status, side effects, authentication needs, or rate limits. For a zero-parameter read tool the risk is low, yet the disclosure remains incomplete.

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

Conciseness3/5

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

The first sentence and second sentence overlap by both conveying that certification preparation progress is provided, and the 'Returns:' block restates information already covered by the output schema. The core purpose is front-loaded, but redundancy keeps it from being tight.

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 read tool with an existing output schema, the description provides sufficient context about what data is retrieved, including certification types and readiness metrics. It omits sibling routing guidance, but the call mechanics are fully covered by the empty schema and 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 takes zero parameters and the input schema is an empty object, so there are no parameter semantics to document. Per the calibration rule for zero-parameter tools, the baseline is 4.

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

Purpose4/5

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

The description opens by naming the specific resource and data domains: active certification paths, mock exams, and exam readiness scores, with concrete examples like CKA and AWS. It does not differentiate from siblings such as get_course_progress or get_learning_summary, but the certification focus is distinct enough to identify the tool.

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?

It does not state when to use this tool versus alternatives like get_course_progress or get_learning_summary, nor does it provide exclusions or prerequisites. The agent must infer usage entirely from the resource name and description content.

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

get_course_outlineA

Retrieve course modules, lessons, and labs with completion status.

Provides a detailed syllabus breakdown showing which lectures and hands-on labs have been completed, and indicates the next suggested lesson to help the learner identify exactly what to study next.

Args: course_name: Title, slug, or ID of the course (e.g. 'CKA', 'Docker').

Returns: CourseOutlineResponse with modules, lessons, and next suggested item.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if the operation or upstream request failed.
modulesNoList of modules with lesson breakdowns.
warningNoDiagnostic warning or configuration guidance message.
course_idYesIdentifier of the course.
course_titleYesTitle of the course.
total_lessonsYesTotal number of lessons across all modules.
total_modulesYesTotal number of modules.
completed_lessonsYesNumber of completed lessons.
next_suggested_lessonNoThe immediate next uncompleted lesson to guide the learner's study plan.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It implies a read-only retrieval and discloses that completion status and a next suggested lesson are included, which is useful context, but says nothing about authentication requirements, whether enrollment is required, caching, or error behavior for an unknown course.

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

Conciseness4/5

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

Front-loaded with the core action in the first sentence, followed by a clarifying sentence and tidy Args/Returns blocks. It is slightly redundant in restating the return type already covered by the output schema, but overall tight.

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 single-parameter read tool with an output schema present, the description covers the required input semantics, the returned artifacts, and the study-planning use case. The main gap is the absence of any differentiation from the closely related sibling tools.

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?

Schema description coverage is 0%, so the description must compensate, and it does: course_name is documented as accepting a title, slug, or ID with concrete examples ('CKA', 'Docker'). That is genuine semantic value the bare 'string' schema does not provide.

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

Purpose4/5

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

States a specific verb and resource ('Retrieve course modules, lessons, and labs with completion status') and names the concrete artifacts returned, so the agent knows this is a syllabus/structure tool. It does not, however, explicitly distinguish itself from the very similar sibling get_course_progress.

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 only implied through the stated motivation ('help the learner identify exactly what to study next'), which does suggest a study-planning context. There is no explicit when-to-use, no exclusion, and no routing to the sibling get_course_progress, which overlaps heavily in purpose.

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

get_course_progressA

Get completion percentage, completed vs total labs, and last activity.

Fetches overall progress metrics across all enrolled courses or filters specifically for a given course name or ID (e.g. 'CKA' or 'Kubernetes').

Args: course_name: Optional course title or slug to filter progress for. If omitted, returns progress for all enrolled courses.

Returns: CourseProgressResponse with completion percentages and lab counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if the operation or upstream request failed.
coursesNoList of course progress records matching the query.
warningNoDiagnostic warning or configuration guidance message.
raw_dataNoRaw upstream payload if schema drift was detected.
total_courses_enrolledYesTotal number of enrolled courses.
average_progress_percentYesOverall completion percentage across all courses.

TDQS

A3.6/5.0
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. The 'Get' framing and the read-only nature of progress metrics imply a safe read, and the description discloses the returned fields, but it says nothing about auth requirements, pagination, or whether missing/unenrolled courses error out.

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

Conciseness4/5

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

Front-loaded with the metric summary, then a compact Args/Returns block. Efficient overall, though the 'Returns' section partly restates what the output schema already covers.

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?

With an output schema present, the return-value explanation is largely redundant but harmless. The description covers the single optional parameter and the scope of the query well enough to call the tool correctly; only edge-case behavior is missing.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that course_name is optional, accepts a title or slug, gives concrete examples ('CKA', 'Kubernetes'), and states the default behavior when omitted. It could still clarify matching semantics (partial vs exact).

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

Purpose4/5

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

States a specific verb and resource ('Get completion percentage, completed vs total labs, and last activity') and names the concrete metrics returned. It is clearly a progress-read tool, but it never explicitly distinguishes itself from close siblings like get_learning_summary or list_enrolled_courses.

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: omit course_name for all courses, pass a name/ID to narrow scope. There is no explicit when-to-use versus siblings such as get_learning_summary, and no exclusions or prerequisites are stated.

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

get_engineer_profileA

Retrieve user profile, career track level, XP, and rank on KodeKloud Engineer.

Returns current engineering role (e.g. 'DevOps Engineer', 'System Administrator'), total points/XP, global leaderboard rank, tasks completed, tasks failed, success rate, and promotion eligibility.

Returns: EngineerProfileResponse with standing and career metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if the operation or upstream request failed.
warningNoDiagnostic warning or configuration guidance message.
usernameYesKodeKloud Engineer username or handle.
next_levelNoNext role in career progression path (e.g. 'Senior DevOps Engineer').
global_rankNoPosition on the global leaderboard.
streak_daysNoConsecutive daily task completion streak.
tasks_failedNoTotal failed or expired tasks.
total_pointsYesTotal cumulative XP/points earned.
current_levelYesCurrent engineering role/level (e.g. 'DevOps Engineer', 'System Administrator').
tasks_completedNoTotal successfully validated tasks.
success_rate_percentNoSuccess rate percentage (0.0 to 100.0).
eligible_for_promotionNoWhether learner meets criteria to advance to the next level.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. 'Retrieve' implies a read-only operation and the text enumerates the data returned, but it says nothing about authentication requirements, whose profile is fetched (self vs arbitrary user), or any rate/permission constraints.

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

Conciseness4/5

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

Front-loaded with the core action and resource, and reasonably short. The trailing 'Returns:' block restates the return fields a second time after already listing them, which is mild redundancy rather than harmful bloat.

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?

With an output schema present, the description need not explain return values, yet it is complete enough for an agent to call a zero-parameter read tool correctly. The main omission is the absence of any usage/routing context relative to its siblings.

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 takes zero parameters, so the schema has no semantics to document and the baseline of 4 applies. There is no parameter ambiguity for the description to resolve.

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

Purpose4/5

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

States a specific verb+resource ('Retrieve user profile, career track level, XP, and rank on KodeKloud Engineer') and scopes the domain to the Engineer track. It does not name any sibling tool, so the boundary versus get_learning_summary or get_course_progress is left to inference, but the purpose itself is unambiguous.

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 when-to-use, prerequisites, or alternatives are given. The narrow scope ('on KodeKloud Engineer', profile/rank/XP metrics) lets an agent infer it is the tool for viewing one's own engineering standing, but there is no routing guidance against sibling metrics tools.

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

get_engineer_taskA

Fetch the current active assigned task/ticket on KodeKloud Engineer.

Retrieves the active ticket scenario (SysAdmin, DevOps, Cloud, Kubernetes), including task description, acceptance criteria, target servers (e.g. stapp01, jump_host), assigned credentials/usernames, points, and remaining deadline hours.

Returns: EngineerTaskResponse with active task details or empty notification.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
taskNoActive task details if present.
errorNoError message if the operation or upstream request failed.
messageNoInformational message if no task is active.
warningNoDiagnostic warning or configuration guidance message.
has_active_taskYesTrue if an active ticket is currently assigned.

TDQS

A3.9/5.0
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 behavioral burden. It usefully discloses scope ('current active' only, with an empty notification when none) and the response contents, but says nothing about auth requirements or whether any state is affected beyond the read framing.

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

Conciseness4/5

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

The core purpose is front-loaded in one sentence, which is good. However, the trailing 'Returns: EngineerTaskResponse with active task details or empty notification' partly duplicates the output schema, so a small amount of space is not fully earned.

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 read tool with an output schema present, the description need not enumerate return fields in detail and is complete enough to call correctly. The only gap is the absence of any usage routing against sibling tools.

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 takes zero parameters, so the baseline of 4 applies; there is no parameter semantics to document or mis-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?

States a specific verb and resource ('Fetch the current active assigned task/ticket on KodeKloud Engineer') and enumerates the content returned (scenario type, acceptance criteria, servers, credentials, points, deadline). It is clearly distinguishable from siblings like get_engineer_profile or list_engineer_history.

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 'current active assigned task', but the description never says when to call this versus alternatives such as list_engineer_history or get_engineer_profile, and gives no prerequisites or exclusions. Adequate but leaves routing to inference.

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

get_learning_summaryA

Get a compact digest of learning streaks, recent activity, and study stats.

Designed specifically for constructing personalized study schedules. Includes current consecutive study streak in days, total hours learned, recent activity history, count of pending labs, and next suggested lesson.

Returns: LearningSummaryResponse compact learner profile digest.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoError message if the operation or upstream request failed.
streakYesCurrent and best study streak metrics.
warningNoDiagnostic warning or configuration guidance message.
learner_nameNoDisplay name of the learner.
recent_activitiesNoList of recent learning actions (up to 5).
pending_labs_countNoNumber of unfinished labs in active in-progress courses.
total_hours_learnedYesTotal cumulative hours spent learning on KodeKloud.
total_completed_labsYesTotal hands-on labs successfully completed.
next_suggested_courseNoRecommended course for the next study session.
next_suggested_lessonNoRecommended next lesson or lab to continue with.

TDQS

A3.8/5.0
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 discloses the payload contents and the fact that it is a digest read, but says nothing about permissions, caching, or rate limits, and the enumerate-then-'Returns' structure partially duplicates the output schema.

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

Conciseness4/5

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

Front-loaded with the core verb and resource, followed by content enumeration and a usage note. The trailing 'Returns:' block restates the enumeration already given in sentence two and duplicates the output schema, which is mild waste.

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 no-arg read tool with an output schema present, the description covers purpose, contents, and intended use adequately; return-value structure is correctly left to the schema. The only shortfall is the absence of any behavioral note (auth, freshness) in lieu of annotations.

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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly avoids inventing parameter detail that does not exist.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('learning summary'), then enumerates the digest contents: streak days, total hours, recent activity, pending labs, next suggested lesson. That enumeration implicitly distinguishes it from siblings like get_course_progress and get_active_labs, though it never names them.

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?

Gives an explicit use case: 'Designed specifically for constructing personalized study schedules.' That tells the agent when to reach for this tool rather than a per-course tool, but offers no when-not condition or named alternative among the eight siblings.

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

list_engineer_historyA

List historical tasks, tickets, and results on KodeKloud Engineer.

Inspects past completed, failed, or expired tasks, tracks, points awarded, and completion timestamps.

Args: limit: Maximum number of historical task records to return (default: 10). status: Optional filter by status: 'Success', 'Failed', or 'Expired'.

Returns: EngineerHistoryResponse with historical task records.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesTotal count of historical tasks returned.
errorNoError message if the operation or upstream request failed.
tasksNoHistorical task records.
warningNoDiagnostic warning or configuration guidance message.

TDQS

A3.6/5.0
Behavior3/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 load. It makes the read-only nature clear via 'List'/'Inspects' and documents the default limit and the status filter, but says nothing about authentication, rate limits, result volume beyond the limit, or ordering of results.

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

Conciseness4/5

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

Front-loaded summary sentence followed by clearly labelled Args and Returns sections; every line carries information. The Returns line is slightly redundant given an output schema exists, but overall it is tight.

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?

With only two optional parameters, an output schema present, and a status enum supplied in prose, an agent has what it needs to invoke the tool correctly. The remaining gap is behavioral context such as ordering and result-window semantics, which is minor here.

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?

Schema description coverage is 0%, so the description is the only source of parameter meaning — and it delivers: limit is defined as the max records with a default of 10, and status enumerates the accepted values 'Success', 'Failed', 'Expired'. That enum list is genuine added value, since the schema itself declares only an untyped anyOf string/null with no allowed values.

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

Purpose4/5

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

The description gives a specific verb+resource: it lists historical tasks, tickets and results on KodeKloud Engineer, and scopes them as past completed/failed/expired tasks. It is clearly distinct in intent from the singular get_engineer_task sibling, though it never names that sibling to reinforce the contrast.

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 'Inspects past completed, failed, or expired tasks, tracks, points awarded, and completion timestamps', which tells the agent this is the historical-record retrieval path. There is no explicit statement of when to prefer this over get_engineer_task or any other sibling, and no exclusions or prerequisites.

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

list_enrolled_coursesA

List all courses the user is currently enrolled in on KodeKloud.

Returns titles, categories (Kubernetes, Cloud, Linux, IaC), difficulty levels, and current enrollment status (In Progress, Completed, Not Started).

Returns: EnrolledCoursesResponse containing the list of enrolled courses.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesTotal count of enrolled courses.
errorNoError message if the operation or upstream request failed.
coursesNoList of enrolled courses.
warningNoDiagnostic warning or configuration guidance message.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; 'List' implies a safe read, and it discloses the shape of what comes back (titles, categories, difficulty, enrollment status). It says nothing about authentication scope, pagination, or ordering, which are the remaining behavioral gaps for a list operation.

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

Conciseness5/5

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

Two short paragraphs, purpose front-loaded, no filler. The field list is compact and readable.

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 return structure need not be spelled out; the description still names the key fields, which is helpful. For a zero-argument read tool it is nearly complete, missing only ordering/pagination expectations.

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 takes zero parameters, so there is no parameter semantics to convey; baseline 4 applies. The description correctly makes no claims about inputs.

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

Purpose4/5

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

States a specific verb+resource ('List all courses the user is currently enrolled in on KodeKloud') and scopes it to the current user's enrollments, which separates it from get_course_outline and get_course_progress in spirit. It never names a sibling explicitly, so differentiation must be inferred.

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?

There is no when-to-use guidance, no exclusions, and no mention of the obvious alternatives (get_course_progress for per-course detail, get_course_outline for a course's structure). The agent must guess when this list is the right starting point.

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. 9 tool updatesv0.1.0
    • First observedget_active_labs
    • First observedget_certifications
    • First observedget_course_outline
    • First observedget_course_progress
    • First observedget_engineer_profile
    • First observedget_engineer_task
    • First observedget_learning_summary
    • First observedlist_engineer_history
    • First observedlist_enrolled_courses

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes: course progress, outline, enrolled courses, active labs, certifications, learning summary, and engineer-specific resources. However, get_course_progress, get_course_outline, and get_learning_summary all touch on course completion and next-lesson guidance, creating mild overlap. Descriptions help differentiate them, so misselection is unlikely but possible.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern using get_ or list_. The convention is predictable throughout, with no mixing of styles or vague verbs. This makes the tool set easy to scan and understand.

Tool Count5/5

Nine tools is well within the ideal range for a focused learning-platform MCP. Each tool covers a distinct area: courses, progress, labs, certifications, summaries, and KodeKloud Engineer tasks. No tool feels redundant or excessive for the scope.

Completeness4/5

The surface covers the main read-only areas learners care about: enrolled courses, progress, outlines, labs, certifications, study summaries, and engineer tasks/profile/history. Minor gaps exist around lab session control (e.g., starting or stopping labs) and task submission actions, but core monitoring and discovery workflows are well supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs like Claude to securely execute Kubernetes CLI tools (kubectl, helm, istioctl, argocd) across multiple clusters through dynamic kubeconfig support, allowing natural language Kubernetes management and operations.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Argo CD applications through natural language, providing tools for cluster, project, application, and resource management via stdio and HTTP transports.
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Connects AI agents to New Relic observability data through the NerdGraph GraphQL API, running locally over stdio with a standard User API key. Enables NRQL queries, entity and alert lookups, log and trace investigation, deployment correlation, and metric comparisons while staying read-only by default.
    14
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents such as Claude Code, Cursor, Codex, and OpenCode to query local token usage, costs, quotas, projects, and models through six strictly read-only tools. All data stays on the local machine, drawn from passively parsed session logs rather than uploaded telemetry.
    MIT