Content
# LiteAPI MCP Server
MCP server for LiteAPI using Next.js and mcp-handler (Streamable HTTP). Deploys to Vercel.
## Quick Start
```bash
npm install
npm run dev
```
MCP endpoint: `http://localhost:3000/api/mcp`
## ChatGPT Setup
Add to ChatGPT MCP Server URL:
```
https://mcp.liteapi.travel/api/mcp?apiKey=YOUR_LITEAPI_KEY
```
Or set `LITEAPI_API_KEY` in Vercel environment variables for single-tenant deployment.
---
## Features
- 🔄 **Dynamic Tool Generation**: Automatically generates MCP tools from OpenAPI specs
- 📚 **Multiple API Modules**: Supports Search, Booking, Vouchers, Analytics, Static, Loyalty, and Supply Customization APIs
- 🔐 **API Key Authentication**: Secure API key management via environment variables
- 🎯 **Type-Safe**: Uses Zod for schema validation and type safety
- 🚀 **Easy Integration**: Works with Claude Desktop and other MCP-compatible clients
## Prerequisites
- Node.js 18+
- npm or yarn
- LiteAPI API Key
## Installation
1. Clone the repository and install dependencies:
```bash
npm install
```
2. Build the TypeScript code:
```bash
npm run build
```
3. Set your LiteAPI API key as an environment variable:
```bash
export LITEAPI_API_KEY=your_api_key_here
```
## Usage
### Running the Server
The server runs on stdio (standard input/output) for MCP communication:
```bash
npm start
```
Or for development with auto-reload:
```bash
npm run dev
```
## Testing
### Quick Test
Test that the server works correctly:
```bash
export LITEAPI_API_KEY=your_api_key_here
npm test
```
This will connect to the server and list all available tools.
### Option 1: Using MCP Inspector (Recommended for Development)
MCP Inspector is a browser-based tool for testing and debugging MCP servers. It's perfect for inspecting tools, testing calls, and debugging without needing Claude Desktop.
1. **Install and run MCP Inspector:**
```bash
# Make sure your API key is set
export LITEAPI_API_KEY=your_api_key_here
# Run the inspector (it will automatically start your server)
npm run inspect
# Or directly:
npx @modelcontextprotocol/inspector node dist/index.js
```
2. **The inspector will:**
- Open a browser window at `http://localhost:6274`
- Start a proxy server on port 6277
- Display all available tools with their schemas
- Allow you to test tool calls interactively
- Show real-time notifications and responses
3. **In the Inspector UI, you can:**
- **Tools Tab**: See all available tools, their descriptions, and input schemas
- **Test Tools**: Click on any tool to test it with sample parameters
- **View Responses**: See formatted JSON responses from API calls
- **Debug**: Check for errors and validation issues
**Note:** Make sure Node.js 22.7.5+ is installed for MCP Inspector (check with `node --version`).
### Option 2: Testing with a Simple Client Script
Create a test script to verify the server works:
```bash
# Create test-client.js
cat > test-client.js << 'EOF'
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
async function test() {
const transport = new StdioClientTransport({
command: 'node',
args: ['dist/index.js'],
env: { LITEAPI_API_KEY: process.env.LITEAPI_API_KEY }
});
const client = new Client({
name: 'test-client',
version: '1.0.0'
}, {
capabilities: {}
});
await client.connect(transport);
// List all available tools
const tools = await client.listTools();
console.log(`Found ${tools.tools.length} tools:`);
tools.tools.forEach(tool => {
console.log(` - ${tool.name}: ${tool.description}`);
});
await client.close();
}
test().catch(console.error);
EOF
# Run the test
export LITEAPI_API_KEY=your_api_key_here
node test-client.js
```
### Option 3: Connecting to Claude Desktop
1. **Get the absolute path to your project:**
```bash
# macOS/Linux
pwd
# Output: /Users/nicholas/Documents/nuitee/liteapi/mcp-server
# Windows (PowerShell)
(Get-Location).Path
```
2. **Open Claude Desktop configuration file:**
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
If the file doesn't exist, create it with an empty JSON object: `{}`
3. **Add the server configuration:**
```json
{
"mcpServers": {
"liteapi": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/run-mcp-server.mjs"],
"env": {
"LITEAPI_API_KEY": "your_api_key_here"
}
}
}
}
```
**Important**:
- Use `run-mcp-server.mjs` instead of `dist/index.js` to ensure ES modules work correctly
- Replace `/absolute/path/to/mcp-server` with the actual absolute path to this project
- Replace `your_api_key_here` with your actual LiteAPI API key
- On Windows, use forward slashes `/` or escaped backslashes `\\` in the path
**Example for macOS:**
```json
{
"mcpServers": {
"liteapi": {
"command": "node",
"args": ["/Users/nicholas/Documents/nuitee/liteapi/mcp-server/run-mcp-server.mjs"],
"env": {
"LITEAPI_API_KEY": "sand_c0155ab8-c683-4f26-8f94-b5e92c5797b9"
}
}
}
}
```
**Note:** The `.mjs` wrapper script ensures Node.js correctly recognizes ES modules when running from Claude Desktop. If you prefer to use `dist/index.js` directly, make sure Claude Desktop runs it from the project root directory.
4. **Restart Claude Desktop** completely (quit and reopen)
5. **Verify connection:**
- Open Claude Desktop
- Start a new conversation
- Look for MCP tools indicator (usually shows available tools)
- Try asking: "What LiteAPI tools are available?" or "Search for hotels in Paris"
### Troubleshooting Connection Issues
**If Claude Desktop doesn't recognize the server:**
1. **Check the path is correct:**
```bash
# Test that the file exists and is executable
ls -la /absolute/path/to/mcp-server/dist/index.js
node /absolute/path/to/mcp-server/dist/index.js
```
2. **Check Claude Desktop logs:**
- macOS: `~/Library/Logs/Claude/claude_desktop.log`
- Windows: `%APPDATA%\Claude\logs\`
- Look for errors related to MCP server startup
3. **Verify JSON syntax:**
```bash
# Validate JSON syntax
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python3 -m json.tool
```
4. **Test server manually:**
```bash
export LITEAPI_API_KEY=your_api_key_here
node dist/index.js
# Should output: "Loaded X endpoints from Y OpenAPI specs"
# Should output: "LiteAPI MCP Server running on stdio"
```
5. **Check Node.js version:**
```bash
node --version
# Should be 18.0.0 or higher
```
### Available Tools
The server automatically generates tools from all OpenAPI specs in the `openapi-schemas/` directory. Each endpoint becomes a callable MCP tool with:
- **Operation ID** as the tool name
- **Description** from the OpenAPI spec
- **Parameters** automatically extracted and validated
Example tools include:
- `post_hotels_rates` - Search for hotel rates
- `get_prebooks_{prebookId}` - Retrieve prebook details
- `post_bookings` - Create a booking
- And many more...
## Project Structure
```
.
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # Main MCP server implementation
│ └── utils/
│ ├── openapi-parser.ts # OpenAPI spec parsing
│ ├── schema-converter.ts # OpenAPI to Zod conversion
│ └── api-client.ts # HTTP client for API calls
├── openapi-schemas/ # OpenAPI specification files
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
```
## Development
### Building
```bash
npm run build
```
### Watching for Changes
```bash
npm run watch
```
### Adding New OpenAPI Specs
1. Add your OpenAPI spec JSON file to `openapi-schemas/`
2. Update the `specFiles` array in `src/utils/openapi-parser.ts` if needed
3. Rebuild and restart the server
## Environment Variables
- `LITEAPI_API_KEY` (required): Your LiteAPI API key for authentication
## API Modules
The server supports the following LiteAPI modules:
- **Search** (`search.json`) - Hotel search and rate retrieval
- **Booking** (`booking.json`) - Booking management and prebook operations
- **Vouchers** (`voucher.json`) - Voucher creation and management
- **Analytics** (`analytics.json`) - Analytics and reporting
- **Static** (`static.json`) - Static data endpoints
- **Loyalty** (`loyalty.json`) - Loyalty program operations
- **Supply Customization** (`supplyCustomization.json`) - Supply customization
## Error Handling
The server includes comprehensive error handling:
- Missing API keys are caught at startup
- Invalid tool calls return descriptive error messages
- API request failures are properly formatted and returned
## License
MIT
## Support
For issues related to:
- **MCP Server**: Open an issue in this repository
- **LiteAPI**: Contact LiteAPI support
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
cc-switch
All-in-One Assistant for Claude Code, Codex & Gemini CLI across platforms.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers