course-mcp
This server allows you to browse and search course content from a configured local directory using four tools:
list-courses: Retrieve all available top-level course directories, giving an overview of which courses are available.list-course-files: List all files directly inside a specified course directory.search-course-file: Perform a case-insensitive literal keyword search within a single UTF-8 text or PDF file. Results include matching line numbers, merged context excerpts, and page numbers for PDFs. Configurable context lines (default 3, max 20) and maximum results (default 20, max 100).search-course: Recursively search all eligible files across an entire course directory (up to depth 5), skipping hidden files, symlinks, and common build/dependency directories.
Note: Scanned PDFs requiring OCR are not supported.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@course-mcplist courses"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
course-mcp
course-mcp is a local Python MCP server for referencing course files from a
configured classes directory.
The project is currently focused on listing available courses and building the service layer needed to browse course files safely.
Current Features
Loads
ROOT_DIRfrom.envor the process environment.Restricts file access to paths inside
ROOT_DIR.Provides a
FileServicefor safe file reads.Provides a
CourseServicefor course/file listing and searching.Exposes an MCP tool:
list-courses: lists the top-level course directories underROOT_DIR.list-course-files: lists the direct files inside a course directory.search-course-file: searches one UTF-8 text or text-extractable PDF file within a course using case-insensitive literal matching.search-course: recursively searches eligible files throughout one course.
search-course-file requires course_title, a course-relative file_path, and
a non-empty keyword. It optionally accepts context_lines (default 3, maximum
20) and max_results (default 20, maximum 100). Search results are returned as
JSON with matching line numbers and merged context excerpts. PDF results also
identify the one-based page containing each excerpt. Scanned PDFs require OCR
and are not supported.
search-course accepts the same keyword, context_lines, and max_results
search controls, but applies max_results independently to every matching file.
It searches direct course files and directories through depth 5. Hidden entries,
symbolic links, and directories named venv, __pycache__, node_modules,
dist, or build are skipped. Other unreadable or non-searchable files are
also skipped without failing the course-wide search.
Both search tools return schema-validated results in MCP structuredContent.
They also include the same result serialized as JSON TextContent for clients
that do not yet consume structured tool output.
Related MCP server: git-mcp-server
Project Layout
src/course_mcp/
server.py MCP server boundary
config/ environment/config loading
mcp_schemas/ MCP JSON Schema contracts
services/
file_service.py safe filesystem access
pdf_text_extractor.py page-oriented PDF text extraction
course_service.py course-oriented operations
models/ simple data models
tests/ pytest tests
skills/ project-specific agent skillsConfiguration
Create a .env file at the project root:
ROOT_DIR="/Users/markseeliger/Desktop/Classes/UMD"ROOT_DIR must point to an existing directory. Each direct child directory is
treated as a course.
You can also pass ROOT_DIR directly through the environment instead of using
.env.
Run Locally
From this project directory:
uv run course-mcpBecause MCP servers run over stdio, they are usually launched by an MCP client rather than run directly by hand.
Install In Codex
Register the server with Codex:
codex mcp add course-mcp \
--env ROOT_DIR=/Users/markseeliger/Desktop/Classes/UMD \
-- uv --directory /Users/markseeliger/Desktop/Coding/create-python-server/course_mcp run course-mcpVerify the registration:
codex mcp get course-mcpOr refresh the registration with the project script:
ROOT_DIR=/Users/markseeliger/Desktop/Classes/UMD ./scripts/update_mcp_server.shIf you change MCP tools, restart Codex or start a new Codex session so the tool list is reloaded.
Development
Run the test suite:
uv run pytestRun a compile check:
python3 -m compileall src/course_mcp testsDebug with MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /Users/markseeliger/Desktop/Coding/create-python-server/course_mcp run course-mcpMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceSafe local MCP server for Windows to list, read, search, patch, backup, and verify code files in allowed folders, with Git integration and dry-run diffs.Last updated1MIT
- Alicense-qualityCmaintenanceA secure, git-aware MCP server for working with local repositories, enabling file management, shell commands, and full git operations within allowed directories.Last updated4321GPL 3.0
- Alicense-qualityDmaintenanceA full-featured MCP server for local development with filesystem, shell, editor, session persistence, and security features.Last updated2MIT
- Flicense-qualityDmaintenanceAn MCP server that provides secure access to local file system operations.Last updated
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
An MCP server for deep research or task groups
MCP server for accessing curated awesome list documentation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mkslge/course-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server