Kadmia MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kadmia MCP ServerExplain closures"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Node.js 18+ - Download here
Kadmia account - Sign up free
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.jsonAdd 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)
Open Cursor and go to Settings (gear icon) → MCP
Click Add Server and enter:
Command:
npx -y kadmia-mcpEnvironment variables:
KADMIA_LEARNER_ID=your-firebase-uid-hereKADMIA_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 |
| Yes | Your Firebase UID from thekadmia.com/kadmia-mcp |
| Yes | Your API key from thekadmia.com/kadmia-mcp |
| 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 |
| string | Yes | The JavaScript concept to explain (e.g., "closures", "event loop", "prototype chain") |
| string | No | Code snippet to make the explanation more relevant |
|
| 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 appgenerate_challenge— Get coding challenges calibrated to your skill leveljs_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 startAvailable Tools
4 toolsbookmark_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.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | The JavaScript concept to bookmark (e.g., 'closures', 'async/await', 'this binding') | |
| code_snippet | No | Optional code snippet for context | |
| note | No | Optional note about why you're bookmarking this | |
| source | No | Whether user bookmarked manually or from a suggestion |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | The concept to explain (e.g., 'closures', 'the Civil War', 'photosynthesis', 'supply and demand') | |
| context | No | Optional context to make the explanation more relevant (e.g., code snippet, topic area, or what you're studying) | |
| depth | No | How detailed the explanation should be (default: standard) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The JavaScript topic for the challenge (e.g., 'array methods', 'promises', 'closures') | |
| code_context | No | Optional code you're working on to make the challenge relevant | |
| difficulty | No | Difficulty relative to your current level (default: match_level) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.1- First observed
bookmark_concept - First observed
explain_concept - First observed
generate_challenge - First observed
get_learner_progress
TDQS
Each tool targets a distinct operation: saving concepts, explaining concepts, generating challenges, and retrieving progress. No functional overlap.
All tool names follow a consistent verb_noun pattern (bookmark_concept, explain_concept, generate_challenge, get_learner_progress).
4 tools is well-scoped for a learning support server, covering key actions without being too minimal or excessive.
Covers core learning workflows (saving, explaining, challenging, tracking), but missing a way to list saved concepts or review past challenges, a minor gap.
Maintenance
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
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
- OolkinOAuthcom.oolkin
AI colleagues that keep your standards, your project and their reasoning between sessions
Create, edit, translate, and export SCORM eLearning modules from a connected AI assistant.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI coding assistants to debug and analyze JavaScript code in web pages through breakpoint debugging, function hooking, network analysis, and runtime inspection of scripts including minified code.241,2912,677Apache 2.0
- FlicenseNot gradedqualityDmaintenanceTracks learning progress and generates personalized daily learning insights using RAG to fetch relevant content from blogs, RSS feeds, and Reddit based on your current topics and learning goals.-
- AlicenseCqualityCmaintenanceAn interactive learning assistant that helps developers understand AI-generated code changes through quizzes and blocking learning sessions. It tracks and searches debugging experiences using RAG to ensure users build long-term technical understanding rather than just copy-pasting solutions.48MIT
- FlicenseNot gradedqualityDmaintenanceConnects Canvas LMS to AI assistants, enabling users to list courses and retrieve assignment details through natural language. It features secure multi-institution support with encrypted token storage and a simplified setup process for students.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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