DSP Booking 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., "@DSP Booking MCP Serverbook a meeting room for tomorrow at 2pm"
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.
DSP-MCP
PoC for DSP Booking flow through MCP Server.
MCP Config stdio
$ pnpm run build{
// use `mcpServers` for Claude
"servers": {
"dsp-server": {
"type": "stdio", // no need in claude_desktop_config.json
"command": "node",
"args": ["~/dsp-mcpserver/dist/index.js"],
"env": {
"DSP_BOOKING_BASE_URL": "https://example.com/booking",
"DSP_BOOKING_API_VERSION": "v1",
"DSP_APIM_SUBSCRIPTION_KEY": "xxx",
"DSP_OAUTH_CLIENT_ID": "xxx",
"DSP_OAUTH_CLIENT_SECRET": "xxx",
"DSP_OAUTH_TOKEN_URL": "https://example.com/security/oauth2/token"
}
}
}
}Related MCP server: Google Ad Manager MCP Server
MCP Config HTTP VSCode (Able to start locally or even MCP Remote)
Using VSCode Agent we are able to use local MCP Remote or even public MCP Remote
$ pnpm run build
$ pnpm run start --transport http --port 3067
# OR Docker
$ docker-compose up --build -d{
// use `mcpServers` for Claude
"servers": {
"dsp-server": {
"type": "http",
"url": "http://localhost:3067/mcp" // or https://your-host.or.lambda.url/mcp if publicly accessibile
}
}
}MCP Config HTTP Claude Desktop (Required HTTPS)
Make sure you have deploy the server to the public-accessible endpoint e.g., https://your-host.or.lambda.url/mcp
Option 1
Use a Custom Connector settings in the Claude Settings
Name: DSP Server
Remote MCP Server URL: https://your-host.or.lambda.url/mcpOption 2
Use mcp-remote in your claude_desktop_config.json
{
"mcpServers": {
"dsp-server": {
"command": "npx",
"args": ["mcp-remote", "https://your-host.or.lambda.url/mcp"]
}
}
}MCP Config Docker
$ docker build -t dsp-mcpserver:stdio . -f Dockerfile.stdio{
// use `mcpServers` for Claude
"servers": {
"dsp-server": {
"type": "stdio", // no need in claude_desktop_config.json
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DSP_BOOKING_BASE_URL=https://example.com/booking",
"-e",
"DSP_BOOKING_API_VERSION=v1",
"-e",
"DSP_APIM_SUBSCRIPTION_KEY=xxx",
"-e",
"DSP_OAUTH_CLIENT_ID=xxx",
"-e",
"DSP_OAUTH_CLIENT_SECRET=xxx",
"-e",
"DSP_OAUTH_TOKEN_URL=https://example.com/security/oauth2/token",
"dsp-mcpserver:stdio"
]
}
}
}Available Tools
3 toolscreate_cartA
Create a shopping cart with selected flight options. PREREQUISITES: Must call 'initialize_booking_session' first, then 'search_flights' to get available flight options. This endpoint adds the customer's selected flights (identified by airBoundIds from search results) to a cart for booking. The cart validates selections, checks availability, and calculates final pricing. WORKFLOW POSITION: Step 3 of the booking flow (after initialization and search, before passenger details and payment). RESPONSE: Returns a cartId which is required for subsequent booking operations. IMPORTANT: All airBoundIds must come from the most recent search_flights response within the same session.
| Name | Required | Description | Default |
|---|---|---|---|
| session-token | Yes | Required authentication token obtained from the initialize_booking_session step. This token maintains the booking session context and must be included to create a cart. The token is returned in the response headers of the initialization call (look for "Session-Token" header). | |
| requestBody | Yes | Cart creation request containing the selected flight options the customer wants to purchase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It explains that the cart validates selections, checks availability, calculates final pricing, and returns a cartId required for subsequent operations. However, it doesn't mention potential errors, rate limits, or authentication details beyond the session-token, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (PREREQUISITES, WORKFLOW POSITION, RESPONSE, IMPORTANT) and front-loaded key information. It's appropriately sized, but some redundancy exists (e.g., repeating the importance of recent search_flights data), which slightly reduces efficiency without major waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a multi-step booking flow with no annotations and no output schema, the description does a good job explaining prerequisites, workflow position, and response. However, it lacks details on error handling, session expiration, or what happens if availability changes, which would be helpful for a tool with mutation implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds some context by emphasizing that 'airBoundIds must come from the most recent search_flights response within the same session', but this is partially covered in the schema. It doesn't provide additional semantic meaning beyond what the schema offers, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a shopping cart with selected flight options') and resource ('cart'), distinguishing it from sibling tools like 'initialize_booking_session' and 'search_flights' by explaining its role in the booking flow. It explicitly mentions the tool adds selected flights to a cart for booking, which is distinct from session initialization or flight searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'PREREQUISITES: Must call 'initialize_booking_session' first, then 'search_flights' to get available flight options' and 'WORKFLOW POSITION: Step 3 of the booking flow (after initialization and search, before passenger details and payment)'. It also specifies an alternative by referencing the sibling tools, making it clear this is not the first step in the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initialize_booking_sessionA
Initialize a new booking session.
| Name | Required | Description | Default |
|---|---|---|---|
| requestBody | Yes | Initial flight search parameters to validate and establish booking session. This creates the foundation for subsequent flight searches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that this creates a session token for subsequent steps, which is useful context, but lacks details on error handling, rate limits, authentication needs, or what happens if parameters are invalid. It provides some behavioral insight but not comprehensive coverage for a session-initialization tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just one sentence ('Initialize a new booking session.') and the schema includes a detailed description that adds necessary context without redundancy. Every part earns its place, making it front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested objects, 1 parameter with rich schema) and no output schema, the description is reasonably complete. It explains the tool's role as a first step and hints at the response (session token), but could be more detailed about behavioral aspects like error cases or session management, given the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema, such as emphasizing it's for 'initial flight search parameters,' but doesn't provide additional context like examples or edge cases. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Initialize') and resource ('booking session'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'create_cart' or 'search_flights', which might be related booking operations, so it doesn't achieve full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'REQUIRED FIRST STEP' and provides clear guidance on when to use it ('Call this endpoint first to receive a session token, then use that token for actual flight searches'), including the sequence of operations and the alternative tools to use next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsA
Perform a flight search based on search criteria. This operation required 'initialize_booking_session' to be exexcuted first to start the session.
| Name | Required | Description | Default |
|---|---|---|---|
| session-token | Yes | Required authentication token obtained from the initialization step. This token is generated during booking initialization and returned in the response headers (look for "Session-Token" header). The token maintains booking context and enables flight search functionality. WITHOUT this token, flight searches will fail. | |
| requestBody | Yes | Flight search parameters for finding available flights. Can be identical to initialization parameters or refined based on customer preferences. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the prerequisite session requirement, which is valuable context. However, it doesn't describe what the tool returns (no output schema exists), whether it's idempotent, rate limits, error conditions, or what happens if the session token is invalid. For a search tool with complex parameters, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences that each serve a clear purpose: stating the tool's function and providing prerequisite guidance. There's no wasted text. The minor typo ('exexcuted') doesn't significantly impact clarity. It could be slightly more structured but efficiently conveys essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters with nested objects, no output schema, no annotations), the description provides basic but incomplete context. It covers the prerequisite requirement well but doesn't explain what the search returns, how results are structured, or behavioral aspects like pagination or error handling. For a flight search tool that presumably returns complex results, this leaves important gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions. It mentions the session token requirement, but this is already covered in the schema. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Perform a flight search based on search criteria.' This specifies the verb ('search') and resource ('flights'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create_cart' or 'initialize_booking_session' beyond mentioning the latter as a prerequisite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'This operation required 'initialize_booking_session' to be exexcuted first to start the session.' This clearly states a prerequisite and when to use this tool (after initialization). It doesn't mention alternatives, but the prerequisite guidance is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- Added
create_cart - Changed
initialize_booking_session3 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / descriptionAdded value: +"REQUIRED FIRST STEP: Initialize booking session with airline system. Call this endpoint first to receive a session token, then use that token for actual flight searches. The session token will be returned in the response headers and must be captured for the next step."
- Changed
search_flights3 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / descriptionAdded value: +"STEP 2: Perform actual flight search using session token from initialization. This endpoint searches for available flights matching the criteria and returns flight options with pricing and schedules."
2 tool updates
- First observed
initialize_booking_session - First observed
search_flights
TDQS
Scored across 3 tools
Each tool has a distinct and clear purpose: initialize_booking_session starts the session, search_flights finds available flights, and create_cart adds selected flights to a cart. There is no overlap or ambiguity in their functions, making it easy for an agent to select the right tool at each step.
All tool names follow a consistent verb_noun pattern (initialize_booking_session, search_flights, create_cart) with clear, descriptive verbs. There are no deviations in style or convention, ensuring predictable and readable naming throughout.
With only 3 tools, the set feels thin for a booking server, as it lacks operations for passenger details, payment, or booking confirmation. While the tools cover the initial workflow steps, the count is borderline low for the apparent scope of a full booking process.
The tool surface is significantly incomplete for a booking domain. It includes initialization, search, and cart creation but misses critical operations like adding passenger information, processing payment, or finalizing the booking. This creates dead ends and will likely cause agent failures in completing a booking.
Maintenance
Related MCP Connectors
Create, publish and measure SparkleTree marketing campaigns from an AI client. OAuth 2.1 with PKCE.
Boost posts and launch community growth campaigns from your AI assistant. OAuth, credit-billed.
- cloziqOAuthcom.cloziq
Create your offers and launch AI Instagram DM sales agents from any MCP client, over OAuth.
Build, edit and sync Google, Microsoft, Reddit and Meta ad campaigns from your assistant.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables authentication and interaction with DhanHQ trading APIs through OAuth-based login flow, allowing users to manage trading operations and access market data through natural language.18-
- AlicenseAqualityFmaintenanceEnables AI assistants to manage Google Ad Manager campaigns, line items, creatives, and advertisers through natural language, automating ad operations that normally require countless clicks through the UI.3518MIT
- FlicenseAqualityDmaintenanceEnables interaction with the DiSH room booking platform to search availability, create bookings, and manage reservations. It allows AI assistants to handle meeting room logistics directly through natural language commands.3-
- AlicenseNot gradedqualityAmaintenanceEnables Large Language Models to interact with Google Ads API for querying campaigns, ad groups, and performing mutations like creating budgets and ads.230Apache 2.0