sentra-mcp
Serveur MCP minimal construit avec FastAPI et la librairie officielle mcp[server]
. Il expose un flux SSE compatible ChatGPT Developer Mode et fournit deux outils de démonstration (ping
, time
).
Caractéristiques
Serveur
FastMCP
(SSE) monté dans FastAPI (/sse
en GET + POST JSON-RPC sur la même route).Healthcheck REST
GET /health
pour la supervision.Deux outils MCP :
ping
→{"message": "pong"}
time
→{"utc": "<timestamp ISO-8601>"}
Configuration via
.env
(nom du service, instructions, chemins SSE, port, niveau de logs).Dockerfile basé sur
python:3.12-slim
et orchestration docker-compose (port8400
).
Structure du dépôt
mcp/
– package applicatif (configuration + app FastAPI/MCP).docker/
– artefacts de conteneurisation (Dockerfile
,Caddyfile
).docker-compose.yml
– stack API + proxy optionnel..env.example
– gabarit d’environnement.requirements.txt
– dépendances Python.
Démarrage local
Préparer un environnement virtuel et installer les dépendances :
python -m venv .venv source .venv/bin/activate pip install -r requirements.txtCopier
.env.example
vers.env
si besoin et ajuster.Lancer le serveur :
uvicorn mcp.main:app --host 0.0.0.0 --port 8400 --reloadVérifier la santé :
curl -fsSL http://localhost:8400/healthTester le flux MCP SSE (exemple manuel) :
# 1) Ouvrir une connexion SSE et récupérer le point de POST retourné (event "endpoint") curl -N http://localhost:8400/sse # 2) Dans un autre terminal, envoyer un appel JSON-RPC vers le point retourné curl -fsSL -X POST "http://localhost:8400/sse?session_id=<ID>" \ -H 'Content-Type: application/json' \ --data '{"jsonrpc":"2.0","id":"1","method":"call_tool","params":{"name":"time","arguments":{}}}'
Docker & Compose
L’API MCP écoute sur
http://localhost:8400
.Activer le profil
reverse-proxy
si vous souhaitez l’HTTPS géré par Caddy :docker compose --profile reverse-proxy up -d
.
Supervision & restart
Le docker-compose.yml
applique un healthcheck (/health
) toutes les 30s et restart: unless-stopped
.
Validation (local ou VPS)
docker compose up --build
ou déployer l’image sur votre VPS.Consulter les logs :
docker compose logs -f api
.Vérifier :
curl -fsSL http://<hote>:8400/health curl -N http://<hote>:8400/sse # récupérer l’event endpoint curl -fsSL -X POST "http://<hote>:8400/sse?session_id=<ID>" \ -H 'Content-Type: application/json' \ --data '{"jsonrpc":"2.0","id":"1","method":"call_tool","params":{"name":"ping","arguments":{}}}'docker ps
pour confirmer que seuls les services MCP sont exposés.Surveiller la charge (
htop
,docker stats
).
Intégration ChatGPT Developer Mode
Publier l’URL HTTPS du service (reverse proxy / Caddy / Cloudflare Tunnel).
Vérifier le certificat TLS.
Dans ChatGPT → Connectors → Developer Mode, déclarer l’URL MCP (point
/sse
).Valider que les outils
ping
ettime
apparaissent et répondent.
Préparation VPS (rappel)
Inventorier CPU/RAM/disques :
lscpu
,free -h
,df -h /
.Nettoyer Docker (
docker container/image/volume/system prune
).Couper les services en conflit (
sudo ss -tulpn | grep ':8400'
).Mettre à jour la machine (
sudo apt update && sudo apt upgrade -y
).Revoir le pare-feu OVH +
ufw
/nftables
pour limiter les IP autorisées.
Pistes d’évolution
Ajouter des outils riches (
git.commit_push
,files.write
,n8n.trigger
,doc.index
,doc.query
, ...).RAG local (embeddings CPU + Chroma/FAISS).
Authentification (OAuth/Bearer), RBAC, quotas, métriques Prometheus.
Durcissement réseau (rate limiting, WAF, mTLS interne).
Provisionnement infra (Terraform + Ansible) et observabilité.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
A minimal FastAPI-based MCP server that provides basic utility tools like ping and time functions. Designed for easy deployment with Docker support, authentication, and extensible architecture for future tool additions.