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.2.tar.gz
(72.5 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.2.tar.gz.
File metadata
- Download URL: mcp_lmsnex-0.2.2.tar.gz
- Upload date:
- Size: 72.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52df0e088cfd0a57b81685c245754377d14ac4d0ce250b1f805af41344511b04
|
|
| MD5 |
ce0cdb6e61823aab621f32dbadd9284b
|
|
| BLAKE2b-256 |
9cfb9cf5b523f38e64057fd3b32c379b37f647ec0391ef20fa1573a1e0a2f825
|
File details
Details for the file mcp_lmsnex-0.2.2-py3-none-any.whl.
File metadata
- Download URL: mcp_lmsnex-0.2.2-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 |
6200bb369f522dbceb4c254cba048923be4fe530407d8926599df5ab40ba1214
|
|
| MD5 |
d5622c9c93933ac80a257a3a10b862e1
|
|
| BLAKE2b-256 |
f7785ffcc8f3234fa6548c47a158e9723ad3b2c64ea2534e14b6dbf1ee6b6a1d
|