litmos-mcp
by dbuxton
README.md
# litmos-mcp
An [MCP](https://modelcontextprotocol.io/) server that provides read-only access to the [Litmos](https://www.litmos.com/) LMS REST API. Expose training completion status, user profiles, course results, and learning path data to any MCP-compatible AI client.
## Prerequisites
- Python 3.11+
- [`uv`](https://docs.astral.sh/uv/) installed
- A Litmos API key (Account Owner access required)
## Quick start
### Run directly from GitHub
```bash
LITMOS_API_KEY=your_key uvx --from git+https://github.com/dbuxton/litmos-mcp litmos-mcp
```
### Run from a local clone
```bash
git clone https://github.com/dbuxton/litmos-mcp
cd litmos-mcp
LITMOS_API_KEY=your_key uvx --from . litmos-mcp
```
## Configuration
All configuration is via environment variables:
| Variable | Required | Default | Description |
|-------------------|----------|---------------|----------------------------------------------|
| `LITMOS_API_KEY` | Yes | — | Your Litmos API key |
| `LITMOS_REGION` | No | `us` | API region: `us`, `eu`, or `au` |
| `LITMOS_SOURCE` | No | `litmos-mcp` | Source label sent with every API request |
### Region endpoints
| Region | Base URL |
|--------|-----------------------------------|
| `us` | `https://api.litmos.com/v1.svc` |
| `eu` | `https://api.litmoseu.com/v1.svc` |
| `au` | `https://api.litmos.com.au/v1.svc`|
## MCP client configuration
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"litmos": {
"command": "uvx",
"args": ["--from", "git+https://github.com/dbuxton/litmos-mcp", "litmos-mcp"],
"env": {
"LITMOS_API_KEY": "your_key_here",
"LITMOS_REGION": "us"
}
}
}
}
```
### Claude Code
```bash
claude mcp add litmos \
--command uvx \
--args "--from,git+https://github.com/dbuxton/litmos-mcp,litmos-mcp" \
--env LITMOS_API_KEY=your_key_here
```
Or add directly to `.claude/mcp.json` in your project:
```json
{
"mcpServers": {
"litmos": {
"command": "uvx",
"args": ["--from", "git+https://github.com/dbuxton/litmos-mcp", "litmos-mcp"],
"env": {
"LITMOS_API_KEY": "your_key_here"
}
}
}
}
```
## Available tools
| Tool | Description |
|------|-------------|
| `litmos_search_users` | Search users by name, email, username, or company |
| `litmos_get_user` | Retrieve a full user profile by encrypted user ID |
| `litmos_list_users` | List all users with pagination support |
| `litmos_get_user_courses` | Get all courses assigned to a user with completion status |
| `litmos_get_user_course_results` | Get module-level results for a specific user/course pair |
| `litmos_get_user_learning_paths` | Get learning paths assigned to a user |
| `litmos_list_courses` | List all courses in the organisation |
| `litmos_get_user_teams` | Get teams a user belongs to |
### Typical workflow
1. **Find a user** — use `litmos_search_users` with a name or email to get their encrypted `Id`.
2. **Check training** — use `litmos_get_user_courses` with that `Id` to see all assigned courses and completion status.
3. **Drill into a course** — use `litmos_get_user_course_results` with the user `Id` and course `Id` for module-level scores and attempt counts.
## API notes
- The Litmos REST API enforces a limit of **100 requests per minute** per API key. The server surfaces a clear error if this is exceeded.
- All tools are **read-only** — no write operations are exposed.
- Encrypted IDs returned by list/search endpoints must be used verbatim with other tools; do not attempt to decode or construct them manually.
## Development
```bash
git clone https://github.com/dbuxton/litmos-mcp
cd litmos-mcp
uv sync
LITMOS_API_KEY=your_key uv run litmos-mcp
```
## License
MIT
TDQS
A4.2/5.0
Scored across 8 tools
Disambiguation5/5
Each tool targets a distinct entity or relationship (user profile, user courses, course results, learning paths, teams, course list, user list, user search), with no overlapping purposes.
Naming Consistency5/5
All tools follow the consistent pattern 'litmos_verb_noun' (e.g., litmos_get_user, litmos_list_courses), with clear verb-noun combinations.
Tool Count5/5
8 tools is well-scoped for an LMS read-only integration, covering essential entities without unnecessary bloat.
Completeness4/5
Covers all main read operations for users, courses, learning paths, and teams. Minor gap: no tool to get details of a single course or list users in a team, but core workflows are supported.
Maintenance
ActivityInactive
ResponsivenessNo issues