{"templateId":"markdown","sharedDataIds":{},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"MCP Server implementation guide","siteUrl":"https://developers.booking.com"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"mcp-server-implementation-guide","__idx":0},"children":["MCP Server implementation guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Learn how to integrate with the Booking.com MCP server and build MCP-compatible AI applications. This guide explains how to authenticate, discover available tools, invoke them through the Model Context Protocol (MCP), and implement best practices for reliable integration."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"implementation-overview","__idx":1},"children":["Implementation overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Booking.com MCP server implements the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://modelcontextprotocol.io/specification/2025-06-18"},"children":["Model Context Protocol (MCP) specification"]}," and exposes AI-optimised tools that can be discovered and invoked dynamically by MCP-compatible clients."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A typical integration follows this flow:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authenticate with the Booking.com MCP server."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Discover available tools using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve the live schema for each tool."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Build tool requests from the published schema."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Invoke tools using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/call"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Process the returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["structuredContent"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"server-fundamentals","__idx":2},"children":["Server fundamentals"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Booking.com MCP server has the following characteristics:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Affiliate scoped"]}," – The tools available to your application depend on your affiliate ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Message format"]}," – JSON-RPC 2.0."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication"]}," – Requests require a bearer token."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["AI-first design"]}," – Tool schemas and responses are optimised for LLMs and programmatic clients."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Stateless"]}," – Every request is independent."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication","__idx":3},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All requests require valid Booking.com credentials."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"credentials","__idx":4},"children":["Credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["During onboarding, you receive:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Affiliate ID"]}," – Identifies your Booking.com partner account."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bearer token"]}," – Authenticates every request. Since this is a sensitive information, Booking.com advises to store it securely and avoid committing it to version control or sharing it."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"endpoint","__idx":5},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All MCP server requests use a path-based endpoint that includes the affiliate ID:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST https://demandapi-mcp.booking.com/v1/mcp/:affiliateId\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":affiliateId"]}," with your affiliate ID (e.g., 1234567)."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only POST requests are supported."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"required-headers","__idx":6},"children":["Required headers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All requests must include:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer <your-bearer-token>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Invalid or expired credentials return either:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 Forbidden"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"discovering-available-tools","__idx":7},"children":["Discovering available tools"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unlike traditional REST APIs, MCP clients discover available capabilities dynamically."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Call the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]}," method to retrieve the tools available to your account together with their live schemas."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The tools exposed by the Booking.com MCP server depend on your affiliate configuration."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Current tools include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accommodations_search"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accommodations_room_search"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attractions_search"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cars_search"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flights_search"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["answer_property_qa_by_ids"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Tools are invoked through the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/call"]}," method."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response returned by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]}," is the authoritative source for your account."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"understanding-tool-schemas","__idx":8},"children":["Understanding tool schemas"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every MCP tool publishes a live schema describing:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parameters"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Types"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validation rules"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Input constraints"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Response format."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unlike static REST documentation, the schema evolves together with the server."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"success"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always retrieve the schema directly from the server rather than relying on copied parameter tables. Treat the live schema as the single source of truth."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"inspecting-the-server","__idx":9},"children":["Inspecting the server"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://modelcontextprotocol.io/docs/tools/inspector"},"children":["MCP Inspector"]}," to retrieve the live schema at any time, and explore all available tools and their parameter definitions:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"npx -y @modelcontextprotocol/inspector\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Inspector lets you:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Discover available tools."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["View live schemas."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Inspect parameters."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate requests."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test tool calls."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Because the Inspector retrieves information directly from the server, it always reflects the latest version of every tool."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"calling-tools","__idx":10},"children":["Calling tools"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After discovering the available tools and their schemas, invoke them using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/call"]}," method."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The request must conform to the live schema returned by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For programmatic integrations, always build requests from the published schema rather than hard-coding parameters."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"understand-the-response","__idx":11},"children":["Understand the response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The tool returns a JSON-RPC response containing:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["content"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["(For LLMs)"]},"– Array of JSON strings optimised for AI reasoning and conversation generation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["structuredContent"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["(For Clients)"]}," – Fully parsed JSON object with complete accommodation details. Optimised for programmatic processing"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Example response for accommodations_search"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"content\": [\n      {\n        \"type\": \"text\",\n        \"text\": \"{\\\"accommodations\\\":[{\\\"id\\\":12345,\\\"name\\\":\\\"Hotel Example Paris\\\",\\\"price\\\":{\\\"book\\\":135,\\\"currency\\\":\\\"USD\\\"},\\\"main_photo\\\":{\\\"url\\\":\\\"[https://cf.bstatic.com/](https://cf.bstatic.com/)...\\\"}}]}\"\n      }\n    ],\n    \"structuredContent\": {\n      \"accommodations\": [\n        {\n          \"id\": 12345,\n          \"name\": \"Hotel Example Paris\",\n          \"url\": \"[https://www.booking.com/hotel/fr/example-paris.html](https://www.booking.com/hotel/fr/example-paris.html)\",\n          \"deeplink_url\": \"booking://hotel/12345\",\n          \"price\": {\n            \"base\": 120,\n            \"book\": 135,\n            \"total\": 270,\n            \"currency\": \"USD\",\n            \"extra_charges\": {\n              \"included\": 15,\n              \"excluded\": 0\n            }\n          },\n          \"main_photo\": {\n            \"url\": \"[https://cf.bstatic.com/xdata/images/hotel/](https://cf.bstatic.com/xdata/images/hotel/)...\"\n          }\n        }\n      ]\n    },\n    \"_meta\": {}\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"testing-and-debugging","__idx":12},"children":["Testing and debugging"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"using-the-mcp-inspector","__idx":13},"children":["Using the MCP Inspector"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://modelcontextprotocol.io/docs/tools/inspector"},"children":["MCP Inspector CLI"]}," for validating integrations."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Typical workflow:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify authentication."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve available tools."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Inspect the live schema."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test a minimal request."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Incrementally add optional parameters."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":14},"children":["Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"list-available-tools","__idx":15},"children":["List available tools"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"npx @modelcontextprotocol/inspector --cli \\\n  [https://demandapi-mcp.booking.com/v1/mcp/1234567](https://demandapi-mcp.booking.com/v1/mcp/1234567) \\\n  --transport http \\\n  --method tools/list \\\n  --header \"Authorization: Bearer <your-bearer-token>\"\n\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"call-a-tool","__idx":16},"children":["Call a tool"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"npx @modelcontextprotocol/inspector --cli \\\nhttps://demandapi-mcp.booking.com/v1/mcp/1234567 \\\n--transport http \\\n--method tools/call \\\n--tool-name accommodations_search \\\n--header \"Authorization: Bearer <your-bearer-token>\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"test-a-tool---example-with-accommodation-search","__idx":17},"children":["Test a tool - Example with accommodation search"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"npx @modelcontextprotocol/inspector --cli \\\n  https://demandapi-mcp.booking.com/v1/mcp/1234567 \\\n  --transport http \\\n  --method tools/call \\\n  --tool-name accommodations_search \\\n  --tool-arg 'destination=Paris' \\\n  --tool-arg 'checkin_date=2025-12-01' \\\n  --tool-arg 'checkout_date=2025-12-03' \\\n  --tool-arg 'number_of_guests=2' \\\n  --tool-arg 'number_of_rooms=1' \\\n  --tool-arg 'user_country_code=gb' \\\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-integration-issues","__idx":18},"children":["Common integration issues"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Resolution"},"children":["Resolution"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid request parameters"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validate against the live schema."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing or invalid bearer token"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify your credentials."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 Forbidden"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid affiliate or insufficient permissions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify your onboarding configuration."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429 Too Many Requests"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rate limit exceeded"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Retry using exponential backoff."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"rate-limiting","__idx":19},"children":["Rate limiting"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you exceed rate limits, the server returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429 Too Many Requests"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We recommend implementing exponential backoff to ensure fair access and stable integration."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":20},"children":["Best practices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Follow these recommendations when building MCP-compatible applications."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Discover available tools dynamically using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tools/list"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Build requests from the published schema instead of hard-coded parameters."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Treat the live schema as the authoritative source."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prefer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["structuredContent"]}," for programmatic processing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Start with simple tool calls before introducing advanced parameters."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Monitor schema changes as part of your release process."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle authentication and rate-limit errors gracefully."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate all requests against the live schema before sending them."]}]}]},"headings":[{"value":"MCP Server implementation guide","id":"mcp-server-implementation-guide","depth":1},{"value":"Implementation overview","id":"implementation-overview","depth":2},{"value":"Server fundamentals","id":"server-fundamentals","depth":2},{"value":"Authentication","id":"authentication","depth":2},{"value":"Credentials","id":"credentials","depth":3},{"value":"Endpoint","id":"endpoint","depth":3},{"value":"Required headers","id":"required-headers","depth":3},{"value":"Discovering available tools","id":"discovering-available-tools","depth":2},{"value":"Understanding tool schemas","id":"understanding-tool-schemas","depth":3},{"value":"Inspecting the server","id":"inspecting-the-server","depth":2},{"value":"Calling tools","id":"calling-tools","depth":2},{"value":"Understand the response","id":"understand-the-response","depth":3},{"value":"Testing and debugging","id":"testing-and-debugging","depth":2},{"value":"Using the MCP Inspector","id":"using-the-mcp-inspector","depth":3},{"value":"Examples","id":"examples","depth":2},{"value":"List available tools","id":"list-available-tools","depth":3},{"value":"Call a tool","id":"call-a-tool","depth":3},{"value":"Test a tool - Example with accommodation search","id":"test-a-tool---example-with-accommodation-search","depth":3},{"value":"Common integration issues","id":"common-integration-issues","depth":2},{"value":"Rate limiting","id":"rate-limiting","depth":3},{"value":"Best practices","id":"best-practices","depth":2}],"frontmatter":{"seo":{"title":"MCP Server implementation guide"}},"lastModified":"2026-07-10T13:51:40.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/mcp-server/docs/implementation-guide","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}