Skip to main content
Glama

MCP SSE Server Python

by nguyenxtan

MCP SSE Server Python

Model Context Protocol (MCP) Server với SSE transport được viết bằng Python, tích hợp với n8n instance tại n8n-prod.iconiclogs.com.

Tính năng

  • MCP Protocol Implementation: Triển khai đầy đủ MCP protocol với JSON-RPC 2.0

  • SSE Transport: Server-Sent Events để real-time communication

  • n8n Integration: Webhook endpoints để tích hợp với n8n workflows

  • Natural Language Support: Hỗ trợ Tiếng Việt và English cho queries

  • Async API Calls: Gọi 5 APIs của hệ thống ABC song song với asyncio

  • Health Monitoring: Health check và Prometheus metrics

  • Production Ready: Docker support, graceful shutdown, comprehensive logging

Kiến trúc

mcp-sse-server-python/ ├── src/ │ ├── main.py # FastAPI application │ ├── models.py # Pydantic models │ ├── mcp_protocol.py # MCP protocol handler │ ├── sse_handler.py # SSE connection manager │ ├── api_client.py # Async HTTP client cho ABC system │ ├── n8n_integration.py # n8n webhook handler │ └── tools/ │ ├── nlp_parser.py # Natural language parser │ └── system_check.py # System check tool ├── requirements.txt ├── Dockerfile ├── docker-compose.yml ├── .env.example └── README.md

5 APIs của Hệ thống ABC

  1. GET /api/system/health - Kiểm tra system health

  2. GET /api/users/status - Lấy user status

  3. GET /api/services/list - Danh sách services

  4. POST /api/logs/query - Query logs với timeframe

  5. GET /api/metrics/current - Metrics hiện tại

Cài đặt

🚀 DEMO MODE: Không có API thật? Xem DEMO.md để chạy ngay với Mock API!

Yêu cầu

  • Python 3.11+

  • Docker & Docker Compose (optional)

  • n8n instance tại n8n-prod.iconiclogs.com (optional cho demo)

  • API key cho ABC System (hoặc dùng Mock API)

1. Clone và Setup

cd mcp-sse-server-python # Copy .env.example thành .env cp .env.example .env # Chỉnh sửa .env với thông tin thực tế nano .env

2. Cấu hình .env

# ABC System Configuration ABC_SYSTEM_BASE_URL=https://api.abc.com ABC_API_KEY=your_actual_api_key_here # n8n Integration N8N_INSTANCE_URL=n8n-prod.iconiclogs.com N8N_API_KEY=your_n8n_api_key_here N8N_WEBHOOK_PATH=mcp-system-check

3. Installation Options

Option A: Local Python

# Tạo virtual environment python3.11 -m venv venv source venv/bin/activate # Linux/Mac # hoặc: venv\Scripts\activate # Windows # Install dependencies pip install -r requirements.txt # Run server python src/main.py

Option B: Docker

# Build và run với Docker Compose docker-compose up -d # Xem logs docker-compose logs -f mcp-server # Stop docker-compose down

Option C: Docker only (không compose)

# Build image docker build -t mcp-sse-server . # Run container docker run -d \ -p 3001:3001 \ --name mcp-server \ --env-file .env \ mcp-sse-server

API Endpoints

SSE Endpoint

# Kết nối SSE cho MCP protocol curl -N http://localhost:3001/sse # Với connection ID curl -N "http://localhost:3001/sse?connection_id=my-client-123"

n8n Webhook

# Gọi từ n8n workflow POST http://localhost:3001/n8n/webhook/mcp-system-check # Request body { "tool": "check_system_abc", "params": { "query": "Kiểm tra toàn bộ hệ thống" } }

Health Check

# Health check curl http://localhost:3001/health # Liveness probe (K8s) curl http://localhost:3001/health/live # Readiness probe (K8s) curl http://localhost:3001/health/ready

Metrics

# Prometheus metrics curl http://localhost:3001/metrics

