Skip to main content
Glama
liteapi-travel

LiteAPI MCP Server

Official
README.md
# 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