learning-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP transport. Defaults to 8000. | 8000 |
| LEARN_HOME | No | Override the data directory. Defaults to ~/.learn. | ~/.learn |
| LEARNING_MCP_TOKEN | No | Bearer token for HTTP transport. Required when running on a non-loopback interface; the server refuses to start without it in that case. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_topicA | Begin learning a topic, or rejoin one already in progress. Call this first, whenever the user wants to learn or study something. Returns the instruction for the current step and nothing about later ones. Re-calling this for a topic already underway resumes it rather than starting over — mastery is tracked per element, so a second pass would split the record rather than double it. Args: topic: What to learn, e.g. "kafka consumer groups" or "options pricing". |
| submit_stepA | Hand in the current step's work and receive the next instruction. This is the only way to advance. The artifact is checked for shape before the phase moves, so a thin or malformed submission comes back with a reason and the phase is unchanged — fix it and submit again rather than continuing. Args: session_id: From start_topic. artifact: Whatever the current instruction asked you to produce — the research markdown as a string, or the decomposition as a list of {name, explanation, prereqs} objects. |
| next_drillA | Get the next element to drill and the kind of question to ask about it. The choice accounts for prerequisites, review schedule and relative weakness, so take what you're given rather than picking a topic yourself. Returns the element's own explanation for grading against — do not show that to the user unless they get the question wrong. Args: session_id: From start_topic. |
| ask_userA | Put your drill question to the user and return their answer. Prefer this over asking in chat. The answer comes back to you as a tool result, which means it is genuinely the user's, and the question is recorded verbatim next to whatever verdict you give it. If this tool errors because the client can't prompt the user, ask your
question in the chat instead and pass both Args: session_id: From start_topic. element_id: From next_drill. question: The question, worded exactly as the user should see it. |
| grade_drillA | Record how the user did, and schedule when the element comes back. A question has to exist before a verdict can attach to it: either you asked
through Args: session_id: From start_topic. element_id: The element that was drilled. verdict: "correct", "partial", or "incorrect". See the standing rules on strictness — when genuinely torn, "partial" is the honest answer. answer: What the user said, in their words. question: Only when you asked in chat instead of through ask_user. notes: What they missed, in a phrase. Worth filling in — it's the only record of how they were wrong. |
| statusA | Where this topic stands: phase, mastery counts, and what's still locked. Useful for orienting mid-session or after a break. Report it to the user as progress, not as a schedule — don't read out due dates. Args: session_id: From start_topic. |
| resumeA | List topics with elements due for review right now. Call this when the user opens a session without naming a topic, or asks what they should study. Reviewing something about to decay beats starting something new, so offer these before suggesting a fresh topic. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| learn | Learn a topic properly, end to end. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/ryantthomas/learning-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server