Information

# Server info curl http://localhost:3001/info # List tools curl http://localhost:3001/tools # List n8n tools curl http://localhost:3001/n8n/tools # List connections curl http://localhost:3001/connections

Sử dụng với MCP Protocol

1. Kết nối SSE

const eventSource = new EventSource('http://localhost:3001/sse'); eventSource.addEventListener('connection', (e) => { const data = JSON.parse(e.data); console.log('Connected:', data); }); eventSource.addEventListener('message', (e) => { const response = JSON.parse(e.data); console.log('MCP Response:', response); }); eventSource.addEventListener('heartbeat', (e) => { console.log('Heartbeat:', e.data); });

2. Initialize MCP

// Request { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "clientInfo": { "name": "my-client", "version": "1.0.0" } } }

3. List Tools

{ "jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {} }

4. Call Tool

{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "check_system_abc", "arguments": { "query": "Kiểm tra toàn bộ hệ thống" } } }

Natural Language Examples

Tool check_system_abc hỗ trợ natural language queries:

Tiếng Việt

{"query": "Kiểm tra toàn bộ hệ thống"} {"query": "Xem logs 24h gần đây"} {"query": "Kiểm tra user status và services"} {"query": "Lấy metrics hiện tại"} {"query": "Tìm lỗi trong logs 1 giờ qua"}

English

{"query": "Check all systems"} {"query": "Get recent logs from last 24 hours"} {"query": "Check user status and services"} {"query": "Get current metrics"} {"query": "Search for errors in logs from last hour"}

n8n Workflow Setup

1. Tạo Webhook Node trong n8n

Workflow: MCP System Check ├── Webhook (Trigger) │ Path: mcp-system-check │ Method: POST │ ├── Function (Parse Input) │ // Extract query and params │ ├── HTTP Request (Call MCP Server) │ URL: http://mcp-server:3001/n8n/webhook/mcp-system-check │ Method: POST │ Body: {{$json}} │ ├── IF (Check Success) │ Condition: {{$json.success}} === true │ ├── Send Email / Slack Notification │ Success: ✅ System check passed │ Error: ❌ System check failed │ └── End

2. Trigger từ n8n Schedule

Workflow: Daily System Check ├── Schedule (Trigger) │ Cron: 0 9 * * * (9 AM daily) │ ├── HTTP Request │ URL: http://mcp-server:3001/n8n/webhook/mcp-system-check │ Body: │ { │ "tool": "check_system_abc", │ "params": { │ "query": "Kiểm tra toàn bộ hệ thống" │ } │ } │ └── Process results...

Monitoring

Prometheus Metrics

Server expose các metrics sau:

  • mcp_requests_total - Total requests

  • mcp_request_duration_seconds - Request duration

  • mcp_sse_connections_active - Active SSE connections

  • mcp_tool_executions_total - Tool executions

Grafana Dashboard

Nếu dùng docker-compose, Grafana có sẵn tại:

Import Prometheus datasource: http://prometheus:9090

Development

Run Tests

# Install dev dependencies pip install pytest pytest-asyncio pytest-cov # Run tests pytest # With coverage pytest --cov=src --cov-report=html

Code Formatting

# Format code black src/ # Lint code ruff check src/ # Type checking mypy src/

Production Deployment

Docker Compose (Recommended)

# Production deployment docker-compose -f docker-compose.yml up -d # Scale workers docker-compose up -d --scale mcp-server=3

Kubernetes

apiVersion: apps/v1 kind: Deployment metadata: name: mcp-server spec: replicas: 3 selector: matchLabels: app: mcp-server template: metadata: labels: app: mcp-server spec: containers: - name: mcp-server image: mcp-sse-server:latest ports: - containerPort: 3001 env: - name: ABC_API_KEY valueFrom: secretKeyRef: name: mcp-secrets key: abc-api-key livenessProbe: httpGet: path: /health/live port: 3001 initialDelaySeconds: 5 periodSeconds: 30 readinessProbe: httpGet: path: /health/ready port: 3001 initialDelaySeconds: 5 periodSeconds: 10

