Teachable MCP Server & CLI
A free, open source Teachable MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents read your courses, follow student progress and manage enrollments.
0.0(0 ratings)- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add teachable \
-e TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
In Claude Code, type /mcp. Teachable should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add teachable -e TEACHABLE_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/teachable-mcp-cli@latest - 2
In Claude Code, type /mcp. Teachable should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add teachable \
-e TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
In Claude Code, type /mcp. Teachable should show as connected.
/mcp
- 1Download the extension
Download the Claude Desktop extension.
- 2
Double-click it, and Claude Desktop installs it.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add teachable \
--env TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add teachable --env TEACHABLE_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add teachable \
--env TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 2
Add the server.
Put your own API key in place of the example.
{
"mcpServers": {
"teachable": {
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Open the MCP tab again. It should show 26 tools.
- 1
Open the Command Palette and run MCP: Open User Configuration.
- 2
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers. Put your own API key in place of the example.
{
"servers": {
"teachable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add teachable \
--env TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get teachable
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add teachable --env TEACHABLE_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get teachable
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add teachable \
--env TEACHABLE_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/teachable-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get teachable
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"teachable": {
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"teachable": {
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"teachable": {
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"teachable": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/teachable-mcp-cli@latest"],
"enabled": true,
"environment": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"teachable": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/teachable-mcp-cli@latest"],
"enabled": true,
"environment": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"teachable": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/teachable-mcp-cli@latest"],
"enabled": true,
"environment": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add teachable \
--command npx \
--arg -y \
--arg @thenavidm/teachable-mcp-cli@latest \
--env TEACHABLE_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor teachable --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add teachable --command npx --arg -y --arg @thenavidm/teachable-mcp-cli@latest --env TEACHABLE_API_KEY="YOUR_API_KEY" - 2
Check that it starts and lists its tools.
openclaw mcp doctor teachable --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add teachable \
--command npx \
--arg -y \
--arg @thenavidm/teachable-mcp-cli@latest \
--env TEACHABLE_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor teachable --probe
- 1
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 2
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"teachable": {
"command": "npx",
"args": ["-y", "@thenavidm/teachable-mcp-cli@latest"],
"env": {
"TEACHABLE_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
teachable:
command: "npx"
args: ["-y", "@thenavidm/teachable-mcp-cli@latest"]
env:
TEACHABLE_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
teachable:
command: "npx"
args: ["-y", "@thenavidm/teachable-mcp-cli@latest"]
env:
TEACHABLE_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
teachable:
command: "npx"
args: ["-y", "@thenavidm/teachable-mcp-cli@latest"]
env:
TEACHABLE_API_KEY: "YOUR_API_KEY"
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.claude/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Claude Code to use teachable-cli.
Running teachable-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\teachable" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\teachable-mcp-cli\SKILL.md" "$HOME\.claude\skills\teachable\" - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Claude Code to use teachable-cli.
Running teachable-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.claude/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Claude Code to use teachable-cli.
Running teachable-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.agents/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Codex to use teachable-cli.
Running teachable-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\teachable" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\teachable-mcp-cli\SKILL.md" "$HOME\.agents\skills\teachable\" - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Codex to use teachable-cli.
Running teachable-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.agents/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Codex to use teachable-cli.
Running teachable-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Cursor to use teachable-cli.
Running teachable-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Cursor to use teachable-cli.
Running teachable-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Cursor to use teachable-cli.
Running teachable-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask VS Code to use teachable-cli.
Running teachable-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask VS Code to use teachable-cli.
Running teachable-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask VS Code to use teachable-cli.
Running teachable-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.copilot/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Copilot CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\teachable" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\teachable-mcp-cli\SKILL.md" "$HOME\.copilot\skills\teachable\" - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Copilot CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.copilot/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask Copilot CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Gemini CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Gemini CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Gemini CLI to use teachable-cli.
Running teachable-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.config/opencode/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenCode to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\teachable" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\teachable-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\teachable\" - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenCode to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.config/opencode/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenCode to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.openclaw/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenClaw to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\teachable" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\teachable-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\teachable\" - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenClaw to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/teachable
cp "$(npm root -g)/@thenavidm/teachable-mcp-cli/SKILL.md" ~/.openclaw/skills/teachable/ - 3
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 5
Ask OpenClaw to use teachable-cli.
Running teachable-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Antigravity to use teachable-cli.
Running teachable-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Antigravity to use teachable-cli.
Running teachable-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Antigravity to use teachable-cli.
Running teachable-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Hermes to use teachable-cli.
Running teachable-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Hermes to use teachable-cli.
Running teachable-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
Ask Hermes to use teachable-cli.
Running teachable-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
List every command, then try one.
teachable-cli
teachable-cli list-courses
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
setx TEACHABLE_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
List every command, then try one.
teachable-cli
teachable-cli list-courses
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/teachable-mcp-cli@latest - 2
Save your Teachable details, so every new session has them.
Put your own API key in place of the example.
echo 'export TEACHABLE_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
teachable-cli doctor - 4
List every command, then try one.
teachable-cli
teachable-cli list-courses
Needs Node 22 or newer and an API key from your school. Get one in a minute.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Teachable MCP server and CLI gives your AI real access to your Teachable school: courses, lectures, quizzes, students, enrollments, pricing plans, sales and webhooks. It reads your courses and each student's progress, enrolls and unenrolls students, adds and updates users, and saves your records into private files.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 26 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Teachable MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Teachable MCP server & CLI?
The Teachable MCP server & CLI is a free, open source program that lets AI agents work in your Teachable school for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Teachable's own API.
The CLI is the same program as commands. teachable-cli list-courses runs the same code your AI runs when you ask for your courses, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Teachable. I explain how the parts fit together in how to build an AI operating system, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingList my courses and show which ones are published.
How far has this student got in my course?
Show this student's enrollments before I change anything.
Enroll these three students in my new course, and show me the batch before it runs.
Show me my latest sales.
Save my course list into a new private file.
The fourth one shows why this is useful. Your AI prepares every enrollment, you check the preview, and only the batch you approved runs.
It works well next to my Kit MCP server and Circle MCP server, so your AI can email your students and run your community in the same chat. Every server I've made is on my MCP servers page.
For the course itself, my free online course idea generator and online course revenue calculator help too. Teachable is my pick for courses with student apps in the best online course platforms. If you're just starting, here's how to create an online course.
How to install the Teachable MCP server
Pick your app in the box at the top of this page. Each one is a single command or a pasted block, and they all run through npx, so there's nothing to install first.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: Teachable decides which schools can use its API, and its version 2 beta is open only by request. The server never needs your Teachable password.
Set up your Teachable account
You need one API key, made by the school's owner. It takes a minute.
TEACHABLE_API_KEY in the command for your app, in place of the example.You can keep the key in a private file instead. Point TEACHABLE_CREDENTIALS_FILE at a JSON file holding api_key, readable by you alone. Use one or the other, never both.
teachable-cli login prints these steps in your terminal.
Check that it works
Run the doctor with --network. It checks your settings, then reads your course list once to prove the key works, without changing anything.
npx -y @thenavidm/teachable-mcp-cli doctor --networkWhen every line has a check mark, restart your app and ask it for your courses. A failed read usually means the key was revoked, or it doesn't have the permission for courses.
In Claude Code, /mcp also shows whether the Teachable server is connected. It's one of the Claude Code commands worth knowing.
Use the Teachable CLI
The CLI is the same 26 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so list_courses runs as teachable-cli list-courses.
npm install -g @thenavidm/teachable-mcp-cli
teachable-cli
teachable-cli list-courses
teachable-cli get-course-progress --course-id 7 --user-id 9
teachable-cli create-enrollment --course-id 7 --user-id 9 --confirmThe bare teachable-cli lists every command, teachable-cli which <words> finds the command for a task, and teachable-cli <command> --help shows what a command takes. Every change, from enrolling a student to saving an export, needs --confirm, the terminal's version of your approval.
teachable-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Machine mode: compact JSON, no prompts, and it never confirms anything |
--confirm | Lets a write that asks first go ahead |
--dry-run | Shows what a write would do, without doing it |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 1 | Something unexpected went wrong |
| 2 | The command was typed wrong, or a write needed --confirm |
| 3 | It wasn't found |
| 4 | Teachable rejected the credentials |
| 5 | Teachable failed or couldn't be reached |
| 7 | You hit a rate limit, so wait and try again |
| 10 | Nothing is set up yet |
MCP server or CLI: which one?
Both are the same program with the same 26 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 12,500 tokens
- CLI
- Nothing
- MCP server
- 760 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 1,300 tokens, once
- MCP server
- 251,000 tokens
- CLI
- 1,300 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Teachable or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Teachable comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 40 tokens.
When the whole conversation is about Teachable, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't working on your school. In Claude Code that's the /mcp panel, and every AI app has its own switch. TEACHABLE_READ_ONLY=1 cuts it to the 19 reading tools.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
Preview a batch, then run it
Changes that belong together, like enrolling a group of students, go through a batch. preview_school_batch checks up to 20 changes on your computer, without reaching Teachable, and gives you a fingerprint of exactly what will run.
submit_school_batch then runs only that batch, with that fingerprint and your approval. It stops at the first failure and tells you which changes ran and which didn't. Nothing is retried or rolled back on its own.
export_resources saves records, like your courses or your users, into a new private file: up to 10 pages and 1,000 items unless you ask for more. It never overwrites a file that's already there.
Pro tip: Teachable's version 2 API is a beta you request from Teachable. Once you have access, TEACHABLE_ENABLE_V2=1 adds 97 more tools, for coupons, comments, lecture content and more.
Every Teachable tool
The tables below list all 26 tools, grouped the way the repo groups them. Of these, 19 only read, and seven change something in your school.
Courses, lectures and quizzes
list_enrollments- What it does
- The students enrolled in a course, with their progress.
- Kind
- Reads
mark_lecture_complete- What it does
- Mark a lecture complete for a student.
- Kind
- Asks first
list_quiz_responses- What it does
- The answers students gave to a quiz.
- Kind
- Reads
get_quiz- What it does
- One quiz and its questions.
- Kind
- Reads
list_quizzes- What it does
- The quizzes in a lecture.
- Kind
- Reads
get_video- What it does
- One lecture video and its details.
- Kind
- Reads
get_lecture- What it does
- One lecture and its content.
- Kind
- Reads
get_course_progress- What it does
- One student's progress in a course.
- Kind
- Reads
get_course- What it does
- One course and its details.
- Kind
- Reads
list_courses- What it does
- Every course in your school.
- Kind
- Reads
Students and enrollments
create_enrollment- What it does
- Enroll a student in a course.
- Kind
- Asks first
unenroll_user- What it does
- Remove a student from a course.
- Kind
- Asks first
get_user- What it does
- One user and the courses they're enrolled in.
- Kind
- Reads
update_user- What it does
- Change a user's name or sign-up source.
- Kind
- Asks first
list_users- What it does
- Every user in your school.
- Kind
- Reads
create_user- What it does
- Add a new user to your school.
- Kind
- Asks first
Pricing plans and sales
get_pricing_plan- What it does
- One pricing plan and its details.
- Kind
- Reads
list_pricing_plans- What it does
- Every pricing plan in your school.
- Kind
- Reads
list_transactions- What it does
- Your school's sales. A new sale can take up to 2 minutes to show.
- Kind
- Reads
Webhooks
get_webhook_events- What it does
- The events one webhook has sent.
- Kind
- Reads
list_webhooks- What it does
- Your school's webhooks.
- Kind
- Reads
Batches, exports and your schools
list_accounts- What it does
- The schools this server can act for, without showing any key.
- Kind
- Reads
get_operation_schema- What it does
- What a tool would send to Teachable, before you run it.
- Kind
- Reads
preview_school_batch- What it does
- Check a batch of changes on your computer, and get its fingerprint.
- Kind
- Reads
submit_school_batch- What it does
- Run a previewed batch, stopping at the first failure.
- Kind
- Asks first
export_resources- What it does
- Save records into a new private file.
- Kind
- Asks first
Is the Teachable MCP server safe?
A change in Teachable reaches real students. An enrollment gives someone access, and unenrolling takes it away. So all seven tools that change something ask first. They're the ones marked "Asks first" in the tool tables above.
Nothing is retried on its own. If a change times out, check your school before you run it again, because it may have gone through.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
TEACHABLE_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Teachable.
Make it read-only
Set TEACHABLE_READ_ONLY=1 and every change disappears from the tool list, leaving 19 reading tools. TEACHABLE_ALLOW_DESTRUCTIVE=0 refuses every change, even one you approve.
Keep a log of every write
Set TEACHABLE_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: Student names, quiz answers and comments are written by other people, and one can try to give your AI orders. Treat them as data, and use TEACHABLE_READ_ONLY=1 for an agent working on its own.
Your data
Your requests go straight to Teachable's API, with no server of ours in between and no tracking. Your key stays in your app's config, your shell or your private file, and it never shows up in what your AI reads.
Student names and emails come back as they are, so keep your exports private. Uninstalling doesn't revoke the key. To cut access, revoke it in Teachable under Settings, API, More Actions, Revoke Key.
Connect more than one Teachable school
Set TEACHABLE_ACCOUNTS to a JSON list with a name and a key, or a key file, for each school, and TEACHABLE_DEFAULT_ACCOUNT to the one that acts when a tool names none. Every tool takes an optional account, so you can say which school a change is for.
Teachable MCP server settings
Every setting is an environment variable, in your app's config or your shell.
TEACHABLE_API_KEY- Default
- none
- What it does
- Holds your school's API key
TEACHABLE_CREDENTIALS_FILE- Default
- none
- What it does
- Points at a private JSON file with
api_key, instead of the key itself
TEACHABLE_ACCOUNTS- Default
- none
- What it does
- Lists several schools, as JSON
TEACHABLE_DEFAULT_ACCOUNT- Default
- the first one
- What it does
- Picks the school that acts when a tool names none
TEACHABLE_API_VERSION- Default
1- What it does
2uses the version 2 beta, once it's turned on
TEACHABLE_ENABLE_V2- Default
- off
- What it does
1shows the version 2 beta tools
TEACHABLE_READ_ONLY- Default
- off
- What it does
1hides every change
TEACHABLE_ALLOW_DESTRUCTIVE- Default
- on
- What it does
0refuses every change, even one you approve
TEACHABLE_AUDIT_LOG- Default
- none
- What it does
- Names a file that gets one line per attempted write
TEACHABLE_REQUEST_TIMEOUT_MS- Default
30000- What it does
- Sets how long a request can take
TEACHABLE_MIN_REQUEST_INTERVAL_MS- Default
1000- What it does
- Spacing between requests
TEACHABLE_TOOLSETS- Default
all- What it does
- Turns on only the toolsets you name, comma separated
TEACHABLE_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
TEACHABLE_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
TEACHABLE_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
TEACHABLE_HTTP_PORT- Default
8787- What it does
- Sets the port for
--http
TEACHABLE_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
TEACHABLE_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
TEACHABLE_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
TEACHABLE_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| Nothing is set up yet | Set one of TEACHABLE_API_KEY or TEACHABLE_CREDENTIALS_FILE, never both |
| Teachable answers 401 or 403 | The key was revoked or lacks a permission, or your school can't use the API. Check the key in Settings, API |
| The version 2 tools don't show | Set TEACHABLE_ENABLE_V2=1, and ask Teachable for beta access |
| You hit a rate limit | Check what already went through, wait, then try again |
| An export refuses the file | Pick a new file name. It never overwrites a file |
| Claude Code asks before every change | That's the safety check working. Approve each change, or give a trusted agent TEACHABLE_CONFIRM=model |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for course creators
Email your students, or run your community, from the same AI app.
Free tools
MCP servers
FAQs about the Teachable MCP server & CLI
Here are the questions people ask most about the Teachable MCP server and CLI.
The Teachable MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor work in your Teachable school.
It has 26 tools for courses, lectures, quizzes, students, enrollments, pricing plans, sales and webhooks, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Teachable CLI is the same program as the Teachable MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Teachable MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Teachable MCP server is free and open source under the AGPL-3.0 license.
The only things you pay for are your Teachable plan and your own AI app.
No, you don't need a developer account.
An API key from your school's settings, made by the school's owner, is all the Teachable MCP server needs.
No, every enrollment and every other change waits for your approval.
Read-only mode removes the changes, so your AI can't see them at all.
Version 2 is Teachable's newer API, which Teachable opens by request.
With access, TEACHABLE_ENABLE_V2=1 adds 97 more tools, for coupons, comments, lecture content and more.
Yes, the Teachable MCP server connects as many schools as you set up in TEACHABLE_ACCOUNTS.
Every tool takes an optional account, and a default decides which one acts when you don't say.
To disconnect the Teachable MCP server, revoke its key in Teachable under Settings, API, which cuts access right away.
Then remove the server from your AI app's config.
The Teachable MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Teachable MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the AGPL-3.0 license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
