{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"mcp","__idx":0},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mcp"]}]},{"$$mdtype":"Tag","name":"ConfigOptionRequirements","attributes":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Enterprise","Enterprise+"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Redocly automatically generates Model Context Protocol (MCP) servers from your documentation and OpenAPI descriptions."," ","MCP servers make your content accessible to AI tools in the MCP ecosystem (such as ChatGPT, Claude, Cursor, Goose)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"options","__idx":1},"children":["Options"]},{"$$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":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["hide"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hide the MCP server globally."," ","When set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", all MCP functionality is disabled."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["docs"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#docs-object"},"children":["Docs object"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Docs MCP configuration options."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"docs-object","__idx":2},"children":["Docs object"]},{"$$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":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["hide"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hide the Docs MCP server."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["name"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set the name displayed to MCP clients during the initial connection."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"Docs MCP server\""]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ignore"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["[string]"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List of glob patterns, matched against file paths, for content to exclude from the MCP server."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[]"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["publicEndpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Serve an additional MCP endpoint at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," that requires no authentication."," ","The endpoint ignores any provided credentials and exposes only content available to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["anonymous"]}," team."," ","It never grants access to protected content."," ","Useful when RBAC restricts some content but public content must stay reachable for AI tools without a login."," ","Before you enable it, review which content your RBAC rules grant to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["anonymous"]}," team: that content becomes reachable without a login."," ","When the project has no protected content, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp"]}," already serves anonymous users and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," endpoint is not registered."," ","The ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/access/rbac#features-configuration"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rbac.features.mcp"]}]}," configuration also applies to this endpoint: it must grant access to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["anonymous"]}," team, or the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," endpoint is not registered."," ","With ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/access/requires-login"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requiresLogin"]}]}," and no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rbac"]}," rules, no content is public, so the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," endpoint is not registered."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"access-control","__idx":3},"children":["Access control"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Role-based access control (RBAC) that protects content in your project also protects that content over the Docs MCP server."," ","The Docs MCP server enforces access with the same RBAC engine as the portal."," ","Each authenticated client receives only the API descriptions, schemas, skills, and search results that its teams are permitted to access."," ","That is the same content the client could see in the portal."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When RBAC restricts anonymous access, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp"]}," endpoint requires authentication and returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]}," to unauthenticated clients."," ","To restrict the server itself rather than individual content, set a team-based role for the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mcp"]}," feature."," ","The steps are described in ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/mcp-server#restrict-access-to-the-mcp-server"},"children":["Restrict access to the MCP server"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hide"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ignore"]}," options remove content from the build for all clients."," ","They are build-time removal, not access control — use RBAC to control who can access content."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":4},"children":["Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"basic-configuration","__idx":5},"children":["Basic configuration"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"# Global settings\nmcp:\n  hide: false\n  # Docs MCP settings\n  docs:\n    hide: false\n    name: My Custom Docs MCP Server\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"public-endpoint-for-anonymous-users","__idx":6},"children":["Public endpoint for anonymous users"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Serve public content to unauthenticated MCP clients on a project with restricted content:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"mcp:\n  docs:\n    publicEndpoint: true\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Everything your RBAC rules grant to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["anonymous"]}," team becomes reachable over ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," without a login."," ","Review these rules before you enable the endpoint."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authenticated users keep connecting to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp"]},"."," ","Anonymous users and unauthenticated integrations connect to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," and receive only the content that is available to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["anonymous"]}," team."," ","A browser visit to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp-public"]}," displays the setup page with connection snippets for the public endpoint."," ","The two setup pages link to each other."," ","The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]}," response from the restricted ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp"]}," endpoint mentions the public URL."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ignore-specific-patterns","__idx":7},"children":["Ignore specific patterns"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ignore files and file path patterns in the MCP server:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"# Global settings\nmcp:\n  hide: false\n  docs:\n    hide: false\n    # Ignored patterns\n    ignore:\n      - openapi-files/**\n      - '**/test-endpoints*'\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"default-configuration","__idx":8},"children":["Default configuration"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"mcp:\n  hide: false\n  docs:\n    hide: false\n    name: Docs MCP server\n    publicEndpoint: false\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resources","__idx":9},"children":["Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/mcp-server"},"children":["Model Context Protocol server"]}]}," - Configure MCP servers and integrate with third-party services"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/agent-skills"},"children":["Agent skills"]}]}," - Publish ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKILL.md"]}," instructions that the MCP server exposes as resources"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/mcp-server#restrict-access-to-the-mcp-server"},"children":["Restrict access to the MCP server"]}]}," - Limit the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/mcp"]}," endpoint to specific teams and review the responses clients receive when access is denied"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/access/rbac#features-configuration"},"children":["Role-based access control"]}]}," - Configure team-based permissions that also govern which content clients can access over the Docs MCP server"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config"},"children":["Configuration options"]}]}," - Explore other project configuration options for comprehensive documentation and platform customization"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/content/markdoc-tags/connect-mcp"},"children":["Connect MCP tag"]}]}," - Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Connect MCP"]}," button anywhere in your documentation"]}]}]},"frontmatter":{"products":["Redoc","Revel","Reef","Realm"],"plans":["Enterprise","Enterprise+"],"description":"Make your content accessible to AI tools."},"tagList":["admonition","configOptionRequirements","table"],"title":"mcp","lastModified":"2026-10-01T23:00:57.000Z"}