lmsnex-mcp-server
MCP bridge between NEXA agents and LMSNEX, supporting three agent domains:
| Domain | Agent | Capabilities |
|---|---|---|
| Creator | Nexa Course Composer | Ingest materials, draft courses, SME review |
| Manager | Nexa Academy Operator | Enrollments, learning paths, reporting, certifications |
| Learner | Nexa Learning Companion | Content search with citations, progress, knowledge gaps |
Architecture
┌─────────────┐ MCP ┌──────────────────┐ REST ┌──────────┐
│ NEXA Agent │ ◄──────► │ lmsnex-server │ ◄──────► │ LMSNEX │
│ (client) │ stdio/SSE│ (Python) │ x-api-key│ API │
└─────────────┘ └──────────────────┘ └──────────┘
See ARCHITECTURE.md for details and AGENTS.md for per-agent tool scoping.
Quick start
1. Install
cd lmsnex-mcp-server
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp app/config.example.py app/config.py
2. Configure
Set environment variables:
export LMSNEX_API_BASE_URL="https://your-lmsnex-host/api"
export LMSNEX_API_KEY="your-api-key-here"
3. Run (stdio)
python -m app.mcp_server
# or after pip install:
mcp-lmsnex
4. Run (HTTP — Cloud Run / local)
./run-http-server-local.sh
# Health: http://localhost:8080/health
# Tools: GET http://localhost:8080/mcp/tools
NEXA MCP client config (stdio)
{
"mcpServers": {
"lmsnex": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "app.mcp_server"],
"cwd": "/path/to/lmsnex-mcp-server",
"env": {
"LMSNEX_API_BASE_URL": "https://your-lmsnex-host/api",
"LMSNEX_API_KEY": "your-api-key-here"
}
}
}
}
MCP tools
Creator
upload_source_material,ingest_source_material,create_course_draftgenerate_course_modules,save_course_modulessave_course_objectives,save_course_assessmentssubmit_course_for_review,get_course_draft_statusgenerate_course_from_article,generate_course_from_powerpoint(text-only PPTX → Moodle)generate_quiz_from_content(course text → MCQ / T-F / short answer; easy|medium|hard)generate_speaker_notes,split_presentation_into_chapters/split_master_deck
Manager
list_users,list_cohorts,enroll_users,assign_learning_pathget_enrollment_report,get_completion_reportissue_certification,get_certification_status
Learner
search_course_content(returns moduleId, title, excerpt citations)get_module_content,get_learner_progressget_recommended_next_steps,record_knowledge_gap
MCP resources
lmsnex://courses/cataloglmsnex://learning-paths/all
Docker
docker build -t lmsnex-mcp-server .
docker run -p 8080:8080 \
-e LMSNEX_API_BASE_URL="https://your-lmsnex-host/api" \
-e LMSNEX_API_KEY="your-api-key-here" \
lmsnex-mcp-server
Cloud Run
./deploy-cloudrun-http.sh
Tests
python test_api.py
python test_mcp_client.py
python test_setup.py
python test_package.py
Project layout
lmsnex-mcp-server/
├── app/
│ ├── mcp_server.py # Stdio MCP server
│ ├── http_mcp_server.py # HTTP/SSE wrapper
│ ├── config.example.py
│ └── loaders/
│ └── lmsnex_api_loader.py
├── pyproject.toml
├── requirements.txt
├── Dockerfile
├── AGENTS.md
└── ARCHITECTURE.md
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mcp_lmsnex-0.2.3.tar.gz
(72.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_lmsnex-0.2.3.tar.gz.
File metadata
- Download URL: mcp_lmsnex-0.2.3.tar.gz
- Upload date:
- Size: 72.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6ecf06a7b00a63bbb025f45ee106cdee46f62d94961402ad823c3900ca4a91e
|
|
| MD5 |
c980df7659ed1c0ae7c81f6353ffd07d
|
|
| BLAKE2b-256 |
d875f5921e8532386f9ac720825f923332413e1f89f9326400cc7f1a93c238b6
|
File details
Details for the file mcp_lmsnex-0.2.3-py3-none-any.whl.
File metadata
- Download URL: mcp_lmsnex-0.2.3-py3-none-any.whl
- Upload date:
- Size: 84.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0763d9286caa24f9a63aa5eab0a61f23d16d5d751443cb25a7d9694269aae3bc
|
|
| MD5 |
847a99987cd7f9ee530295cc3631a9ad
|
|
| BLAKE2b-256 |
9d5a909f36cfbd8554ab8dbc130fd7dc1316b368db6e0e74dc2c9aa86801f1ef
|