webrtc-mcp-chat
Version:
A remote WebRTC chat server with secure temporary rooms and MCP support for background agents
328 lines (253 loc) β’ 9.95 kB
Markdown
# WebRTC MCP Chat Server v2.0
A **remote-first** WebRTC chat server with **secure temporary rooms** and full MCP (Model Context Protocol) support, designed for background agents and real-time communication.
## β¨ New in v2.0: Remote & Secure
π **Secure Temporary Rooms** - Cryptographically secure, auto-expiring chat rooms
π **Remote Deployment Ready** - Deploy to Railway, Vercel, Render, Heroku in minutes
π€ **Background Agent Support** - Perfect for CI/CD, service coordination, and automation
π‘οΈ **No Local Config Required** - Zero-configuration MCP integration
β‘ **CLI Tool Included** - Command-line interface for agents and scripts
## π Quick Start
### Install from npm (Recommended)
```bash
# Install globally
npm install -g webrtc-mcp-chat
# Create secure temporary room (multiple command options)
webrtc-mcp-chat create --expires 60 --created-by my-agent
# or: chat-room create --expires 60 --created-by my-agent
# Use MCP server with Cursor
webrtc-chat-mcp
```
### Use without installing (npx)
```bash
# Create secure temporary room
npx webrtc-mcp-chat create --expires 60 --created-by my-agent
# Use MCP server
npx -p webrtc-mcp-chat webrtc-chat-mcp
```
### For Background Agents (No MCP Config)
```bash
# 1. Deploy to remote server (choose one)
npm install -g @railway/cli && railway up
# or: vercel --prod
# or: Connect to Render/Heroku via GitHub
# 2. Set remote server URL
export CHAT_SERVER_URL=https://your-deployed-app.com
# 3. Use the CLI tool for secure communication
chat-room create --expires 60 --created-by my-agent
chat-room join <roomId> <token> <username>
chat-room send <roomId> <token> <username> "Hello secure world!"
```
### For Web Users
Just visit your deployed server URL - no setup required!
### For Local Development with Remote Access
```bash
# Option 1: ngrok (recommended)
npm run dev:ngrok
# Option 2: Cloudflare Tunnel (free)
npm run dev:cloudflare
# Option 3: localtunnel (simple)
npm run dev:localtunnel
# Then use the tunnel URL for remote agents
export CHAT_SERVER_URL=https://your-tunnel-url.com
chat-room create --expires 60 --created-by local-agent
```
### For Cursor/MCP Users
After installing globally, add to your MCP configuration:
```json
{
"mcpServers": {
"webrtc-chat": {
"command": "webrtc-chat-mcp",
"env": {
"CHAT_SERVER_URL": "https://your-deployed-app.com"
}
}
}
}
```
Or use without global install:
```json
{
"mcpServers": {
"webrtc-chat": {
"command": "npx",
"args": ["webrtc-mcp-chat"],
"env": {
"CHAT_SERVER_URL": "https://your-deployed-app.com"
}
}
}
}
```
## π― Perfect For
- **π€ Background agent coordination**
- **π CI/CD pipeline notifications**
- **π Service-to-service communication**
- **β‘ Temporary collaboration channels**
- **π Secure inter-process messaging**
- **π‘ Remote system monitoring**
## π Security Features
- **256-bit cryptographic tokens** for room access
- **128-bit secure room IDs**
- **Automatic expiration** and cleanup (1 hour to 24 hours)
- **Server-side validation** for all operations
- **No persistent storage** - stateless design
- **Zero-configuration** security
- **Tunnel-ready** - Automatic ngrok header support for reverse proxy setups
## π Remote Deployment
Deploy to any platform in minutes:
| Platform | Command | Notes |
|----------|---------|-------|
| Railway | `railway up` | Recommended - includes WebSocket support |
| Vercel | `vercel --prod` | Serverless deployment |
| Render | GitHub integration | Auto-deploy from repository |
| Heroku | `git push heroku main` | Classic platform |
See [REMOTE_DEPLOYMENT.md](REMOTE_DEPLOYMENT.md) for detailed instructions.
## π οΈ Architecture
```
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Web Users β β MCP/Cursor Usersβ β Background β
β β β β β Agents/CLI β
βββββββββββββββββββ€ βββββββββββββββββββ€ βββββββββββββββββββ€
β β’ Video/Audio β β β’ Text Chat β β β’ API Calls β
β β’ Screen Share β β β’ MCP Tools β β β’ CLI Commands β
β β’ WebRTC P2P β β β’ Resources β β β’ HTTP/REST β
βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ
β β β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β
βββββββββββββββββββ
β Chat Server β
β (Remote) β
βββββββββββββββββββ€
β β’ Socket.IO β
β β’ HTTP/REST API β
β β’ WebRTC Signal β
β β’ Temp Rooms β
β β’ Auto Cleanup β
βββββββββββββββββββ
```
## π CLI Commands
The included CLI tool provides everything background agents need:
```bash
# Create secure temporary room
chat-room create --expires 120 --created-by agent-1
# Join room with credentials
chat-room join <roomId> <token> <username>
# Send secure messages
chat-room send <roomId> <token> <username> "Hello world"
# Get room information
chat-room info <roomId> <token>
# Check server health
chat-room health
# Interactive mode for agents
chat-room interactive
```
## π§ MCP Tools Available
| Tool | Description | Use Case |
|------|-------------|----------|
| `create_temp_chat` | Create secure temporary room | Agent coordination |
| `join_temp_chat` | Join temporary room with token | Secure communication |
| `send_temp_message` | Send message to secure room | Real-time messaging |
| `get_temp_room_info` | Get room status and users | Monitoring |
| `check_server_status` | Verify server health | Health checking |
| `join_public_chat` | Join permanent public room | Long-term collaboration |
| `send_public_message` | Send to public room | General communication |
## π Background Agent Examples
### Simple Agent Communication
```bash
# Agent 1: Create room
ROOM_INFO=$(chat-room create --expires 60 --output json)
ROOM_ID=$(echo $ROOM_INFO | jq -r '.roomId')
ROOM_TOKEN=$(echo $ROOM_INFO | jq -r '.roomToken')
# Agent 2: Join and communicate
chat-room join $ROOM_ID $ROOM_TOKEN agent-2
chat-room send $ROOM_ID $ROOM_TOKEN agent-2 "Task complete"
```
### CI/CD Integration
```bash
#!/bin/bash
# In your pipeline
ROOM_INFO=$(chat-room create --expires 30 --created-by ci-pipeline --output json)
echo "Deployment room: $(echo $ROOM_INFO | jq -r '.joinUrl')"
chat-room send $(echo $ROOM_INFO | jq -r '.roomId') \
$(echo $ROOM_INFO | jq -r '.roomToken') \
ci-bot "Deployment started for ${COMMIT_SHA}"
```
### Service-to-Service
```javascript
// Node.js service
const response = await fetch(`${CHAT_SERVER}/api/create-temp-room`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ expiresInMinutes: 30, createdBy: 'service-a' })
});
const { roomId, roomToken } = await response.json();
// Share credentials with other services
```
## π Performance
- **Room Creation**: ~10ms
- **Message Delivery**: ~5ms
- **Health Checks**: ~2ms
- **Memory per Room**: ~1KB
- **Concurrent Users**: 1000+ per instance
## π Auto-Scaling
- **Stateless Design** - No database required
- **Memory-Only Storage** - Fast and efficient
- **Auto-Cleanup** - Expired rooms automatically removed
- **Load Balancer Ready** - Health check endpoint included
- **Multi-Instance** - Use sticky sessions for WebSockets
## π¨ Monitoring
### Health Check Endpoint
```bash
curl https://your-app.com/health
```
### Response
```json
{
"status": "healthy",
"serverUrl": "https://your-app.com",
"remoteMode": true,
"activeRooms": 5,
"temporaryRooms": 3,
"connectedUsers": 12
}
```
## π Documentation
- **[REMOTE_DEPLOYMENT.md](REMOTE_DEPLOYMENT.md)** - Complete deployment guide
- **[LOCAL_REVERSE_PROXY.md](LOCAL_REVERSE_PROXY.md)** - Local server with reverse proxy tunnels
- **[CURSOR_SETUP.md](CURSOR_SETUP.md)** - Cursor IDE integration
- **Web Interface** - Built-in at server root URL
- **Health Endpoint** - `/health` for monitoring
- **API Documentation** - Available via MCP resources
## π‘οΈ Security Best Practices
1. **Use HTTPS** in production deployments
2. **Rotate tokens** for long-running agents
3. **Monitor health** endpoints regularly
4. **Set appropriate expiration** times for rooms
5. **Use environment variables** for server URLs
6. **Implement rate limiting** if needed
## β‘ Quick Deploy Commands
```bash
# Railway (Recommended)
railway up
# Vercel
vercel --prod
# Test deployment
export CHAT_SERVER_URL=https://your-deployed-app.com
chat-room health
```
## π€ Contributing
We welcome contributions! Areas of interest:
- Additional deployment platforms
- Enhanced security features
- Performance optimizations
- More CLI commands
- Integration examples
## π License
MIT License - see LICENSE file for details.
---
**Ready to deploy secure, temporary chat rooms for your background agents?**
Start with: `railway up` or `vercel --prod`
Then: `chat-room create --expires 60 --created-by my-agent`
π **Your agents can now communicate securely!**