SC-MCP-SERVER
Click on "Install 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: Naver Flight MCP
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kumaravel-V10/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server