Skip to main content
Glama

Kadmia MCP Server

A Model Context Protocol (MCP) server for integrating the Kadmia JavaScript learning platform with AI assistants like Claude Code, Cursor, and others.

Prerequisites

Related MCP server: Learning Coach MCP Server

Quick Start

1. Get your Kadmia credentials

Log into Kadmia to get your Firebase UID and API Key.

2. Configure Claude Code

Open your terminal and edit the Claude config file:

# macOS/Linux
nano ~/.claude.json

# Windows
notepad %USERPROFILE%\.claude.json

Add the following (replace the placeholder values with your credentials from Kadmia):

{
  "mcpServers": {
    "kadmia": {
      "command": "npx",
      "args": ["-y", "kadmia-mcp"],
      "env": {
        "KADMIA_LEARNER_ID": "your-firebase-uid-here",
        "KADMIA_API_KEY": "your-api-key-here"
      }
    }
  }
}

Alternative: Use the /mcp command inside Claude Code to add the server interactively.

3. Configure Cursor (Alternative)

  1. Open Cursor and go to Settings (gear icon) → MCP

  2. Click Add Server and enter:

    • Command: npx -y kadmia-mcp

    • Environment variables:

      • KADMIA_LEARNER_ID=your-firebase-uid-here

      • KADMIA_API_KEY=your-api-key-here

4. Verify It Works

Restart Claude Code or Cursor, then ask:

"Use the Kadmia explain_concept tool to explain closures"

If configured correctly, you'll get a personalized explanation based on your Kadmia skill level.

Environment Variables

Variable

Required

Description

KADMIA_LEARNER_ID

Yes

Your Firebase UID from thekadmia.com/kadmia-mcp

KADMIA_API_KEY

Yes

Your API key from thekadmia.com/kadmia-mcp

KADMIA_API_BASE

No

API base URL (default: Kadmia staging API)

Available Tools

get_learner_progress

Get your learning progress from Kadmia (requires authentication).

Parameter

Type

Required

Description

No input required

Output: Progress data including subjects, recent activity, and learning insights.


explain_concept

Explain a JavaScript concept at your skill level. Returns an explanation tailored to your Kadmia progress with examples, common mistakes, and links to relevant lessons.

Parameter

Type

Required

Description

concept

string

Yes

The JavaScript concept to explain (e.g., "closures", "event loop", "prototype chain")

code_context

string

No

Code snippet to make the explanation more relevant

depth

"brief" | "standard" | "deep"

No

How detailed the explanation should be (default: "standard")

How It Works

The Kadmia MCP server creates a bridge between your coding environment and the Kadmia learning app:

┌─────────────────┐                    ┌─────────────────┐
│   IDE/Coding    │                    │   Kadmia App    │
│                 │   ──── MCP ────►   │                 │
│  • Explanations │                    │  • Skill levels │
│  • Progress     │   ◄──── MCP ────   │  • Mastery data │
└─────────────────┘                    └─────────────────┘
  • Explanations are tailored to your skill level from Kadmia

  • Progress data personalizes your learning experience

Future Tools

  • bookmark_concept — Save concepts to study later in the Kadmia app

  • generate_challenge — Get coding challenges calibrated to your skill level

  • js_comedy_hour — Hear the JS joke of the day

Development

# Run with auto-reload
npm run dev

# Build TypeScript
npm run build

# Run the server
npm start

Available Tools

4 tools
bookmark_conceptA

Save a JavaScript concept to study later in the Kadmia app. Use this when you encounter something you want to review or don't fully understand yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesThe JavaScript concept to bookmark (e.g., 'closures', 'async/await', 'this binding')
code_snippetNoOptional code snippet for context
noteNoOptional note about why you're bookmarking this
sourceNoWhether user bookmarked manually or from a suggestion

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only says 'Save' implying mutation but does not disclose any consequences, limits, or persistence details. For a mutation tool, this is insufficient.

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 with no wasted words. It efficiently conveys the tool's purpose and usage context.

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?

While the description covers purpose and usage, it lacks behavioral transparency (e.g., what happens to existing bookmarks) and does not address the return value (no output schema). For a simple tool, it is adequate but not complete.

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 100% (all 4 parameters have descriptions), so the baseline is 3. The tool description does not add any extra meaning beyond what the schema already provides.

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 'Save a JavaScript concept to study later' with a specific verb and resource, and it distinguishes from sibling tools (explain_concept, generate_challenge, get_learner_progress) which serve different purposes.

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 a clear usage context: 'when you encounter something you want to review or don't fully understand yet.' Although it does not explicitly mention when not to use or name alternatives, the context is sufficient given the sibling tools.

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

