SC-MCP-SERVER
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SC-MCP-SERVERbook a one-way flight from Helsinki to New York on May 1st"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SC-MCP-SERVER — Create Booking Agent
MCP server for AI agents to execute the complete NevioServiceCenter flight booking flow. Provides 10 tools against the live APIM gateway with automatic JWT token management.
Quick Start
cd SC-MCP-SERVER
pip install -r requirements.txt
python check.py # verify all 18 checks pass
python server.py # start in stdio modeRelated MCP server: ts-travel-mcp-server
Architecture
┌─────────────────────────────────────────────────────────┐
│ AI Assistant │
│ (Claude / Copilot / Custom Agent) │
└──────────────────────┬──────────────────────────────────┘
│ MCP Protocol (stdio / SSE)
▼
┌─────────────────────────────────────────────────────────┐
│ SC-MCP-SERVER v2.0 │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 10 Booking Agent Tools │ │
│ │ + 1 Prompt (booking_flow guide) │ │
│ └──────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ APIM Client │ │
│ │ + Token Mgr │ │
│ └──────┬───────┘ │
└─────────────────────────┼────────────────────────────────┘
│ HTTPS + JWT
▼
┌──────────────────────────┐
│ APIM Gateway │
│ (Azure API Management) │
│ │
│ /token │
│ /shop/flights │
│ /create-cart │
│ /checkout/passengers │
│ /services │
│ /seatmap │
│ /seat/services │
│ /cart/retrieve │
│ /checkoutConfirm │
│ /orders/retrieve │
└──────────────────────────┘Booking Flow (10 Tools)
Token management is automatic — the server fetches, caches (~28 min), and refreshes JWT tokens transparently.
Flow Sequence
SearchFlights → CreateCart → UpdatePassengers → [GetServiceCatalog] → [GetSeatMap]
│ │ │ │ │
SKU IDs checkoutId passenger IDs service SKUs seat grid
│ │ │ │
└──────────────┴───────────────────┴───────────────────┘
│
[AddAncillaries] / [AddSeats]
│
RetrieveCart
│
ConfirmBooking
│
orderId / PNR
│
RetrieveOrderSteps in [ ] are optional.
Tool Reference
# | Tool | Endpoint | Purpose |
1 |
|
| Search flight offers |
2 |
|
| Create booking cart from SKU IDs |
3 |
|
| Add passenger identity & contact |
4 |
|
| Browse ancillary services |
5 |
|
| View seat availability |
6 |
|
| Assign seats |
7 |
|
| Add bags, meals, wifi |
8 |
|
| Review cart before confirm |
9 |
|
| Create order (PNR) — irreversible |
10 |
|
| Fetch confirmed order |
Rules
Thread
checkoutIdfrom step 2 through steps 3–9Always call
retrieve_cartbeforeconfirm_bookingconfirm_bookingis irreversible — confirm with user firstAt least one passenger must have
contactDetails(email + mobile)Dates use
YYYY-MM-DDformat
1. search_flights
Parameter | Type | Required | Description |
| string | Yes |
|
| string | Yes | IATA code (e.g. |
| string | Yes | IATA code (e.g. |
| string | Yes |
|
| list | Yes |
|
| string | No |
|
| string | No | Required for |
2. create_cart
Parameter | Type | Required | Description |
| list[str] | Yes | SKU IDs from search results |
| string | No | Default |
| string | No | Default |
Key outputs: checkoutId (steps 3–9), passengers[].passengerId (step 3), connections[].flights[].id (step 5)
3. update_passengers
Parameter | Type | Required | Description |
| string | Yes | From |
| list[dict] | Yes | Identity + contact details |
4. get_service_catalog
Parameter | Type | Required | Description |
| string | Yes | From |
| string | No | e.g. |
5. get_seat_map
Parameter | Type | Required | Description |
| string | Yes | From |
| string | Yes | Flight segment ID from |
| string | No | e.g. |
6. add_seats
Parameter | Type | Required | Description |
| string | Yes | From |
| list[dict] | Yes |
|
7. add_ancillaries
Parameter | Type | Required | Description |
| string | Yes | From |
| list[dict] | Yes |
|
8. retrieve_cart
Parameter | Type | Required | Description |
| string | Yes | From |
9. confirm_booking
Parameter | Type | Required | Description |
| string | Yes | From |
10. retrieve_order
Parameter | Type | Required | Description |
| string | Yes | From |
Configuration
Variable | Default | Description |
|
| APIM gateway URL |
|
| JWT token cache TTL in seconds |
|
| Transport: |
|
| HTTP port (SSE mode) |
|
| HTTP host (SSE mode) |
| (empty) | Bearer token for HTTP auth |
|
| HTTP request timeout in seconds |
Connection Guides
Claude Desktop
{
"mcpServers": {
"sc-booking-agent": {
"command": "python",
"args": ["C:/path/to/SC-MCP-SERVER/server.py"]
}
}
}GitHub Copilot (VS Code)
Add to .vscode/mcp.json:
{
"servers": {
"sc-booking-agent": {
"command": "python",
"args": ["C:/path/to/SC-MCP-SERVER/server.py"]
}
}
}HTTP/SSE
python server.py --transport sse --port 3100{
"mcpServers": {
"sc-booking-agent": {
"url": "http://localhost:3100/sse"
}
}
}REST API (SSE mode)
# List tools
curl http://localhost:3100/api/tools
# Call a tool
curl -X POST http://localhost:3100/api/tools/search_flights \
-H "Content-Type: application/json" \
-d '{"trip_type":"OW","departure_location":"HEL","arrival_location":"JFK","departure_date":"2026-07-24","passengers":[{"passengerTypeCode":"ADT","discountCode":"ADT"}]}'Project Structure
SC-MCP-SERVER/
├── server.py # Entry point — 10 tools, 1 prompt, SSE/stdio
├── config.py # APIM + transport configuration
├── check.py # Readiness check (18 checks)
├── requirements.txt # Python dependencies
├── README.md # This file
└── src/
└── tools/
│ └── booking_tools.py # 10 booking tool implementations
└── utils/
├── apim_client.py # APIM HTTP client with auto JWT auth
└── token_manager.py # JWT token fetch, cache, refreshToken Management
First API call →
TokenManagercallsPOST {APIM_BASE_URL}/tokenJWT extracted from
AuthTokencookie (fallback: response body,Set-Cookieheader)Cached for
APIM_TOKEN_TTLseconds (default ~28 min)Auto-refreshes on expiry
On HTTP 401, invalidates token and retries once with a fresh token
No manual token handling needed.
Dependencies
Package | Purpose |
| Model Context Protocol framework |
| HTTP client for APIM calls |
| ASGI server (SSE transport) |
This server cannot be deployed
Maintenance
Related MCP Connectors
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
Search and compare flight offers through a cache-aware Streamable HTTP MCP server for AI agents.
The Turkish Airlines MCP server enables AI models to securely access live airline data and services, designed for developers and power users to build and test AI-driven travel solutions. It provides 13 specialized tools covering flight information (real-time status, schedules, availability), booking management (PNR details, check-in, baggage allowances), and personalized services (Miles&Smiles profiles, flight history, promotions). The server uses OAuth 2.0 authentication and is deployed on cloud-native infrastructure with enterprise-level security.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server built with mcp-framework that provides tools for flight-related operations. This appears to be a template or starter project with example tools that can be extended for flight search and booking functionality.1-
- AlicenseAqualityDmaintenanceA full-stack travel booking MCP server that enables AI clients to search flights, make reservations, cancel bookings, and manage persistent state across sessions.914 npm5MIT
- FlicenseNot gradedqualityDmaintenanceMCP server providing flight search, web search, URL fetching with JS rendering, and documentation search tools.-
- AlicenseBqualityDmaintenanceEnables AI assistants to query flight routes, real-time flight tracking, weather, and transfer flights via standardized MCP tools.10MIT