<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MCP Hub - @MisterSandFR</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
margin: 0;
padding: 0;
min-height: 100vh;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.header {
text-align: center;
color: white;
margin-bottom: 40px;
}
.header h1 {
font-size: 3em;
margin: 0;
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}
.header p {
font-size: 1.2em;
margin: 10px 0;
opacity: 0.9;
}
.servers-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
gap: 20px;
margin-bottom: 40px;
}
.server-card {
background: white;
border-radius: 15px;
padding: 25px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
transition: transform 0.3s, box-shadow 0.3s;
}
.server-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 40px rgba(0,0,0,0.15);
}
.server-header {
display: flex;
align-items: center;
margin-bottom: 15px;
}
.server-icon {
font-size: 2em;
margin-right: 15px;
}
.server-title {
font-size: 1.4em;
font-weight: bold;
color: #333;
margin: 0;
}
.server-status {
display: inline-block;
padding: 5px 12px;
border-radius: 20px;
font-size: 0.8em;
font-weight: bold;
margin-left: auto;
}
.status-online {
background: #4CAF50;
color: white;
}
.status-offline {
background: #f44336;
color: white;
}
.status-coming-soon {
background: #ff9800;
color: white;
}
.server-description {
color: #666;
margin-bottom: 15px;
line-height: 1.5;
}
.server-tools {
margin-bottom: 20px;
}
.tools-title {
font-weight: bold;
color: #333;
margin-bottom: 8px;
}
.tools-list {
list-style: none;
padding: 0;
margin: 0;
}
.tools-list li {
background: #f8f9fa;
padding: 8px 12px;
margin: 5px 0;
border-radius: 6px;
font-size: 0.9em;
color: #555;
}
.server-actions {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.btn {
display: inline-block;
padding: 10px 20px;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
transition: all 0.3s;
font-size: 0.9em;
}
.btn-primary {
background: #667eea;
color: white;
}
.btn-primary:hover {
background: #5a6fd8;
}
.btn-secondary {
background: #f8f9fa;
color: #333;
border: 1px solid #ddd;
}
.btn-secondary:hover {
background: #e9ecef;
}
.btn-disabled {
background: #e0e0e0;
color: #999;
cursor: not-allowed;
}
.footer {
text-align: center;
color: white;
margin-top: 40px;
opacity: 0.8;
}
.add-server {
background: rgba(255,255,255,0.1);
border: 2px dashed rgba(255,255,255,0.3);
color: white;
text-align: center;
padding: 40px;
border-radius: 15px;
margin-bottom: 20px;
}
.add-server:hover {
background: rgba(255,255,255,0.2);
border-color: rgba(255,255,255,0.5);
}
.stats {
background: rgba(255,255,255,0.1);
border-radius: 15px;
padding: 20px;
margin-bottom: 30px;
color: white;
text-align: center;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 20px;
margin-top: 15px;
}
.stat-item {
background: rgba(255,255,255,0.1);
padding: 15px;
border-radius: 10px;
}
.stat-number {
font-size: 2em;
font-weight: bold;
margin-bottom: 5px;
}
.stat-label {
font-size: 0.9em;
opacity: 0.8;
}
</style>
<script>
// Afficher la date de dernière mise à jour
document.addEventListener('DOMContentLoaded', function() {
const now = new Date();
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
timeZone: 'Europe/Paris'
};
document.getElementById('lastUpdate').textContent = now.toLocaleDateString('fr-FR', options);
});
</script>
</head>
<body>
<div class="container">
<div class="header">
<h1>🚀 MCP Hub</h1>
<p>Centre de contrôle de tous mes serveurs MCP</p>
<p>Développé par <strong>@MisterSandFR</strong></p>
</div>
<div class="stats">
<h3>📊 Statistiques du Hub</h3>
<div class="stats-grid">
<div class="stat-item">
<div class="stat-number">1</div>
<div class="stat-label">Serveur actif</div>
</div>
<div class="stat-item">
<div class="stat-number">5</div>
<div class="stat-label">Outils disponibles</div>
</div>
<div class="stat-item">
<div class="stat-number">2</div>
<div class="stat-label">En développement</div>
</div>
<div class="stat-item">
<div class="stat-number">100%</div>
<div class="stat-label">Uptime</div>
</div>
</div>
</div>
<div class="servers-grid">
<!-- Serveur Supabase MCP -->
<div class="server-card">
<div class="server-header">
<div class="server-icon">🗄️</div>
<h3 class="server-title">Supabase MCP</h3>
<span class="server-status status-online">En ligne</span>
</div>
<div class="server-description">
Serveur MCP pour la gestion complète de Supabase.
Exécution SQL, gestion des utilisateurs, monitoring et plus.
</div>
<div class="server-tools">
<div class="tools-title">🛠️ Outils disponibles (5):</div>
<ul class="tools-list">
<li>execute_sql - Exécuter des requêtes SQL</li>
<li>list_tables - Lister les tables</li>
<li>check_health - Vérifier la santé</li>
<li>list_auth_users - Lister les utilisateurs</li>
<li>create_auth_user - Créer un utilisateur</li>
</ul>
</div>
<div class="server-actions">
<a href="https://smithery.ai/server/@MisterSandFR/supabase-mcp-selfhosted" class="btn btn-primary" target="_blank">
🔗 Smithery
</a>
<a href="/health" class="btn btn-secondary">
🏥 Health
</a>
<a href="/.well-known/mcp-config" class="btn btn-secondary">
⚙️ Config
</a>
</div>
</div>
<!-- Serveur API MCP (à venir) -->
<div class="server-card">
<div class="server-header">
<div class="server-icon">🌐</div>
<h3 class="server-title">API MCP</h3>
<span class="server-status status-coming-soon">Bientôt</span>
</div>
<div class="server-description">
Serveur MCP pour l'interaction avec des APIs externes.
REST, GraphQL, webhooks et intégrations tierces.
</div>
<div class="server-tools">
<div class="tools-title">🛠️ Outils prévus:</div>
<ul class="tools-list">
<li>make_request - Requêtes HTTP</li>
<li>parse_json - Analyse JSON</li>
<li>webhook_manager - Gestion webhooks</li>
<li>api_monitor - Monitoring APIs</li>
</ul>
</div>
<div class="server-actions">
<span class="btn btn-disabled">🔗 Smithery</span>
<span class="btn btn-disabled">🏥 Health</span>
<span class="btn btn-disabled">⚙️ Config</span>
</div>
</div>
<!-- Serveur Database MCP (à venir) -->
<div class="server-card">
<div class="server-header">
<div class="server-icon">📊</div>
<h3 class="server-title">Database MCP</h3>
<span class="server-status status-coming-soon">Bientôt</span>
</div>
<div class="server-description">
Serveur MCP pour la gestion multi-bases de données.
PostgreSQL, MySQL, MongoDB et autres SGBD.
</div>
<div class="server-tools">
<div class="tools-title">🛠️ Outils prévus:</div>
<ul class="tools-list">
<li>db_query - Requêtes multi-SGBD</li>
<li>schema_manager - Gestion schémas</li>
<li>backup_manager - Sauvegardes</li>
<li>migration_tool - Migrations</li>
</ul>
</div>
<div class="server-actions">
<span class="btn btn-disabled">🔗 Smithery</span>
<span class="btn btn-disabled">🏥 Health</span>
<span class="btn btn-disabled">⚙️ Config</span>
</div>
</div>
</div>
<div class="footer">
<p>🌐 <strong>mcp.coupaul.fr</strong> - Hub MCP de @MisterSandFR</p>
<p>Serveurs MCP auto-hébergés sur Railway</p>
<p><em>Dernière mise à jour: <span id="lastUpdate"></span></em></p>
</div>
</div>
</body>
</html>