Skip to main content
Glama
Fuglys

MCP Server with SSE

by Fuglys
README.md
# MCP Server with SSE

Een eenvoudige MCP (Model Context Protocol) server met Server-Sent Events (SSE) functionaliteit, geoptimaliseerd voor deployment op Render.com.

## Features

- 🚀 **Express.js server** - Lightweight en snel
- 📡 **Server-Sent Events (SSE)** - Real-time data streaming
- ⏰ **Timestamp broadcasting** - Elke 5 seconden
- 💓 **Keep-alive pings** - Elke 30 seconden
- 🌐 **CORS enabled** - Cross-origin requests toegestaan
- 🏥 **Health checks** - Voor Render.com monitoring
- 📊 **Status endpoints** - Server informatie en statistieken

## Endpoints

- `GET /` - Server informatie en beschikbare endpoints
- `GET /health` - Health check voor monitoring
- `GET /sse` - Server-Sent Events stream
- `GET /mcp/status` - Uitgebreide server status

## Local Development

1. **Installeer dependencies:**
   ```bash
   npm install
   ```

2. **Start de server:**
   ```bash
   npm start
   # of voor development:
   npm run dev
   ```

3. **Test SSE verbinding:**
   Open `http://localhost:3000/sse` in je browser of gebruik curl:
   ```bash
   curl -N http://localhost:3000/sse
   ```

## Deployment op Render.com

### Automatische Deployment

1. **Connect GitHub repository** in Render dashboard
2. **Selecteer deze repository**
3. **Render detecteert automatisch** de `render.yaml` configuratie
4. **Deploy** - Render gebruikt automatisch de configuratie

### Handmatige Deployment

1. **Maak nieuwe Web Service** in Render
2. **Configuratie:**
   - **Build Command:** `npm install`
   - **Start Command:** `npm start`
   - **Health Check Path:** `/health`
   - **Environment:** Node.js
   - **Plan:** Free tier

## SSE Data Format

De SSE stream stuurt JSON data in het volgende formaat:

### Connection Event
```json
{
  "type": "connection",
  "message": "SSE connection established",
  "timestamp": "2024-01-01T12:00:00.000Z",
  "server": "MCP Server"
}
```

### Timestamp Event (elke 5 seconden)
```json
{
  "type": "timestamp",
  "timestamp": "2024-01-01T12:00:05.000Z",
  "uptime": 123.456,
  "memory": {
    "rss": 12345678,
    "heapTotal": 8765432,
    "heapUsed": 5432109,
    "external": 987654
  }
}
```

### Keep-alive Ping (elke 30 seconden)
```
: keep-alive 1704110400000
```

## Environment Variables

- `PORT` - Server port (default: 3000, Render sets automatically)
- `NODE_ENV` - Environment (production/development)

## CORS Configuration

De server is geconfigureerd om alle origins toe te staan voor maximale compatibiliteit:

```javascript
cors({
  origin: '*',
  methods: ['GET', 'POST', 'OPTIONS'],
  allowedHeaders: ['Content-Type', 'Cache-Control', 'Accept'],
  credentials: false
})
```

## Error Handling

- **500 errors** - Gelogd en JSON response
- **404 errors** - Friendly message met beschikbare endpoints
- **SSE disconnects** - Automatic cleanup van intervals
- **Graceful shutdown** - SIGTERM/SIGINT handling

## Monitoring

### Health Check
```bash
curl https://your-app.onrender.com/health
```

### Server Status
```bash
curl https://your-app.onrender.com/mcp/status
```

## Dependencies

- **express** - Web framework
- **cors** - Cross-origin resource sharing

## License

MIT License - Zie LICENSE bestand voor details.

## Support

Voor vragen of issues, maak een GitHub issue aan in deze repository: https://github.com/Fuglys/mcp-server