Ed Discussions MCP Server
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., "@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: Canvas 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/wondermuttt/mcp-ed'
If you have feedback or need assistance with the MCP directory API, please join our Discord server