Your Multilingual AI Travel Concierge for Hologram
Orchestrating complex travel planning through MCP (Model Context Protocol) with multi-LLM support
π¬π§ English β’ πͺπΈ EspaΓ±ol β’ π«π· FranΓ§ais
Features β’ Quick Start β’ Configuration β’ Architecture β’ Deployment β’ API Reference
Concieragent is a production-ready, multilingual AI travel assistant that runs on the Hologram platform. It demonstrates the power of MCP (Model Context Protocol) by orchestrating 6 specialized travel planning servers with your choice of LLM backend.
| Feature | Description |
|---|---|
| π€ Multi-LLM Support | Switch between OpenAI, Claude, or Ollama |
| π Multilingual | Automatic detection & responses in EN/ES/FR |
| π οΈ 30 MCP Tools | Real-time flights, hotels, weather, events, finance |
| π¬ Context-Aware | Remembers conversation history & user preferences |
| β‘ Smart Truncation | Handles large API responses gracefully |
| π Private & Secure | End-to-end encrypted via Hologram |
π¨ Hotels
π Events
|
π€οΈ Weather
π Geocoding
π° Finance
|
Choose your preferred AI backend:
| Provider | Model | Best For |
|---|---|---|
| OpenAI | GPT-4o | Production demos, best tool calling |
| Claude | Claude Sonnet | Alternative cloud option |
| Ollama | Llama 3.1, Mistral | Local/private, no API costs |
The bot automatically detects and responds in the user's language:
- π¬π§ English - Default language
- πͺπΈ Spanish - "Hola, ΒΏquΓ© tiempo hace en Barcelona?"
- π«π· French - "Bonjour, je cherche un hΓ΄tel Γ Paris"
Language detection happens automatically based on the user's message patterns.
- Conversation Memory - Remembers destinations, dates, preferences
- No Repetitive Questions - Uses context from previous messages
- Token Management - Automatic truncation of large responses
- Rate Limit Handling - Graceful retry with context trimming
| Requirement | Purpose | Get It |
|---|---|---|
| Docker | VS Agent container | Install |
| Node.js 18+ | Bot server | Install |
| Python 3.12+ | MCP servers | Install |
| UV | Python packages | Install |
| ngrok | Public URL tunnel | Get free |
| Hologram App | Mobile client | Download |
π‘ Windows Users: See WINDOWS_SETUP.md for Windows-specific setup instructions and PowerShell scripts.
| Service | Purpose | Free Tier |
|---|---|---|
| OpenAI | LLM orchestration | Pay-as-you-go |
| SerpAPI | Flights, hotels, events | 100 searches/mo |
| OpenWeatherMap | Weather data | Unlimited |
# 1. Clone the repository
git clone https://github.com/your-org/concieragent.git
cd concieragent
# 2. Install Node.js dependencies
pnpm install
# 3. Install Python dependencies for all MCP servers
for server in flight hotel event geocoder weather finance; do
cd mcp_travelassistant/servers/${server}_server && uv sync && cd ../../..
done
# 4. Configure environment
cp .env.example .env
# Edit .env with your API keysYou need 3 terminals:
On macOS/Linux:
# Terminal 1: Start ngrok
ngrok http 3001
# Note the URL: https://xxxxx.ngrok-free.app
# Terminal 2: Start bot server
pnpm start
# Wait for: β
Travel Agent ready!
# Terminal 3: Start VS Agent
./scripts/docker-run.sh xxxxx.ngrok-free.appOn Windows (PowerShell):
# Terminal 1: Start ngrok
ngrok http 3001
# Note the URL: https://xxxxx.ngrok-free.app
# Terminal 2: Start bot server
pnpm run dev
# Wait for: β
Travel Agent ready!
# Terminal 3: Start VS Agent (PowerShell)
.\scripts\docker-run.ps1 xxxxx.ngrok-free.app
# OR use Batch file (Command Prompt)
scripts\docker-run.bat xxxxx.ngrok-free.app- Open
http://localhost:3001/invitation - Scan QR code with Hologram app
- Send: "What's the weather in Tokyo?" π
Create a .env file in the project root:
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# LLM PROVIDER CONFIGURATION
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Choose: 'openai', 'claude', or 'ollama'
LLM_PROVIDER=openai
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# OpenAI (default)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
OPENAI_API_KEY=sk-your-key-here
# OPENAI_MODEL=gpt-4o # Optional, defaults to gpt-4o
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Anthropic Claude
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ANTHROPIC_API_KEY=sk-ant-your-key-here
# CLAUDE_MODEL=claude-sonnet-4-20250514 # Optional
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Ollama (Local - no API key needed)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# OLLAMA_BASE_URL=http://localhost:11434 # Optional
# OLLAMA_MODEL=llama3.1 # Optional
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# MCP SERVER API KEYS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SerpAPI - Flights, Hotels, Events, Finance
SERPAPI_KEY=your-serpapi-key-here
# OpenWeatherMap - Weather data
OPENWEATHER_API_KEY=your-openweather-key-here
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# VS AGENT
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
VS_AGENT_URL=http://localhost:3000Simply change LLM_PROVIDER in your .env:
# Use Claude instead of OpenAI
LLM_PROVIDER=claude
ANTHROPIC_API_KEY=sk-ant-xxxxx
# Use local Ollama (free!)
LLM_PROVIDER=ollama
OLLAMA_MODEL=llama3.1For Ollama, make sure it's running:
# Install from https://ollama.ai
ollama pull llama3.1
ollama serveβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π± Hologram Mobile App β
β (iPhone / Android) β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β π DIDComm (E2E Encrypted)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π³ VS Agent (Docker) β
β Protocol Handler β’ Connection Manager β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β HTTP Webhooks
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π€ Concieragent Bot Server (Node.js) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β TravelAgent β β
β β β’ Multi-LLM Provider (OpenAI/Claude/Ollama) β β
β β β’ Context Management & Memory β β
β β β’ i18n Language Detection β β
β β β’ Token Management & Truncation β β
β βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ β
β β MCP Protocol β
β βββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ β
β β McpClient β β
β β Spawns & manages Python MCP servers β β
β βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββ
β β β
ββββββββΌβββββββ ββββββββββββΌβββββββββββ ββββββββΌβββββββ
β βοΈ Flights β β π¨ Hotels β β π Events β
β (SerpAPI) β β (SerpAPI) β β (SerpAPI) β
βββββββββββββββ ββββββββββββββββββββββ βββββββββββββββ
β β β
ββββββββΌβββββββ ββββββββββββΌβββββββββββ ββββββββΌβββββββ
β π Geocoder β β π€οΈ Weather β β π° Finance β
β (Nominatim) β β (OpenWeatherMap) β β (SerpAPI) β
βββββββββββββββ ββββββββββββββββββββββ βββββββββββββββ
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Hologram App | Encrypted mobile messaging |
| Protocol | DIDComm | Decentralized identity & encryption |
| Gateway | VS Agent | Protocol handler (Docker) |
| Server | Node.js + TypeScript | Application logic |
| AI | OpenAI / Claude / Ollama | LLM orchestration |
| Tools | MCP Protocol | External service integration |
| Servers | Python 3.12 + FastMCP | 6 specialized MCP servers |
While Kubernetes is not mandatory, here's an example architecture for production deployments:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Kubernetes Cluster β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β demos namespace β β
β β βββββββββββββββ βββββββββββββββ β β
β β β Concieragentβββββββββββ VS Agent β β β
β β β (Bot) β HTTP β (DIDComm) β β β
β β β Port 4001 β β Port 3000 β β β
β β βββββββββββββββ βββββββββββββββ β β
β β β β β β
β β β ββββββββββββββββββββ β β
β β βΌ βΌ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Ingress (nginx) β β β
β β β concieragent.domain.com β β β
β β β concieragent.domain.com/invitation β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββ
β Hologram β
β Mobile App β
ββββββββββββββββ
For Kubernetes deployment, use the provided Helm charts in the charts/ directory. See doc/deployment.md for detailed deployment instructions.
| Method | Endpoint | Description |
|---|---|---|
POST |
/message-received |
Webhook for incoming messages |
POST |
/connection-established |
Handle new connections with welcome |
GET |
/welcome?lang=es |
Get localized welcome message |
GET |
/health |
Health check |
GET |
/invitation |
QR code for Hologram connection |
GET |
/logo.png |
Bot logo |
βοΈ Flight Tools (4)
| Tool | Description |
|---|---|
search_flights |
Search flights by origin, destination, dates |
get_flight_details |
Get detailed info for a specific flight |
filter_flights_by_price |
Filter results by max price |
filter_flights_by_airline |
Filter results by airline |
π¨ Hotel Tools (7)
| Tool | Description |
|---|---|
search_hotels |
Search hotels by location, dates |
get_hotel_details |
Get detailed hotel info |
get_property_details |
Extended property information |
filter_hotels_by_price |
Filter by price range |
filter_hotels_by_rating |
Filter by star rating |
filter_hotels_by_amenities |
Filter by amenities |
filter_hotels_by_class |
Filter by hotel class |
π Event Tools (5)
| Tool | Description |
|---|---|
search_events |
Search local events |
get_event_details |
Get event details |
filter_events_by_date |
Filter by date range |
filter_events_by_type |
Filter by event type |
filter_events_by_venue |
Filter by venue |
π€οΈ Weather Tools (3)
| Tool | Description |
|---|---|
get_current_conditions |
Current weather for location |
get_weather_forecast |
5-day weather forecast |
get_weather_data_details |
Extended weather data |
π Geocoder Tools (5)
| Tool | Description |
|---|---|
geocode_location |
Address to coordinates |
reverse_geocode |
Coordinates to address |
batch_geocode |
Multiple locations at once |
calculate_distance |
Distance between points |
search_locations |
Search for places |
π° Finance Tools (6)
| Tool | Description |
|---|---|
convert_currency |
Real-time currency conversion |
lookup_stock |
Stock price lookup |
get_market_overview |
Market summary |
get_finance_details |
Extended finance data |
filter_stocks_by_price_movement |
Filter stocks |
get_historical_data |
Historical prices |
User: "What's the weather like in Paris this week?"
Bot: π€οΈ Using OpenWeatherMap MCP tool...
Current weather in Paris, France:
Temperature: 18Β°C (feels like 17Β°C)
Conditions: Partly cloudy
Humidity: 65%
Wind: 12 km/h
5-Day Forecast:
- Monday: 19Β°C, Sunny
- Tuesday: 17Β°C, Light rain
...
User: "Hola, busco vuelos de Madrid a Tokyo para la prΓ³xima semana"
Bot: Β‘Hola! Voy a buscar vuelos de Madrid a Tokyo...
βοΈ He encontrado 5 opciones de vuelos:
1. Iberia - $892 USD
DuraciΓ³n: 14h 30m (1 escala)
Salida: 10:30 β Llegada: 07:00+1
...
User: "Bonjour, je cherche un hΓ΄tel Γ Nice pour le week-end prochain"
Bot: Bonjour ! Je recherche des hΓ΄tels Γ Nice...
π¨ J'ai trouvΓ© 8 hΓ΄tels correspondant Γ vos critΓ¨res:
1. HΓ΄tel Negresco βββββ
Prix: 320β¬/nuit
Note: 4.8/5 (1,234 avis)
...
β "No MCP tools available"
Cause: Python MCP servers failed to start
Fix:
# Check each server can start
cd mcp_travelassistant/servers/flight_server
uv sync
uv run python flight_server.py
# Should show "Processing request..." when workingβ Rate limit exceeded (429)
Cause: Too many tokens or requests to OpenAI
Fix:
- The bot automatically retries with trimmed context
- Wait a few seconds between requests
- Consider using Ollama for unlimited local usage
β VS Agent won't start
Fix:
# Check Docker is running
docker ps
# Remove old container and restart
docker stop vs-agent && docker rm vs-agent
./scripts/docker-run.sh your-ngrok-urlβ Weather/flights returning errors
Cause: Missing or invalid API keys
Fix: Check your .env file has valid keys:
OPENWEATHER_API_KEY=your-key # Get from openweathermap.org
SERPAPI_KEY=your-key # Get from serpapi.com# 1. Install dependencies
pnpm install
# 2. Set up environment
cp .env.example .env
# Edit .env with your API keys
# 3. Install MCP server dependencies
for server in flight hotel event geocoder weather finance; do
cd mcp_travelassistant/servers/${server}_server && uv sync && cd ../../..
done
# 4. Start ngrok (in separate terminal)
ngrok http 3001
# 5. Start bot server
pnpm run dev
# 6. Start VS Agent
./scripts/docker-run.sh your-ngrok-url# Build image
pnpm run docker:build
# Run with environment file
pnpm run docker:run
# Or with explicit env vars
docker run -p 4001:4001 \
-e OPENAI_API_KEY=sk-xxx \
-e SERPAPI_KEY=xxx \
-e OPENWEATHER_API_KEY=xxx \
concieragent:localFor production deployments, use the provided Helm charts:
# Dry run
helm template concieragent ./charts \
--set global.domain=your-domain.com
# Install
helm upgrade --install concieragent ./charts \
--namespace demos \
--create-namespace \
--set global.domain=your-domain.com \
--set existingSecret=concieragent-api-keysSee doc/deployment.md for detailed API documentation and deployment instructions.
After successful deployment:
| URL | Purpose |
|---|---|
https://concieragent.{domain}/invitation |
QR code for Hologram connection |
https://concieragent.{domain}/health |
Health check endpoint |
https://concieragent.{domain}/welcome |
Welcome message API |
- Open your browser to
https://concieragent.{domain}/invitation - Open the Hologram app on your phone
- Scan the QR code
- Start chatting!
# View pods (Kubernetes)
kubectl get pods -n demos -l app=concieragent
kubectl get pods -n demos -l app=concieragent-vsa
# View logs
kubectl logs -n demos -l app=concieragent -f
kubectl logs -n demos -l app=concieragent-vsa -f
# View ingress
kubectl get ingress -n demos | grep concieragentconcieragent/
βββ π src/
β βββ bot.ts # Express server entry point
β βββ agent/
β β βββ TravelAgent.ts # Main orchestration logic
β β βββ McpClient.ts # MCP protocol client
β βββ providers/
β β βββ types.ts # Provider interfaces
β β βββ openai-provider.ts # OpenAI adapter
β β βββ claude-provider.ts # Claude adapter
β β βββ ollama-provider.ts # Ollama adapter
β β βββ index.ts # Provider factory
β βββ controllers/ # Route handlers
β β βββ health.controller.ts # Health check endpoint
β β βββ message.controller.ts # Message webhook handler
β β βββ connection.controller.ts # Connection webhook handler
β β βββ index.ts # Controller exports
β βββ config/ # Configuration modules
β β βββ app.config.ts # Application configuration
β β βββ index.ts # Config exports
β βββ dto/ # Data Transfer Objects
β β βββ index.ts # DTO definitions
β βββ common/ # Shared utilities
β β βββ enums/ # Enum definitions
β β βββ index.ts # Common exports
β βββ i18n/ # Internationalization
β βββ en/msg.json # English messages
β βββ es/msg.json # Spanish messages
β βββ fr/msg.json # French messages
βββ π mcp_travelassistant/
β βββ servers/
β βββ flight_server/ # βοΈ Flight search
β βββ hotel_server/ # π¨ Hotel search
β βββ event_server/ # π Event discovery
β βββ geocoder_server/ # π Geocoding
β βββ weather_server/ # π€οΈ Weather
β βββ finance_server/ # π° Finance
βββ π scripts/
β βββ docker-run.sh # VS Agent startup
β βββ entrypoint.sh # Docker entrypoint script
βββ π³ docker-dev/ # Development Docker setup
β βββ docker-compose.yml # Docker compose config
β βββ ngrok-config.yml # Ngrok configuration
β βββ README.md # Dev setup instructions
βββ π package.json # Dependencies
βββ βοΈ tsconfig.json # TypeScript config
βββ βοΈ tsconfig.build.json # Build-specific TypeScript config
βββ π .eslintrc.js # ESLint configuration
βββ π .prettierrc # Prettier configuration
βββ π .npmrc # pnpm configuration
βββ π README.md # You are here!
- Multi-LLM support (OpenAI, Claude, Ollama)
- Internationalization (EN, ES, FR)
- Conversation context memory
- Smart token management
- Live deployment (24/7 availability)
- CI/CD pipeline
- Credential/passport verification
- More languages (DE, IT, PT, JA, ZH)
- Car rental MCP server
- Restaurant reservations
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE for details.
- Hologram - Decentralized messaging platform
- Anthropic - MCP protocol specification
- OpenAI - GPT-4o and function calling
- Ollama - Local LLM runtime
- 2060 OΓ - VS Agent infrastructure
Built with β€οΈ for the Hologram ecosystem by Maxime Mansiet