╔══════════════════════════════════════════════════════════════════════════╗
║ EASYWEBHOOK-MCP VISUAL GUIDE ║
║ .env File Support for Easy Webhooks ║
╚══════════════════════════════════════════════════════════════════════════╝
┌──────────────────────────────────────────────────────────────────────────┐
│ STEP 1: CREATE .ENV FILE │
└──────────────────────────────────────────────────────────────────────────┘
📁 c:\Users\plgon\Downloads\EasyWebhook-MCP\.env
DISCORD_WEBHOOK=https://discord.com/api/webhooks/123456/abc...
SLACK_WEBHOOK=https://hooks.slack.com/services/T00/B00/xxx...
MY_API=https://api.example.com/webhook
💡 TIP: Use descriptive names like DISCORD_ALERTS, SLACK_DEPLOYMENTS
┌──────────────────────────────────────────────────────────────────────────┐
│ STEP 2: BUILD DOCKER IMAGE │
└──────────────────────────────────────────────────────────────────────────┘
Command: docker build -t easywebhook-mcp-server .
[====================================] 100%
✅ Image built with your .env file included
┌──────────────────────────────────────────────────────────────────────────┐
│ STEP 3: CONFIGURE CLAUDE │
└──────────────────────────────────────────────────────────────────────────┘
1. Copy custom.yaml → ~/.docker/mcp/catalogs/custom.yaml
2. Add to registry.yaml:
registry:
easywebhook:
ref: ""
3. Update claude_desktop_config.json with custom.yaml catalog
4. Restart Claude Desktop
┌──────────────────────────────────────────────────────────────────────────┐
│ USAGE: BEFORE VS AFTER │
└──────────────────────────────────────────────────────────────────────────┘
❌ BEFORE (Without .env):
─────────────────────────────────────────────────────────────────────────
You: "Send Discord webhook to
https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz
with message 'Hello World'"
Problems:
• Long, complex URLs
• Easy to make typos
• Must copy/paste every time
• Hard to remember which webhook is which
✅ AFTER (With .env):
─────────────────────────────────────────────────────────────────────────
You: "Send Discord message using DISCORD_WEBHOOK saying 'Hello World'"
Benefits:
• Short, simple aliases
• No copy/paste needed
• Store once, use forever
• Clear, descriptive names
┌──────────────────────────────────────────────────────────────────────────┐
│ WORKFLOW DIAGRAM │
└──────────────────────────────────────────────────────────────────────────┘
1. You Ask Claude
│
│ "Send Discord message using DISCORD_WEBHOOK: 'Hello!'"
│
▼
2. Claude Calls Tool
│
│ send_discord_webhook_by_alias(alias="DISCORD_WEBHOOK", ...)
│
▼
3. Server Looks Up Webhook
│
│ .env file: DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
│
▼
4. Sends HTTP Request
│
│ POST https://discord.com/api/webhooks/123456/abc...
│
▼
5. Discord Receives Message
│
│ 💬 "Hello!" appears in your Discord channel
│
▼
6. Claude Reports Success
✅ Discord message sent successfully!
┌──────────────────────────────────────────────────────────────────────────┐
│ AVAILABLE TOOLS │
└──────────────────────────────────────────────────────────────────────────┘
📋 list_webhooks
└─→ See all your configured webhooks
🔗 send_webhook_by_alias
└─→ Send any webhook using alias
💬 send_discord_webhook_by_alias
└─→ Discord message by alias
💼 send_slack_webhook_by_alias
└─→ Slack message by alias
🌐 send_webhook (direct URL)
└─→ Still works without .env!
💬 send_discord_webhook (direct URL)
└─→ Still works without .env!
💼 send_slack_webhook (direct URL)
└─→ Still works without .env!
┌──────────────────────────────────────────────────────────────────────────┐
│ EXAMPLE CONVERSATIONS │
└──────────────────────────────────────────────────────────────────────────┘
🔍 Discovery:
─────────────────────────────────────────────────────────────────────────
You: "What webhooks do I have configured?"
Claude: "📋 Stored Webhooks:
• DISCORD_WEBHOOK: https://discord.com/api/webh...
• SLACK_WEBHOOK: https://hooks.slack.com/serv...
• MY_API: https://api.example.com/webh..."
💬 Quick Discord:
─────────────────────────────────────────────────────────────────────────
You: "Post to DISCORD_WEBHOOK: System is online"
Claude: "✅ Discord message sent successfully!
💬 Message: System is online"
💼 Quick Slack:
─────────────────────────────────────────────────────────────────────────
You: "Send to SLACK_WEBHOOK: Deployment complete"
Claude: "✅ Slack message sent successfully!"
🔧 Custom Webhook:
─────────────────────────────────────────────────────────────────────────
You: "Use MY_API to send {\"status\": \"active\", \"cpu\": 45}"
Claude: "✅ Webhook sent successfully!
📊 Status: 200"
┌──────────────────────────────────────────────────────────────────────────┐
│ SECURITY FEATURES │
└──────────────────────────────────────────────────────────────────────────┘
🔒 .env file stays in Docker container
🎭 URLs masked when listed (only first 30 chars shown)
🚫 Never logged to console
🐳 Runs as non-root user
⏱️ 30-second timeout protection
🔐 No external file access
┌──────────────────────────────────────────────────────────────────────────┐
│ TROUBLESHOOTING │
└──────────────────────────────────────────────────────────────────────────┘
❌ "No webhook found for alias 'DISCORD_WEBHOOK'"
├─→ Check .env file exists
├─→ Verify alias name matches
└─→ Rebuild: docker build -t easywebhook-mcp-server .
❌ Tools not showing in Claude
├─→ Check image: docker images | grep easywebhook
├─→ Verify custom.yaml in catalogs directory
└─→ Restart Claude Desktop completely
❌ Webhook request fails
├─→ Verify URL is correct in .env
├─→ Test URL in browser/Postman first
└─→ Check webhook hasn't been revoked
┌──────────────────────────────────────────────────────────────────────────┐
│ FILE STRUCTURE │
└──────────────────────────────────────────────────────────────────────────┘
EasyWebhook-MCP/
├── 📝 .env.example ← Copy this to .env
├── 🔐 .env ← Your webhooks (create this!)
├── 🐍 easywebhook_server.py ← Main server code
├── 📦 requirements.txt ← Python dependencies
├── 🐳 Dockerfile ← Docker configuration
├── 📋 custom.yaml ← MCP catalog (copy to ~/.docker/mcp/catalogs/)
├── 📖 README.md ← Project overview
├── 🚀 QUICK_START.md ← 5-minute setup
├── 📚 SETUP_GUIDE.md ← Detailed instructions
├── 📝 readme.txt ← Full documentation
├── 🔧 CLAUDE.md ← Developer guide
├── 📜 CHANGELOG.md ← Version history
└── 🎨 VISUAL_GUIDE.txt ← This file!
┌──────────────────────────────────────────────────────────────────────────┐
│ QUICK REFERENCE │
└──────────────────────────────────────────────────────────────────────────┘
🔨 Build: docker build -t easywebhook-mcp-server .
📋 List: docker mcp server list
🔍 Check: docker images | grep easywebhook
📊 Logs: docker ps → docker logs [container-id]
🔄 Update: Edit .env → Rebuild → Restart Claude
┌──────────────────────────────────────────────────────────────────────────┐
│ NEXT STEPS │
└──────────────────────────────────────────────────────────────────────────┘
✅ 1. Create .env file with your webhooks
✅ 2. Build Docker image
✅ 3. Configure Claude Desktop
✅ 4. Restart Claude
✅ 5. Test: "List my webhooks"
✅ 6. Send your first webhook!
╔══════════════════════════════════════════════════════════════════════════╗
║ Ready to use EasyWebhook-MCP! 🚀 ║
║ Questions? Check SETUP_GUIDE.md for detailed instructions ║
╚══════════════════════════════════════════════════════════════════════════╝