Environment Variables

Variable

Description

Default

MCP_SERVER_HOST

Server host

0.0.0.0

MCP_SERVER_PORT

Server port

3001

MCP_SERVER_WORKERS

Number of workers

4

ABC_SYSTEM_BASE_URL

ABC System API URL

Required

ABC_API_KEY

ABC System API key

Required

ABC_TIMEOUT

API timeout (seconds)

30

N8N_INSTANCE_URL

n8n instance URL

Required

N8N_API_KEY

n8n API key

Optional

SSE_HEARTBEAT_INTERVAL

SSE heartbeat interval

30

SSE_MAX_CONNECTIONS

Max SSE connections

100

LOG_LEVEL

Logging level

INFO

Troubleshooting

1. Connection refused

# Kiểm tra server đang chạy curl http://localhost:3001/health # Kiểm tra logs docker-compose logs mcp-server

2. API timeouts

# Tăng timeout trong .env ABC_TIMEOUT=60 # Restart server docker-compose restart mcp-server

3. SSE không kết nối được

# Kiểm tra CORS settings # Kiểm tra firewall/proxy # Kiểm tra browser console

4. n8n webhook không hoạt động

# Kiểm tra n8n có thể access được MCP server curl -X POST http://localhost:3001/n8n/webhook/test \ -H "Content-Type: application/json" \ -d '{"tool": "check_system_abc", "params": {"query": "test"}}'

Security Best Practices

  1. API Keys: Luôn dùng environment variables, không commit vào git

  2. CORS: Configure CORS cho production (allow_origins trong main.py)

  3. Rate Limiting: Implement rate limiting cho webhooks

  4. HTTPS: Dùng HTTPS cho production (reverse proxy như nginx)

  5. Authentication: Thêm authentication cho sensitive endpoints

License

MIT License

Support

Changelog

v1.0.0 (2024-01-17)

  • Initial release

  • MCP protocol support với SSE

  • n8n integration

  • 5 ABC System APIs

  • Natural language support (VI/EN)

  • Prometheus metrics

  • Docker support

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Enables real-time system monitoring and automation through MCP protocol with SSE transport, integrating with n8n workflows to check system health, query logs, and retrieve metrics from ABC system APIs. Supports natural language queries in Vietnamese and English for seamless system administration.

  1. Tính năng
    1. Kiến trúc
      1. 5 APIs của Hệ thống ABC
        1. Cài đặt
          1. Yêu cầu
          2. 1. Clone và Setup
          3. 2. Cấu hình .env
          4. 3. Installation Options
        2. API Endpoints
          1. SSE Endpoint
          2. n8n Webhook
          3. Health Check
          4. Metrics
          5. Information
        3. Sử dụng với MCP Protocol
          1. 1. Kết nối SSE
          2. 2. Initialize MCP
          3. 3. List Tools
          4. 4. Call Tool
        4. Natural Language Examples
          1. Tiếng Việt
          2. English
        5. n8n Workflow Setup
          1. 1. Tạo Webhook Node trong n8n
          2. 2. Trigger từ n8n Schedule
        6. Monitoring
          1. Prometheus Metrics
          2. Grafana Dashboard
        7. Development
          1. Run Tests
          2. Code Formatting
        8. Production Deployment
          1. Docker Compose (Recommended)
          2. Kubernetes
          3. Environment Variables
        9. Troubleshooting
          1. 1. Connection refused
          2. 2. API timeouts
          3. 3. SSE không kết nối được
          4. 4. n8n webhook không hoạt động
        10. Security Best Practices
          1. License
            1. Support
              1. Changelog
                1. v1.0.0 (2024-01-17)

              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/nguyenxtan/mcpwn8n'

              If you have feedback or need assistance with the MCP directory API, please join our Discord server