Travel Assistant MCP Server
A production-ready MCP server for intelligent travel planning that integrates 16 tools, live APIs, and a gamification system to help users plan trips, track expenses, and discover events.
README
Travel Assistant MCP Server
A production-ready Model Context Protocol (MCP) server for intelligent travel planning.
It combines 16 powerful tools, live API integrations, database persistence, and a gamification system—perfect for the Vibe Summer Challenge 2025.
🌐 Live Deployment
| Endpoint | URL |
|---|---|
| MCP Server | https://travel-assistant-mcp.virtuosoofcoding633.workers.dev/mcp |
| Health Check | https://travel-assistant-mcp.virtuosoofcoding633.workers.dev/health |
✨ Feature Highlights
- 16 MCP tools (weather, events, expenses, itinerary, gamification)
- Real APIs: FreeCurrencyAPI, Google Places, Open-Meteo, REST Countries
- Gamification: Points, levels, unlockable rewards
- Cloudflare Workers + D1 (SQLite) for serverless scale
- TypeScript + Hono.js + Drizzle ORM for type-safe development
- <7 ms average cold-start; sub-second responses
📁 Project Structure
travel-assistant-mcp/
├── src/
│ ├── index.ts # Worker entry
│ ├── tools/ # 16 MCP tool handlers
│ ├── db/ # Drizzle schema & migrations
│ └── lib/ # API helpers & gamification logic
├── drizzle.config.ts
├── wrangler.toml
├── package.json
├── .dev.vars.example
└── README.md
🚀 Quick Start
1. Clone & Install
git clone https://github.com/Virtuoso633/travel-assistant-mcp.git
cd travel-assistant-mcp
npm install
2. Environment Variables
cp .dev.vars.example .dev.vars
# Edit .dev.vars and add any API keys (optional – fallbacks provided)
3. Local Database & Dev Server
npm run db:generate # create drizzle client
npm run db:migrate # apply migrations locally
npm run dev # wrangler dev --local (http://localhost:8787)
4. Test Locally
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
🏗️ Deploy to Cloudflare
Login & Deploy
npx wrangler login # OAuth or API token
npm run deploy # wrangler deploy
Remote Migration
npm run db:migrate:prod # applies migrations to D1 prod DB
🔧 MCP Usage Examples
List Tools
curl -X POST https://travel-assistant-mcp.virtuosoofcoding633.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Create Itinerary
curl -X POST https://travel-assistant-mcp.virtuosoofcoding633.workers.dev/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"tools/call",
"params":{
"name":"create_itinerary",
"arguments":{
"destination":"Kyoto, Japan",
"duration":3,
"startDate":"2025-09-15",
"interests":["culture","food"],
"budget":"mid-range",
"travelStyle":"solo",
"userId":"demo_user"
}
}
}'
🖥️ Claude Desktop Integration
- Create or edit:
~/.config/claude-desktop/claude_desktop_config.json - Add:
{ "mcpServers": { "travel-assistant": { "command": "npx", "args": ["@modelcontextprotocol/server-http", "https://travel-assistant-mcp.virtuosoofcoding633.workers.dev/mcp"] } } } - Restart Claude Desktop and use prompts like:
Plan a 5-day trip to Tokyo with a mid-range budget.
📜 API Reference (MCP)
tools/list
POST /mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
tools/call
POST /mcp
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tool_name",
"arguments": { /* tool-specific */ }
}
}
🛠️ Scripts
npm run dev # local Cloudflare Worker
npm run deploy # deploy to Cloudflare
npm run db:generate # generate drizzle client
npm run db:migrate # migrate local DB
npm run db:migrate:prod # migrate prod D1
npm run test # MCP inspector
npm run lint # eslint
npm run type-check # TypeScript strict check
🌤️ 16 MCP Tools (Quick List)
| Category | Tool | Description |
|---|---|---|
| Weather | get_weather |
5-day forecast |
compare_weather |
Compare two locations | |
| Events | find_events |
Google Places search |
save_event |
Save place to plan | |
get_saved_places |
List saved places | |
get_place_details |
Detailed place info | |
| Expenses | add_expense |
Track expense with FX |
convert_currency_live |
Live conversion | |
get_live_exchange_rates |
Multi-currency rates | |
get_expense_summary |
Totals & breakdown | |
| Itinerary | create_itinerary |
AI travel plan |
optimize_itinerary |
Route/time optimizer | |
get_user_itineraries |
List itineraries | |
get_itinerary_details |
Itinerary detail | |
| Gamification | get_user_progress |
Points/levels |
unlock_reward |
Redeem reward |
⚙️ Environment Variables (.dev.vars.example)
# ---------------- Required ----------------
DB_URL="file:./local.db"
# -------------- Optional Keys --------------
GOOGLE_MAPS_API_KEY=""
FREE_CURRENCY_API_KEY=""
BETTER_AUTH_SECRET=""
# -------------- Development ---------------
NODE_ENV="development"
DEBUG="true"
📖 Contributing
git checkout -b feature/amazing-feature
npm run lint && npm run type-check
git commit -m "Add amazing feature"
git push origin feature/amazing-feature
# open PR
📄 License
MIT — see LICENSE.
Built with ❤️ for the Vibe Summer Challenge 2025
Demo Video URL :: https://drive.google.com/drive/folders/1_xjZcIVCSt5ZB9I2UmvN1YusxnDJO3pq?usp=sharing
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器