Model Context Protocol server for managing daily standup reports and sending them to Slack.
npm installAdd this to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"slack-standup": {
"command": "node",
"args": ["/absolute/path/to/your/index.js"],
"env": {
"SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
}
}
}- Go to https://api.slack.com/apps
- Create a new app or select existing
- Enable "Incoming Webhooks"
- Add webhook to your channel
- Copy the webhook URL
After editing the config, restart Claude Desktop completely.
Once the MCP server is running, you can interact with it naturally in Claude:
Adding items throughout the day:
"Add to my standup: I'm currently testing NOM-276"
"Mark as done: reviewed PRs for NOM-276 code part"
"Add blocker: waiting for API key from DevOps"
"Plan for tomorrow: deploy to staging environment"
Checking your standup:
"Show me my current standup"
"What do I have in my standup so far?"
Sending to Slack:
"Preview my standup message"
"Send my standup to Slack"
Managing data:
"Remove the second item from my done list"
"Clear my standup data"
"Update my standup with these items: [list items]"
The MCP server provides these tools to Claude:
- add_standup_item - Add items to any category
- remove_standup_item - Remove items by index
- get_standup - View current standup data
- send_standup - Send to Slack (with preview option)
- clear_standup - Clear all data
- update_standup - Replace entire standup
The standup data is stored in ~/.claude_standup_memory.json:
{
"inProgress": [
"https://rimthan-lab.atlassian.net/browse/NOM-276 - testing"
],
"done": [
"reviews PRs https://rimthan-lab.atlassian.net/browse/NOM-276 code part"
],
"blockers": [
"Waiting for API access"
],
"plannedNext": [
"Deploy to staging",
"Run integration tests"
],
"lastUpdated": "2025-10-15T10:30:00.000Z",
"date": "10/15/2025"
}Test the MCP server directly:
node index.jsThen type MCP commands in JSON format:
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_standup","arguments":{}}}SLACK_WEBHOOK_URL- Required: Your Slack incoming webhook URLSTANDUP_MEMORY_FILE- Optional: Custom path for memory file (default:~/.claude_standup_memory.json)
Morning:
You: "Clear my standup from yesterday"
You: "Plan for today: complete NOM-276 testing, review NOM-277 PR"
During the day:
You: "Add in progress: testing NOM-276 authentication flow"
You: "Mark done: fixed bug in login component"
You: "Add blocker: waiting for staging environment access"
End of day:
You: "Show me my standup"
You: "Send my standup to Slack"
MCP server not appearing in Claude:
- Check the config file path is correct
- Ensure the
commandpath points to node executable - Verify
argshas absolute path to index.js - Restart Claude Desktop completely
Slack messages not sending:
- Verify
SLACK_WEBHOOK_URLis set correctly - Test the webhook URL with curl:
curl -X POST -H 'Content-type: application/json' \ --data '{"text":"Test message"}' \ YOUR_WEBHOOK_URL
Memory not persisting:
- Check write permissions for the memory file location
- Verify
STANDUP_MEMORY_FILEpath if using custom location
Feel free to open issues or submit PRs!
MIT