Ed Discussions MCP Server
Click on "Deploy 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., "@Ed Discussions MCP Serverlist unread threads in CS101"
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.
Ed Discussions MCP Server
A comprehensive Model Context Protocol (MCP) server for Ed Discussions (EdStem) platform, enabling AI assistants to interact with course discussions, manage threads, comments, and facilitate Q&A.
Status
✅ Functional - Core MCP server with 16 tools implemented and tested
Related MCP server: edstem-mcp
Features
Implemented Tools (16)
System Tools
ed_health_check- Check API connectivity and authentication
User Tools
ed_get_current_user- Get authenticated user information
Course Tools
ed_list_courses- List all enrolled coursesed_get_course- Get detailed course information
Thread Tools
ed_list_threads- List threads with filtering and sortinged_get_thread- Get thread details (with optional mark_as_read control)ed_create_thread- Create new question/post/announcemented_update_thread- Update thread content or settingsed_delete_thread- Delete a threaded_mark_thread_read- Mark a thread as readed_mark_thread_unread- Mark a thread as unread
Comment Tools
ed_list_comments- List all comments (thread + answer replies) with participant metadataed_create_comment- Add comment to threaded_update_comment- Update/endorse commented_delete_comment- Remove comment
Analytics Tools
ed_course_activity_stats- Generate student-only leaderboards for activity, answers, hearts, questions, and posts
Setup
Prerequisites
Node.js 18+
Ed Discussions account with API access
API token from your institution's Ed instance
Installation
Get your Ed API token:
Log into Ed Discussions
Navigate to: https://us.edstem.org/settings/api-tokens
Generate a new token
Clone and configure:
git clone https://github.com/yourusername/mcp-ed.git
cd mcp-edCreate
.envfile:
ED_API_TOKEN=your-token-here
ED_DOMAIN=edstem.org
ED_REGION=us # or your region (au, uk, etc.)Install and build:
npm install
npm run buildTest connection:
node build/testConnection.js # Test API connection
node build/testMCPServer.js # Test MCP serverUsage
With Claude Desktop
Add to your Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"ed-discussions": {
"command": "node",
"args": ["/path/to/mcp-ed/build/index.js"],
"env": {
"ED_API_TOKEN": "your-token-here",
"ED_DOMAIN": "edstem.org",
"ED_REGION": "us"
}
}
}
}Standalone Server
npm start # Runs the MCP server on stdioUsing the Inspector
npx @modelcontextprotocol/inspector build/index.jsAPI Examples
List courses
{
"name": "ed_list_courses",
"arguments": {}
}Get threads from a course
{
"name": "ed_list_threads",
"arguments": {
"course_id": "81559",
"limit": 10,
"sort": "new",
"filter": "unread"
}
}Get thread without marking as read
{
"name": "ed_get_thread",
"arguments": {
"course_id": "81559",
"thread_id": "6873464",
"mark_as_read": false // Prevents marking thread as seen
}
}Generate course activity stats
{
"name": "ed_course_activity_stats",
"arguments": {
"course_id": "81559",
"max_entries": 20
}
}Create a new thread
{
"name": "ed_create_thread",
"arguments": {
"course_id": "81559",
"type": "question",
"title": "Help with assignment",
"content": "I'm having trouble with...",
"category": "Assignments",
"is_anonymous": false
}
}Development
Project Structure
mcp-ed/
├── src/
│ ├── index.ts # MCP server implementation
│ ├── edClient.ts # Ed API client
│ ├── testConnection.ts # API connection tester
│ └── testMCPServer.ts # MCP server tester
├── build/ # Compiled JavaScript
├── .env # API credentials (git-ignored)
└── package.jsonScripts
npm run build # Compile TypeScript
npm run dev:watch # Development mode with auto-rebuild
npm run test # Run tests
npm run lint # Lint code
npm start # Run MCP serverTesting
The server includes comprehensive test suites:
testConnection.ts- Tests Ed API connectivitytestMCPServer.ts- Tests all MCP tools
Architecture
Built on the Model Context Protocol SDK, following the successful patterns from the Canvas LMS MCP implementation:
TypeScript for type safety
Axios for HTTP requests
MCP SDK for protocol implementation
Modular design for easy extension
Read Status Control
The Ed MCP Server provides fine-grained control over thread read status:
Read without marking: Set
mark_as_read: falsewhen callinged_get_threadDefault behavior: Threads are marked as read when accessed (preserves normal Ed behavior)
Manual control: Use
ed_mark_thread_readanded_mark_thread_unreadtoolsPreserves privacy: Reading threads without marking them prevents others from knowing you've read them
Security
API tokens are stored in environment variables
Never commit
.envfilesSupports anonymous posting where allowed
Respects course privacy settings
Roadmap
Near-term
Add search functionality
Implement file upload support
Add bulk operations
Create notification system
Long-term
WebSocket support for real-time updates
Analytics and reporting tools
LMS integration features
Advanced filtering and sorting
Contributing
Contributions welcome! Please:
Fork the repository
Create a feature branch
Test thoroughly
Submit a pull request
Support
Discussions: Use GitHub Discussions for questions
License
MIT - See LICENSE file for details
Acknowledgments
Built on patterns from Canvas LMS MCP
Uses the Model Context Protocol SDK
Thanks to the Ed Discussions team for API access
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Create, edit, translate, and export SCORM eLearning modules from a connected AI assistant.
Create and edit surveys, read responses, and reply to users — from your AI assistant.
Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Canvas LMS through 25 comprehensive tools. Supports course management, assignments, grades, messaging, calendar events, and file access through natural language.59 npm14MIT
- FlicenseBqualityDmaintenanceExposes the full Ed Discussion API to MCP clients, enabling users to manage threads, comments, and course activity through natural language. It provides comprehensive tools for searching and posting content, featuring automatic conversion from markdown to Ed's internal XML format.243-
- AlicenseBqualityBmaintenanceEnables AI assistants to manage Canvas LMS courses, announcements, rubrics, assignments, modules, pages, and student data via the Canvas API.6077 npm12MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with the Classavo education platform via natural language for course management, assignments, grading, attendance, polling, and discussions, with strict privacy controls for students.-