explain_conceptA

Explain a concept at your skill level. Returns an explanation tailored to your Kadmia progress with examples and links to relevant lessons.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesThe concept to explain (e.g., 'closures', 'the Civil War', 'photosynthesis', 'supply and demand')
contextNoOptional context to make the explanation more relevant (e.g., code snippet, topic area, or what you're studying)
depthNoHow detailed the explanation should be (default: standard)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that the explanation is tailored, returns examples and links, and uses Kadmia progress. No mention of side effects, permissions, or state changes, but for a read-only explanation tool this is adequate.

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 concise sentences, no redundancy. Front-loaded with purpose, directly followed by outcome.

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?

No output schema, but description explains return (explanation with examples and links). Sufficient for a simple tool, though could detail how depth and context parameters influence output.

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 covers all parameters 100%. Description adds value by explaining personalization based on skill level (not in schema) and hinting at context usage. Depth enum is clear in schema, so no extra needed.

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 purpose: to explain a concept tailored to the user's skill level and progress in Kadmia, with examples and links. It distinguishes from siblings (bookmark, challenge, progress check).

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 (when needing an explanation), but lacks explicit guidance on when not to use or alternatives. It does not mention that it is for learning contexts or that it personalizes based on progress, leaving some ambiguity.

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

generate_challengeB

Generate a JavaScript coding challenge based on a topic or your current code. Challenges are calibrated to your skill level from Kadmia.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe JavaScript topic for the challenge (e.g., 'array methods', 'promises', 'closures')
code_contextNoOptional code you're working on to make the challenge relevant
difficultyNoDifficulty relative to your current level (default: match_level)

TDQS

B3.4/5.0
Behavior2/5

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

Lacks annotations; description gives minimal behavioral info (skill calibration), but omits details like whether it modifies state, requires auth, or what side effects exist.

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?

Single, front-loaded sentence with no redundancy; every word contributes value.

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

Completeness2/5

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

No output schema; description fails to specify the format or structure of the generated challenge, leaving the agent uncertain about return value.

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 100%; description doesn't add meaning beyond schema, which already describes all three parameters adequately.

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 generates a JavaScript coding challenge based on topic or code, and distinguishes it from sibling tools like bookmark_concept or explain_concept.

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?

Implied usage for generating practice challenges, but no explicit guidance on when to use vs alternatives or prerequisites.

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

get_learner_progressA

Get your learning progress from Kadmia (requires authentication via KADMIA_LEARNER_ID env var)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 full burden. It discloses the authentication requirement but does not mention whether the operation is read-only, any side effects, rate limits, or the format of returned data. This is adequate but leaves some behavioral details unspecified.

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 sentence that efficiently conveys the purpose and a key requirement (authentication). No unnecessary information, front-loaded with the primary action.

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 no inputs and no output schema, the description covers the essential: what it does and the authentication prerequisite. It could be more complete by hinting at what the progress data includes, but for a straightforward retrieval tool, it is sufficient.

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 no parameters, so schema coverage is 100%. The description correctly does not add parameter information because none exist. Baseline score of 4 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?

Description clearly states the purpose: 'Get your learning progress from Kadmia'. This is a specific verb ('Get') and resource ('learning progress'), and it distinguishes from sibling tools (bookmark, explain, generate) by focusing on retrieval of progress.

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 explicitly states the authentication requirement via KADMIA_LEARNER_ID env var, providing clear context for when to use this tool. It does not explicitly state when not to use it or offer alternatives, but the sibling tools cover other actions, so usage is well-understood.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.1
    • First observedbookmark_concept
    • First observedexplain_concept
    • First observedgenerate_challenge
    • First observedget_learner_progress

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct operation: saving concepts, explaining concepts, generating challenges, and retrieving progress. No functional overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (bookmark_concept, explain_concept, generate_challenge, get_learner_progress).

Tool Count5/5

4 tools is well-scoped for a learning support server, covering key actions without being too minimal or excessive.

Completeness4/5

Covers core learning workflows (saving, explaining, challenging, tracking), but missing a way to list saved concepts or review past challenges, a minor gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

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/Rakeshpatel87p/kadmia-mcp'

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