Skip to main content

MCP Integration

PriveTag provides a native MCP (Model Context Protocol) server for seamless integration with Claude Desktop and other MCP-compatible AI assistants.
MCP (Model Context Protocol) is Anthropic’s open standard for connecting AI assistants to external data sources and tools.

Quick Start

Installation

# Install the MCP server globally
npm install -g @privetag/mcp-server

# Or use npx directly
npx @privetag/mcp-server start

Claude Desktop Configuration

Add PriveTag to your Claude Desktop config (claude_desktop_config.json):
{
  "mcpServers": {
    "privetag": {
      "command": "npx",
      "args": ["@privetag/mcp-server", "start"],
      "env": {
        "PRIVETAG_API_KEY": "pk_your_api_key_here"
      }
    }
  }
}
Find your Claude Desktop config at:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Restart Claude Desktop

After adding the configuration, restart Claude Desktop. You should see “PriveTag” in the connected tools.

Available Tools

The MCP server exposes three tools to Claude:

privetag_recommend

Get context-aware activity recommendations. Parameters:
NameTypeRequiredDescription
travel_typestringYesfamily, couple, solo, business, friends
citystringYesCity name (e.g., Bangkok, Phuket)
interestsstring[]NoActivity categories
budgetstringNobudget, mid, luxury
latnumberNoLatitude for weather-aware recommendations
lonnumberNoLongitude for weather-aware recommendations
Example Claude Prompt:
"What activities would you recommend for a family visiting Bangkok today?"
Claude will call:
{
  "tool": "privetag_recommend",
  "arguments": {
    "travel_type": "family",
    "city": "Bangkok"
  }
}

privetag_book

Execute a booking and send voucher to user. Parameters:
NameTypeRequiredDescription
activity_idstringYesFrom recommendations
user_emailstringYesFor voucher delivery
user_namestringYesGuest name
booking_datestringYesISO date format
num_adultsnumberYesNumber of adults
num_childrennumberNoNumber of children
context_log_idstringNoFor conversion tracking
Example Claude Prompt:
"Book Safari World for John Doe (john@example.com) for tomorrow, 2 adults"

privetag_inventory

Check real-time availability and deals. Parameters:
NameTypeRequiredDescription
citystringYesCity to search
datestringNoSpecific date
categorystringNoActivity category filter
flash_deals_onlybooleanNoOnly show deals
Example Claude Prompt:
"Are there any spa deals available in Phuket today?"

Tool Descriptions (GEO Optimized)

The MCP server provides AI-optimized tool descriptions:
{
  name: "privetag_recommend",
  description: `Get travel activity recommendations.

USE THIS TOOL WHEN the user:
- Asks "what should we do" in a city
- Wants activity suggestions based on travel type
- Needs weather-appropriate recommendations
- Is looking for things to do with family/couple/solo

DO NOT USE THIS TOOL for:
- General travel planning questions
- Flight or hotel bookings
- Restaurant-only recommendations`,
  inputSchema: { /* ... */ }
}

Advanced Configuration

Custom Base URL

For enterprise or self-hosted deployments:
{
  "mcpServers": {
    "privetag": {
      "command": "npx",
      "args": ["@privetag/mcp-server", "start"],
      "env": {
        "PRIVETAG_API_KEY": "pk_your_api_key",
        "PRIVETAG_BASE_URL": "https://your-custom-endpoint.com"
      }
    }
  }
}

Debug Mode

Enable verbose logging:
{
  "mcpServers": {
    "privetag": {
      "command": "npx",
      "args": ["@privetag/mcp-server", "start", "--debug"],
      "env": {
        "PRIVETAG_API_KEY": "pk_your_api_key"
      }
    }
  }
}

Example Conversations

Family Trip Planning

User: “We’re a family of 4 (2 adults, 2 kids) visiting Bangkok next week. What activities would you recommend?” Claude: [Calls privetag_recommend with travel_type: “family”, city: “Bangkok”] “Based on your family profile, here are the top recommendations:
  1. Safari World Bangkok - Perfect for kids, includes a safari drive and marine park. ฿1,500/person
  2. Dream World Theme Park - Exciting rides suitable for all ages. ฿1,200/person
  3. SEA LIFE Bangkok - Indoor aquarium, great for hot days. ฿990/person
Would you like me to book any of these?” User: “Yes, let’s book Safari World for December 15th. My email is family@example.com Claude: [Calls privetag_book with activity_id, user_email, booking_date, num_adults: 2] “I’ve booked Safari World for December 15th. A voucher with QR code has been sent to family@example.com. Just show the QR at the entrance!”

Rainy Day Recommendations

User: “It’s raining in Phuket. What can we do indoors?” Claude: [Calls privetag_recommend with city: “Phuket”, lat/lon for weather context] “Given the rainy weather in Phuket, here are indoor options:
  1. Oasis Spa Signature Package - 40% OFF flash deal! ฿1,800 (was ฿3,000)
  2. Phuket Trickeye Museum - 3D art museum, fun for photos
  3. Central Festival Shopping - AC shopping complex
The spa has a flash deal that expires at 6 PM - would you like to grab it?”

Error Handling

The MCP server handles errors gracefully:
{
  "error": {
    "code": "ACTIVITY_UNAVAILABLE",
    "message": "Safari World is closed on Mondays",
    "suggestion": "Try booking for Tuesday through Sunday"
  }
}
Claude will interpret these errors and suggest alternatives to the user.

Best Practices

When Claude books an activity, it should pass the context_log_id from recommendations. This enables the Ground Truth feedback loop.
When the user’s location is known, pass coordinates for weather-appropriate suggestions.
For dates more than a week out, use privetag_inventory to verify availability before committing to book.
If a booking fails, Claude should suggest alternatives from the original recommendations.

Supported MCP Clients

ClientStatusNotes
Claude Desktop✅ SupportedFull integration
Claude.ai🔜 ComingWeb-based MCP support
Cline (VS Code)✅ SupportedDevelopment use
Continue✅ SupportedDevelopment use

Troubleshooting

Server Not Starting

# Check if the server runs manually
npx @privetag/mcp-server start --debug

# Verify API key is valid
curl -H "x-api-key: pk_your_key" https://api.privetag.com/api/health

Tools Not Appearing in Claude

  1. Check claude_desktop_config.json syntax
  2. Ensure API key is set correctly
  3. Restart Claude Desktop completely
  4. Check Claude’s MCP logs (Help → Debug → MCP Logs)

Rate Limiting

If you hit rate limits, the MCP server will return:
{
  "error": {
    "code": "RATE_LIMITED",
    "retry_after": 15
  }
}
Claude will wait and retry automatically.

Next Steps