Thaïs MCP Server

Thaïs MCP Server

Enables Claude to interact with the Thaïs hotel reservation system, including checking availability, listing room types, retrieving prices, and creating bookings with email confirmation.

Category
访问服务器

README

Thaïs MCP Server

Serveur MCP (Model Context Protocol) pour l'intégration de l'API Thaïs avec Claude Desktop. Ce projet permet à Claude d'interagir directement avec le système de réservation de l'hôtel Thaïs.

Description du projet

Ce serveur expose plusieurs outils (tools) MCP permettant de :

  • Vérifier les disponibilités des chambres
  • Lister les types de chambres disponibles
  • Consulter les tarifs
  • Créer des réservations avec confirmation par email

Le projet est structuré de manière modulaire pour faciliter la maintenance et l'évolution.

Architecture

thais-mcp-server/
├── src/
│   ├── config/
│   │   └── thais.config.js       # Configuration centralisée
│   ├── services/
│   │   ├── thais.service.js      # Communication avec l'API Thaïs
│   │   └── email.service.js      # Envoi d'emails de confirmation
│   ├── tools/
│   │   ├── availability.tool.js  # Tool de vérification des disponibilités
│   │   ├── room-types.tool.js    # Tool de liste des types de chambres
│   │   ├── prices.tool.js        # Tool de récupération des tarifs
│   │   └── reservation.tool.js   # Tool de création de réservation
│   ├── mcp-server.js             # Serveur MCP principal
│   └── index.js                  # Serveur Express (API REST)
├── .env                          # Variables d'environnement
├── .gitignore                    #
├── package.json                  # 
└── README.md                     # 

Description des fichiers

Configuration

src/config/thais.config.js

Fichier de configuration centralisé contenant :

  • Les URLs et identifiants de l'API Thaïs
  • Les paramètres de configuration email (SMTP)
  • Le port du serveur Express

Les valeurs sont chargées depuis les variables d'environnement (process.env).

Services

src/services/thais.service.js

Service gérant toute la communication avec l'API Thaïs. Responsabilités :

  • Authentification JWT avec cache de token (30 minutes)
  • Récupération des disponibilités par période
  • Récupération des types de chambres
  • Récupération des tarifs par période et type de chambre
  • Création de réservations (e-bookings)

Toutes les méthodes utilisent le token JWT pour l'authentification.

src/services/email.service.js

Service d'envoi d'emails utilisant Nodemailer. Fonctionnalités :

  • Configuration du transporteur SMTP
  • Envoi d'emails de confirmation de réservation au format HTML
  • Gestion des erreurs d'envoi

Tools MCP

src/tools/availability.tool.js

Tool MCP pour vérifier les disponibilités. Paramètres :

  • checkIn : Date d'arrivée (YYYY-MM-DD)
  • checkOut : Date de départ (YYYY-MM-DD)
  • adults : Nombre d'adultes

Le tool filtre automatiquement les chambres selon la capacité (nb_persons_min/max) et ne retourne que les chambres disponibles (availability > 0).

src/tools/room-types.tool.js

Tool MCP pour lister tous les types de chambres de l'hôtel. Ne prend aucun paramètre.

Retourne pour chaque type :

  • ID et label
  • Capacité minimum et maximum
  • Description
  • Statut public/privé

src/tools/prices.tool.js

Tool MCP pour récupérer les tarifs. Paramètres :

  • checkIn : Date d'arrivée
  • checkOut : Date de départ
  • roomTypeIds : Liste optionnelle d'IDs de chambres

Le tool groupe les tarifs par type de chambre et calcule :

  • Prix total du séjour
  • Prix moyen par nuit
  • Détail des prix par date

src/tools/reservation.tool.js

Tool MCP pour créer une réservation. Paramètres requis :

  • Dates (checkIn, checkOut)
  • Informations client (nom, prénom, email, téléphone, adresse, code postal, ville)
  • Type de chambre (roomTypeId)
  • Nombre de personnes (adults, children optionnel)
  • Prix total

