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.4.tar.gz
(72.7 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.4.tar.gz.
File metadata
- Download URL: mcp_lmsnex-0.2.4.tar.gz
- Upload date:
- Size: 72.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cc53b9d3e217a802d5653850e3905f0202f5185049afb54782d5a92efc9293f
|
|
| MD5 |
ea036a01daba095d8a33f91a5255ff47
|
|
| BLAKE2b-256 |
3109a1f6da8fa3ac68c85c469446f97c38615eca717177c5a1cd5bf82af0f754
|
File details
Details for the file mcp_lmsnex-0.2.4-py3-none-any.whl.
File metadata
- Download URL: mcp_lmsnex-0.2.4-py3-none-any.whl
- Upload date:
- Size: 84.7 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 |
b722b725975ec12e13ece89ef78f8ea9f806f4497101205b03e62368eafca477
|
|
| MD5 |
c0db9d9d257cbfa42b7908248a26035f
|
|
| BLAKE2b-256 |
b0d7d630070d7dd03dbba43c94a76c1d1cb3dacc24ba0a3467a479b32e5bfaf3
|