snehalsaurabh/Travelio-MCP
If you are the rightful owner of Travelio-MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Food Travel MCP Server is a Model Context Protocol server that provides restaurant search and food recommendation tools for AI clients, integrating with Google Places API for real-time data.
Food Travel MCP Server
A Model Context Protocol (MCP) server that provides restaurant search and food recommendation tools for AI clients. This server integrates with Google Places API to deliver real-time restaurant data to AI applications.
🎯 What is MCP?
Model Context Protocol (MCP) enables AI applications to access external tools and data sources through a standardized interface.
- MCP Server (this project): Exposes food-related tools to AI clients
- MCP Client (Claude Desktop, custom AI agents): Calls our tools based on user prompts
How it Works
User: "Find Italian restaurants near me"
↓
AI Client (Claude/Custom Agent)
↓ (analyzes prompt, decides to call search_restaurants tool)
Our MCP Server
↓ (calls Google Places API)
Real Restaurant Data
↓ (returns structured JSON to AI client)
AI Client formats response for user
🚀 Features
- Real-time restaurant search using Google Places API
- Location-based filtering with customizable radius
- Cuisine-type filtering (Italian, Chinese, etc.)
- Flexible parameters (max results, price level)
- Database caching for improved performance
- Comprehensive testing suite
- Production-ready architecture
📋 Prerequisites
- Python 3.8 or higher
- Google Places API key (Get one here)
- Git
🛠️ Installation
Step 1: Clone the Repository
git clone <your-repo-url>
cd Food-Travel-MCP
Step 2: Create Virtual Environment
# Create virtual environment
python -m venv venv
# Activate it
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
Step 3: Install Dependencies
pip install -r requirements.txt
Step 4: Environment Configuration
# Copy environment template
cp .env.example .env
# Edit .env file and add your Google Places API key
# Replace "your_google_places_api_key_here" with your actual API key
Required environment variables in .env:
GOOGLE_PLACES_API_KEY=your_actual_api_key_here
DATABASE_URL=sqlite:///./food_travel.db
DEBUG=false
Step 5: Initialize Database
python scripts/init_db.py
You should see:
Creating database tables...
Database tables created successfully!
🧪 Testing
Quick Test (Recommended)
# Run all tests in sequence
python tests/run_all_tests.py
Individual Test Components
# Test Google Places API integration
python tests/test_components.py
# Test MCP tools functionality
python tests/test_mcp_tools.py
Using Pytest (Advanced)
# Install pytest if not already included
pip install pytest pytest-asyncio
# Run all tests
pytest tests/ -v
# Run with output
pytest tests/ -v -s
Expected Test Output
✅ Component Tests: Verify Google Places API connectivity and data formatting
✅ MCP Tools Tests: Verify tools accept parameters and return proper JSON responses
✅ Integration Tests: End-to-end functionality verification
🎮 Running the Server
Start the MCP Server
python -m src.food_mcp.server
Expected output:
INFO Food Travel MCP Server initialized
INFO Restaurant tools registered
INFO Starting Food Travel MCP Server
[Server running and waiting for MCP client connections...]
Server Endpoints
The server exposes the following MCP tools:
search_restaurants
Search for restaurants based on location and preferences.
Parameters:
location(required): "New York, NY" or "40.7128,-74.0060"cuisine_type(optional): "Italian", "Chinese", "Pizza", etc.radius_km(optional): Search radius in kilometers (default: 10)max_results(optional): Maximum results to return (default: 10)
Example Response:
{
"success": true,
"location": "New York, NY",
"total_results": 5,
"restaurants": [
{
"google_place_id": "ChIJ...",
"name": "Tony's Italian Restaurant",
"address": "123 Main St, New York, NY",
"latitude": 40.7128,
"longitude": -74.0060,
"rating": 4.5,
"user_ratings_total": 127,
"price_level": 2,
"types": ["restaurant", "food"]
}
]
}
📁 Project Structure
Food-Travel-MCP/
├── 📄 README.md # This file
├── 📄 requirements.txt # Python dependencies
├── 📄 .env.example # Environment template
├── 📄 .gitignore # Git ignore rules
│
├── 📁 config/ # Configuration
│ ├── __init__.py
│ └── settings.py # Application settings
│
├── 📁 src/food_mcp/ # Main MCP server package
│ ├── __init__.py
│ ├── server.py # MCP server entry point
│ │
│ ├── 📁 models/ # Database models
│ │ ├── __init__.py
│ │ ├── base.py # Database base & session
│ │ └── restaurant.py # Restaurant cache model
│ │
│ ├── 📁 clients/ # External API clients
│ │ ├── __init__.py
│ │ └── google_places.py # Google Places API client
│ │
│ ├── 📁 services/ # Business logic layer
│ │ ├── __init__.py
│ │ └── restaurant_service.py
│ │
│ └── 📁 tools/ # MCP tool definitions
│ ├── __init__.py
│ └── restaurant_tools.py # Restaurant search tools
│
├── 📁 tests/ # Test suite
│ ├── __init__.py
│ ├── conftest.py # Pytest configuration
│ ├── test_components.py # Component tests
│ ├── test_mcp_tools.py # MCP tools tests
│ └── run_all_tests.py # Test runner
│
└── 📁 scripts/ # Utility scripts
└── init_db.py # Database initialization
🔧 Development Workflow
1. Development Setup
# Make sure virtual environment is activated
source venv/bin/activate # or venv\Scripts\activate on Windows
# Install development dependencies
pip install -r requirements.txt
# Set up pre-commit hooks (optional)
pip install pre-commit
pre-commit install
2. Making Changes
# Run tests before making changes
python tests/run_all_tests.py
# Make your changes...
# Run tests again to ensure nothing broke
python tests/run_all_tests.py
# Test server startup
python -m src.food_mcp.server
3. Adding New Tools
- Create tool function in
src/food_mcp/tools/ - Register tool in
__init__.py - Add corresponding service logic in
src/food_mcp/services/ - Write tests in
tests/ - Update documentation
🌟 Usage Examples
With Claude Desktop
- Install Claude Desktop
- Configure MCP server in Claude's settings
- Ask: "Find Italian restaurants near Times Square"
With Custom MCP Client
# Example client code
import asyncio
from mcp_client import MCPClient
async def find_restaurants():
client = MCPClient("food-travel-mcp")
result = await client.call_tool(
"search_restaurants",
location="San Francisco, CA",
cuisine_type="Italian",
max_results=5
)
print(result)
🚧 Current Phase: Phase 1 - Basic Restaurant Search
✅ Completed
- Production-ready project structure
- Google Places API integration
- Basic restaurant search tool
- Database models and caching structure
- Comprehensive testing suite
- Error handling and validation
🔄 In Progress
- Database caching implementation
- Performance optimization
- Additional restaurant tools (menu, reviews)
📅 Future Phases
- Phase 2: User personalization integration with existing backend
- Phase 3: Menu data and ordering capabilities
- Phase 4: Enhanced AI features and trend analysis
- Phase 5: Production deployment and monitoring
🐛 Troubleshooting
Common Issues
Import Error: ModuleNotFoundError: No module named 'src'
# Make sure you're running from project root
cd Food-Travel-MCP
python scripts/init_db.py
Google Places API Error
# Check your API key in .env file
cat .env | grep GOOGLE_PLACES_API_KEY
# Verify API key has Places API enabled in Google Console
Database Issues
# Reinitialize database
rm food_travel.db # if using SQLite
python scripts/init_db.py
Test Failures
# Check API key configuration
python -c "from dotenv import load_dotenv; import os; load_dotenv(); print('API Key configured:', bool(os.getenv('GOOGLE_PLACES_API_KEY')))"
# Run individual test components
python tests/test_components.py
📞 Support
For issues and questions:
- Check the troubleshooting section above
- Review test output for specific errors
- Ensure all prerequisites are met
- Verify Google Places API key is valid and has proper permissions
🎉 Quick Start Summary
# 1. Setup
git clone <repo> && cd Food-Travel-MCP
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# 2. Configure
cp .env.example .env
# Edit .env with your Google Places API key
# 3. Initialize
python scripts/init_db.py
# 4. Test
python tests/run_all_tests.py
# 5. Run
python -m src.food_mcp.server
🎯 You're ready to integrate with AI clients and start finding restaurants!