Le tool :

  1. Crée la réservation via l'API Thaïs
  2. Envoie un email de confirmation au client
  3. Retourne les détails de la réservation

Serveurs

src/mcp-server.js

Serveur MCP principal utilisant le protocole stdio. Responsabilités :

  • Enregistrement des tools MCP disponibles
  • Routing des appels vers les handlers appropriés
  • Communication avec Claude Desktop via stdio

Ce serveur est lancé automatiquement par Claude Desktop.

src/index.js

Serveur Express exposant une API REST pour tests. Endpoints :

  • GET /health : Vérification de l'état du serveur
  • GET /test-thais : Test de connexion à l'API Thaïs
  • GET /availability : Vérification des disponibilités (query params: checkIn, checkOut, adults)

Ce serveur sert principalement pour les tests en développement.

Installation

Prérequis

  • Node.js 18 ou supérieur
  • Compte Gmail avec mot de passe d'application (pour l'envoi d'emails)
  • Claude Desktop

Étapes d'installation

  1. Cloner le projet :
git clone <url-du-repo>
cd thais-mcp-server
  1. Installer les dépendances :
npm install
  1. Créer le fichier .env à la racine :
THAIS_BASE_URL=https://demo.thais-hotel.com/hub/api/partner
THAIS_USERNAME=API_name
THAIS_PASSWORD=API_password
PORT=3000

EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=votre-email@gmail.com
EMAIL_PASS=votre-mot-de-passe-app
EMAIL_FROM=Hotel Thaïs <votre-email@gmail.com>
  1. Configurer Claude Desktop :

Créer/modifier le fichier de configuration Claude Desktop :

  • Windows : %APPDATA%\Claude\claude_desktop_config.json

Contenu :

{
  "mcpServers": {
    "thais-hotel": {
      "command": "node",
      "args": [
        "CHEMIN_ABSOLU\\thais-mcp-server\\src\\mcp-server.js"
      ],
      "env": {
        "THAIS_BASE_URL": "https://demo.thais-hotel.com/hub/api/partner",
        "THAIS_USERNAME": "API_name",
        "THAIS_PASSWORD": "API_password",
        "EMAIL_HOST": "smtp.gmail.com",
        "EMAIL_PORT": "587",
        "EMAIL_SECURE": "false",
        "EMAIL_USER": "votre-email@gmail.com",
        "EMAIL_PASS": "votre-mot-de-passe-app",
        "EMAIL_FROM": "Hotel Thaïs <votre-email@gmail.com>"
      }
    }
  }
}

Remplacez CHEMIN_ABSOLU par le chemin complet vers votre projet.

Configuration de l'email Gmail

Pour envoyer des emails via Gmail :

  1. Accéder à https://myaccount.google.com/apppasswords
  2. Se connecter avec votre compte Gmail
  3. Créer un mot de passe d'application :
    • Nom : "Thaïs MCP Server"
    • Copier le mot de passe généré (16 caractères)
  4. Utiliser ce mot de passe dans EMAIL_PASS

Utilisation

Démarrage du serveur Express (développement)

npm start

Le serveur démarre sur http://localhost:3000

Utilisation avec Claude Desktop

  1. Fermer complètement Claude Desktop
  2. Relancer Claude Desktop
  3. Le serveur MCP démarre automatiquement
  4. Vérifier la présence du serveur "thais-hotel" dans l'interface

Exemples de requêtes :

  • "Y a-t-il des chambres disponibles pour 2 personnes du 15 au 22 février ?"
  • "Quels types de chambres proposez-vous ?"
  • "Quels sont les tarifs du 15 au 22 février ?"
  • "Je voudrais réserver une chambre double pour 2 adultes du 15 au 22 février. Nom: Dupont, Prénom: Marie, Email: marie@test.com, Téléphone: 0612345678, Adresse: 10 rue de Paris, Code postal: 75001, Ville: Paris"

API Thaïs

Le projet utilise l'API de démonstration Thaïs disponible sur : https://demo.thais-hotel.com/hub/doc/index.html

Endpoints utilisés

  • POST /api/partner/login : Authentification JWT
  • GET /api/partner/hotel/room-types : Liste des types de chambres
  • GET /api/partner/hotel/apr/availabilities/currents : Disponibilités
  • GET /api/partner/hotel/apr/prices/currents : Tarifs
  • POST /api/partner/hotel/ebookings : Création de réservations

Authentification

L'API utilise JWT (JSON Web Token). Le service thais.service.js :

  • Obtient un token via /api/partner/login
  • Cache le token pendant 30 minutes
  • Réutilise le token pour toutes les requêtes
  • Régénère automatiquement un nouveau token après expiration

Dépendances principales

  • express : Framework web pour l'API REST
  • axios : Client HTTP pour les appels API
  • nodemailer : Envoi d'emails
  • @modelcontextprotocol/sdk : SDK pour le protocole MCP
  • dotenv : Gestion des variables d'environnement

Scripts disponibles

npm start        # Démarre le serveur Express
npm run mcp      # Démarre le serveur MCP manuellement (non recommandé)

Note : Le serveur MCP est automatiquement démarré par Claude Desktop. Il ne faut PAS lancer npm run mcp manuellement en utilisation normale.

Sécurité

Variables sensibles

Les credentials et configurations sensibles sont gérés via :

  • Fichier .env pour le développement (non commité)
  • Variables d'environnement dans claude_desktop_config.json pour MCP

Le fichier .gitignore exclut :

  • .env
  • node_modules/
  • Fichiers de log

Cache de token

Le token JWT est caché en mémoire pendant 30 minutes pour éviter les appels inutiles au endpoint de login.

Limitations connues

  • Le serveur MCP ne peut pas être testé directement avec npm run mcp car il utilise stdio
  • Les tokens JWT expirent après un certain temps (géré automatiquement par le cache)
  • L'envoi d'emails nécessite un compte Gmail avec mot de passe d'application

Structure des données

Réservation

{
  checkin: "2026-02-15",
  checkout: "2026-02-22",
  customer_firstname: "Marie",
  customer_lastname: "Dupont",
  customer_email: "marie@test.com",
  customer_phone: "0612345678",
  customer_address: "10 rue de Paris",
  customer_zipcode: "75001",
  customer_city: "Paris",
  customer_country: "FR",
  booking_rooms: [{
    room_type_id: 1,
    rate_id: 1,
    price: 434,
    nb_persons: {
      adults: 2,
      children: 0
    }
  }]
}

Disponibilité

{
  id: 84645,
  date: "2026-02-06",
  room_type_id: 1,
  availability: 12,  // Nombre de chambres disponibles
  source: "Thais"
}

Type de chambre

{
  id: 1,
  label: "Chambre double",
  nb_persons_min: 1,
  nb_persons_max: 5,
  public: true,
  description: "<p>Description HTML</p>"
}

Développement

Ajout d'un nouveau tool

  1. Créer un fichier dans src/tools/
  2. Définir le tool avec name, description, inputSchema et handler
  3. Importer le tool dans src/mcp-server.js
  4. Ajouter le tool au tableau tools

Exemple de structure :

export const monTool = {
  name: 'mon_tool',
  description: 'Description du tool',
  inputSchema: {
    type: 'object',
    properties: {
      param1: { type: 'string', description: 'Description' }
    },
    required: ['param1']
  },
  handler: async (params) => {
    // Logique du tool
    return {
      content: [{ type: 'text', text: 'Résultat' }]
    };
  }
};

Tests

Pour tester le serveur Express :

npm start
# Tester avec Postman ou curl
curl http://localhost:3000/health

Pour tester le serveur MCP :

  • Utiliser Claude Desktop
  • Vérifier les logs dans Developer Tools (Ctrl+Shift+I)

Auteur

Yousfi Abderrahmane.

Projet réalisé dans le cadre d'un test technique pour une alternance.

Licence

Ce projet est à usage éducatif et de démonstration.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选