OCI OIDC provider for FastMCP.The pull request for the provider is submitted to fastmcp.This module provides OIDC Implementation to integrate MCP servers with OCI.
You only need OCI Identity Domainβs discovery URL, client ID, client secret, and base URL.Post Authentication, you get OCI IAM domain access token. That is not authorized to invoke OCI control plane.
You need to exchange the IAM domain access token for OCI UPST token to invoke OCI control plane APIs.
The sample code below has get_oci_signer function that returns OCI TokenExchangeSigner object.
You can use the signer object to create OCI service object.Example:
from fastmcp import FastMCPfrom fastmcp.server.auth.providers.oci import OCIProviderfrom fastmcp.server.dependencies import get_access_tokenfrom fastmcp.utilities.logging import get_loggerimport osimport ocifrom oci.auth.signers import TokenExchangeSignerlogger = get_logger(__name__)# Load configuration from environmentconfig_url = os.environ.get("OCI_CONFIG_URL") # OCI IAM Domain OIDC discovery URLclient_id = os.environ.get("OCI_CLIENT_ID") # Client ID configured for the OCI IAM Domain Integrated Applicationclient_secret = os.environ.get("OCI_CLIENT_SECRET") # Client secret configured for the OCI IAM Domain Integrated Applicationiam_guid = os.environ.get("OCI_IAM_GUID") # IAM GUID configured for the OCI IAM Domain# Simple OCI OIDC protectionauth = OCIProvider( config_url=config_url, # config URL is the OCI IAM Domain OIDC discovery URL client_id=client_id, # This is same as the client ID configured for the OCI IAM Domain Integrated Application client_secret=client_secret, # This is same as the client secret configured for the OCI IAM Domain Integrated Application required_scopes=["openid", "profile", "email"], redirect_path="/auth/callback", base_url="http://localhost:8000",)# NOTE: For production use, replace this with a thread-safe cache implementation# such as threading.Lock-protected dict or a proper caching library_global_token_cache = {} # In memory cache for OCI session token signerdef get_oci_signer() -> TokenExchangeSigner: authntoken = get_access_token() tokenID = authntoken.claims.get("jti") token = authntoken.token # Check if the signer exists for the token ID in memory cache cached_signer = _global_token_cache.get(tokenID) logger.debug(f"Global cached signer: {cached_signer}") if cached_signer: logger.debug(f"Using globally cached signer for token ID: {tokenID}") return cached_signer # If the signer is not yet created for the token then create new OCI signer object logger.debug(f"Creating new signer for token ID: {tokenID}") signer = TokenExchangeSigner( jwt_or_func=token, oci_domain_id=iam_guid.split(".")[0] if iam_guid else None, # This is same as IAM GUID configured for the OCI IAM Domain client_id=client_id, # This is same as the client ID configured for the OCI IAM Domain Integrated Application client_secret=client_secret, # This is same as the client secret configured for the OCI IAM Domain Integrated Application ) logger.debug(f"Signer {signer} created for token ID: {tokenID}") #Cache the signer object in memory cache _global_token_cache[tokenID] = signer logger.debug(f"Signer cached for token ID: {tokenID}") return signermcp = FastMCP("My Protected Server", auth=auth)
An OCI IAM Domain provider implementation for FastMCP.This provider is a complete OCI integration thatβs ready to use with
just the configuration URL, client ID, client secret, and base URL.
βI
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"FastMCP","description":"The fast, Pythonic way to build MCP servers and clients.","colors":{"primary":"#2d00f7","light":"#4cc9f0","dark":"#f72585"},"logo":{"light":"https://mintcdn.com/fastmcp/Lu2sdJVHDyHdvswk/assets/brand/wordmark.png?fit=max\u0026auto=format\u0026n=Lu2sdJVHDyHdvswk\u0026q=85\u0026s=67680e9b1c641023511881a24f296077","dark":"https://mintcdn.com/fastmcp/Lu2sdJVHDyHdvswk/assets/brand/wordmark-white.png?fit=max\u0026auto=format\u0026n=Lu2sdJVHDyHdvswk\u0026q=85\u0026s=776d9c0663633c9b9782b9f3f9785960","href":"https://gofastmcp.com"},"favicon":{"light":"https://mintcdn.com/fastmcp/N5hFSTFl9MRHRbXd/assets/brand/favicon-light.svg?fit=max\u0026auto=format\u0026n=N5hFSTFl9MRHRbXd\u0026q=85\u0026s=bf8c9324f3c6263da7ca91b0b7e8789c","dark":"https://mintcdn.com/fastmcp/N5hFSTFl9MRHRbXd/assets/brand/favicon-dark.svg?fit=max\u0026auto=format\u0026n=N5hFSTFl9MRHRbXd\u0026q=85\u0026s=9fc674c77e5d9bc3f601443e2873d8ae"},"appearance":{"default":"system","strict":false},"background":{"decoration":"gradient","color":{"light":"#EEEEEE","dark":"#222831"}},"navbar":{"links":[{"icon":"discord","href":"https://discord.gg/uu8dJCgttd","label":""},{"icon":"cloud","href":"https://www.prefect.io/horizon?utm_source=gofastmcp\u0026utm_medium=docs\u0026utm_campaign=docs_horizon\u0026utm_content=header","label":"Prefect Horizon"}],"primary":{"type":"github","href":"https://github.com/PrefectHQ/fastmcp"}},"footer":{"socials":{"discord":"https://discord.gg/uu8dJCgttd","github":"https://github.com/PrefectHQ/fastmcp","website":"https://www.prefect.io","x":"https://x.com/fastmcp","bluesky":"https://bsky.app/profile/gofastmcp.com"}},"search":{"prompt":"Search the docs..."},"seo":{"metatags":{"canonical":"https://gofastmcp.com/docs"},"organization":{"name":"FastMCP","legalName":"Prefect Technologies, Inc.","url":"https://gofastmcp.com","logo":"https://gofastmcp.com/docs/assets/brand/wordmark.png","sameAs":["https://github.com/PrefectHQ/fastmcp","https://x.com/fastmcp","https://bsky.app/profile/gofastmcp.com","https://www.prefect.io"]}},"styling":{"codeblocks":{"theme":{"light":"snazzy-light","dark":"dark-plus"}},"latex":true},"integrations":{"ga4":{"measurementId":"G-64R5W1TJXG"}},"banner":{"content":"FastMCP 4 is here β built for the new MCP protocol. [See what's new](/getting-started/whats-new).","color":{"light":"#1e3a5f","dark":"#475569"}},"errors":{"404":{"redirect":false,"title":"Don't panic.","description":"Youβve wandered outside the context."}},"contextual":{"options":["copy","view"],"display":"header"},"thumbnails":{"appearance":"light","background":"https://mintcdn.com/fastmcp/168oaHZRFMSLjT2T/assets/brand/thumbnail-background-4.jpeg?fit=max\u0026auto=format\u0026n=168oaHZRFMSLjT2T\u0026q=85\u0026s=b2bfba03fb25ea2127b373353cec17e9"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fastmcp","hasAudioNarration":false,"actualSubdomain":"fastmcp","customDomains":["gofastmcp.com"],"gitSource":{"type":"github","owner":"prefecthq","repo":"fastmcp","deployBranch":"published-docs","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea10259c8dff74524979cd","collectionId":"d2fced95-c0d6-4640-a0b4-c33bb989c4e2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea10259c8dff74524979cd"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aed05b0439248f5500efa17","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"Documentation","count":345},{"language":"default","tag":"SDK Reference","count":228},{"language":"default","tag":"Python SDK","count":228},{"language":"default","tag":"Servers","count":123},{"language":"default","tag":"fastmcp.server","count":102},{"language":"default","tag":"Integrations","count":85},{"language":"default","tag":"Clients","count":50},{"language":"default","tag":"Auth","count":50},{"language":"default","tag":"providers","count":45},{"language":"default","tag":"Authentication","count":41}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"css/banner.css","content":"#banner{font-size:0.95rem!important;font-weight:600!important;padding-top:12px!important;padding-bottom:12px!important;overflow:hidden!important}#banner::before{content:\"\";position:absolute;inset:0;z-index:0;background:linear-gradient(\n 90deg,\n #1e40af 0%,\n #5b21b6 22%,\n #115e59 44%,\n #9a3412 66%,\n #9d174d 88%,\n #1e40af 100%\n );background-size:250% 100%;animation:colorWave 18s ease-in-out infinite alternate;pointer-events:none}#banner>*{position:relative;z-index:1}@keyframes colorWave{0%{background-position:0% 50%}100%{background-position:100% 50%}}#banner *{margin:0!important}@media (max-width: 767px){#banner{font-size:0.8rem!important;padding-top:8px!important;padding-bottom:8px!important}}@media (prefers-reduced-motion: reduce){#banner::before{animation:none}}"},{"filePath":"css/python-sdk.css","content":"a:has(svg.icon){border:none!important}"},{"filePath":"css/style.css","content":"html:not([data-page-mode=\"wide\"]) #content-area{max-width:44rem!important}img.nav-logo{max-width:200px}p code:not(pre code),table code:not(pre code),.prose code:not(pre code),li code:not(pre code),h1 code:not(pre code),h2 code:not(pre code),h3 code:not(pre code),h4 code:not(pre code),h5 code:not(pre code),h6 code:not(pre code){color:#f72585!important;background-color:rgba(247, 37, 133, 0.09)}#v2-banner{display:block;background:linear-gradient(135deg, #4cc9f0 0%, #2d00f7 100%);color:white;text-align:center;padding:10px 16px;font-size:0.875rem;font-weight:600;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);margin:-2rem -2rem 1.5rem -2rem;width:calc(100% + 4rem);border-radius:8px 8px 0 0}#v2-banner a{color:white;text-decoration:underline;font-weight:700}#v2-banner a:hover{opacity:0.9}@media (min-width: 1024px){#v2-banner{margin:-3rem -4rem 1.5rem -4rem;width:calc(100% + 8rem)}}.dark #v2-banner{background:linear-gradient(135deg, #2d00f7 0%, #4cc9f0 100%)}#v3-banner{display:block;background:linear-gradient(135deg, #4cc9f0 0%, #2d00f7 100%);color:white;text-align:center;padding:10px 16px;font-size:0.875rem;font-weight:600;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);margin:-2rem -2rem 1.5rem -2rem;width:calc(100% + 4rem);border-radius:8px 8px 0 0}#v3-banner a{color:white;text-decoration:underline;font-weight:700}#v3-banner a:hover{opacity:0.9}@media (min-width: 1024px){#v3-banner{margin:-3rem -4rem 1.5rem -4rem;width:calc(100% + 8rem)}}.dark #v3-banner{background:linear-gradient(135deg, #2d00f7 0%, #4cc9f0 100%)}"},{"filePath":"css/version-badge.css","content":".version-badge{--color-text: #c2410c !important;--color-bg: #fef2f2 !important;color:#c2410c!important;background:#fef2f2!important;border:1px solid rgba(220, 38, 38, 0.3)!important;transition:box-shadow 0.2s, transform 0.15s}.version-badge:hover{box-shadow:0 2px 8px 0 rgba(160, 132, 252, 0.1);transform:translateY(-1px) scale(1.03)}.dark .version-badge{--color-text: #f1f5f9 !important;--color-bg: #334155 !important;color:#f1f5f9!important;background:#334155!important;border:1px solid #64748b!important}"},{"filePath":"css/language-dropdown.css","content":"#language-switch{margin-left:auto;display:inline-flex;align-items:center;position:relative}#language-switch select{appearance:none;-webkit-appearance:none;background-color:transparent;border:1px solid rgb(229 231 235 / 0.7);border-radius:9999px;color:rgb(107 114 128);cursor:pointer;font-size:0.75rem;line-height:1rem;height:2.375rem;padding:0 1.375rem 0 1.875rem;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 0.5rem center;background-size:0.7rem;transition:border-color 0.2s}@media (min-width: 1024px){#language-switch select{height:1.75rem}}#language-switch select:hover{color:rgb(75 85 99);border-color:rgb(229 231 235)}#language-switch select:focus-visible{outline:2px solid rgb(45 0 247 / 0.4);outline-offset:1px}.dark #language-switch select{border-color:rgb(255 255 255 / 0.07);color:rgb(156 163 175);background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")}.dark #language-switch select:hover{color:rgb(209 213 219);border-color:rgb(255 255 255 / 0.1)}#language-switch::before{content:\"\";position:absolute;left:0.625rem;top:50%;transform:translateY(-50%);width:0.875rem;height:0.875rem;background:center / contain no-repeat;pointer-events:none}#language-switch[data-lang=\"python\"]::before{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'%3E%3Cpath fill='%233776AB' d='M63.391 1.988c-4.222.02-8.252.379-11.8 1.007-10.45 1.846-12.346 5.71-12.346 12.837v9.411h24.693v3.137H29.977c-7.176 0-13.46 4.313-15.426 12.521-2.268 9.405-2.368 15.275 0 25.096 1.755 7.311 5.947 12.519 13.124 12.519h8.491V67.234c0-8.151 7.051-15.34 15.426-15.34h24.665c6.866 0 12.346-5.654 12.346-12.548V15.833c0-6.693-5.646-11.72-12.346-12.837-4.244-.706-8.645-1.027-12.866-1.008zM50.037 9.557c2.55 0 4.634 2.117 4.634 4.721 0 2.593-2.083 4.69-4.634 4.69-2.56 0-4.633-2.097-4.633-4.69-.001-2.604 2.073-4.721 4.633-4.721z'/%3E%3Cpath fill='%23FFD43B' d='M91.682 28.38v10.966c0 8.5-7.208 15.655-15.426 15.655H51.591c-6.756 0-12.346 5.783-12.346 12.549v23.515c0 6.691 5.818 10.628 12.346 12.547 7.816 2.297 15.312 2.713 24.665 0 6.216-1.801 12.346-5.423 12.346-12.547v-9.412H63.938v-3.138h37.012c7.176 0 9.852-5.005 12.348-12.519 2.578-7.735 2.467-15.174 0-25.096-1.774-7.145-5.161-12.521-12.348-12.521h-9.268zM77.809 87.927c2.561 0 4.634 2.097 4.634 4.692 0 2.602-2.074 4.719-4.634 4.719-2.55 0-4.633-2.117-4.633-4.719 0-2.595 2.083-4.692 4.633-4.692z'/%3E%3C/svg%3E\")}#language-switch[data-lang=\"typescript\"]::before{background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='2' width='20' height='20' fill='%23fff'/%3E%3Cpath fill='%233178C6' d='M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z'/%3E%3C/svg%3E\")}"}],"page":{"pagePath":"python-sdk/fastmcp-server-auth-providers-oci","slug":"/python-sdk/fastmcp-server-auth-providers-oci","pageMetadata":{"title":"oci","sidebarTitle":"oci","description":null,"href":"/python-sdk/fastmcp-server-auth-providers-oci"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Icon}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`fastmcp-server-auth-providers-oci`,children:_jsx(_components.code,{children:`fastmcp.server.auth.providers.oci`})}),`\n`,_jsx(_components.p,{children:`OCI OIDC provider for FastMCP.`}),`\n`,_jsx(_components.p,{children:`The pull request for the provider is submitted to fastmcp.`}),`\n`,_jsx(_components.p,{children:`This module provides OIDC Implementation to integrate MCP servers with OCI.\nYou only need OCI Identity Domainβs discovery URL, client ID, client secret, and base URL.`}),`\n`,_jsx(_components.p,{children:`Post Authentication, you get OCI IAM domain access token. That is not authorized to invoke OCI control plane.\nYou need to exchange the IAM domain access token for OCI UPST token to invoke OCI control plane APIs.\nThe sample code below has get_oci_signer function that returns OCI TokenExchangeSigner object.\nYou can use the signer object to create OCI service object.`}),`\n`,_jsx(_components.p,{children:`Example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`62`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes snazzy-light dark-plus`,style:{backgroundColor:`#FAFBFC`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#565869`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`62`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` fastmcp `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` FastMCP`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` fastmcp`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`server`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`auth`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`providers`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`oci `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` OCIProvider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` fastmcp`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`server`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`dependencies `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` get_access_token`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` fastmcp`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`utilities`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`logging `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` get_logger`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` oci`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` oci`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`auth`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`signers `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` TokenExchangeSigner`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`logger `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` get_logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:`__name__`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:`# Load configuration from environment`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`config_url `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` os`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`environ`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`OCI_CONFIG_URL`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # OCI IAM Domain OIDC discovery URL`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_id `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` os`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`environ`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`OCI_CLIENT_ID`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # Client ID configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_secret `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` os`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`environ`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`OCI_CLIENT_SECRET`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # Client secret configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`iam_guid `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` os`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`environ`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`OCI_IAM_GUID`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # IAM GUID configured for the OCI IAM Domain`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:`# Simple OCI OIDC protection`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`auth `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` OCIProvider`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` config_url`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`config_url`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # config URL is the OCI IAM Domain OIDC discovery URL`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` client_id`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_id`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # This is same as the client ID configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` client_secret`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_secret`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # This is same as the client secret configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` required_scopes`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=[`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`openid`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`profile`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`email`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` redirect_path`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`/auth/callback`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` base_url`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`http://localhost:8000`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:`# `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`NOTE`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:`: For production use, replace this with a thread-safe cache implementation`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:`# such as threading.Lock-protected dict or a proper caching library`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`_global_token_cache `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:` {}`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # In memory cache for OCI session token signer`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#09A1ED`,\"--shiki-dark\":`#DCDCAA`},children:` get_oci_signer`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:` ->`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` TokenExchangeSigner`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` authntoken `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` get_access_token`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` tokenID `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` authntoken`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`claims`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`jti`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` token `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` authntoken`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`token`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # Check if the signer exists for the token ID in memory cache`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` cached_signer `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` _global_token_cache`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`get`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`debug`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"Global cached signer: `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`cached_signer`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` cached_signer`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`debug`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"Using globally cached signer for token ID: `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` cached_signer`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # If the signer is not yet created for the token then create new OCI signer object`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`debug`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"Creating new signer for token ID: `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` signer `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` TokenExchangeSigner`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` jwt_or_func`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`token`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` oci_domain_id`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`iam_guid`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`split`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`.`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)[`}),_jsx(_components.span,{style:{color:`#FF5C57`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` iam_guid `}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:` None`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # This is same as IAM GUID configured for the OCI IAM Domain`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` client_id`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_id`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # This is same as the client ID configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` client_secret`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`client_secret`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` # This is same as the client secret configured for the OCI IAM Domain Integrated Application`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`debug`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"Signer `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`signer`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:` created for token ID: `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#6A9955`},children:` #Cache the signer object in memory cache`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` _global_token_cache`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` signer`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` logger`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`debug`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"Signer cached for token ID: `}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`tokenID`}),_jsx(_components.span,{style:{color:`#2DAE58`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#F767BB`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` signer`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`mcp `}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:` FastMCP`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF9C00`,\"--shiki-dark\":`#CE9178`},children:`My Protected Server`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`,`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#9CDCFE`},children:` auth`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#565869`,\"--shiki-dark\":`#D4D4D4`},children:`auth`}),_jsx(_components.span,{style:{color:`#ADB1C2`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`classes`,children:`Classes`}),`\n`,_jsxs(Heading,{level:`3`,id:`ociprovider`,children:[_jsx(_components.code,{children:`OCIProvider`}),` `,_jsx(`sup`,{children:_jsx(`a`,{href:`https://github.com/PrefectHQ/fastmcp/blob/main/fastmcp_slim/fastmcp/server/auth/providers/oci.py#L95`,target:`_blank`,children:_jsx(Icon,{icon:`github`,style:`width: 14px; height: 14px;`})})})]}),`\n`,_jsx(_components.p,{children:`An OCI IAM Domain provider implementation for FastMCP.`}),`\n`,_jsx(_components.p,{children:`This provider is a complete OCI integration thatβs ready to use with\njust the configuration URL, client ID, client secret, and base URL.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"snazzy-light","dark":"dark-plus"}},"config":{},"pageMetadata":{"title":"oci","sidebarTitle":"oci","description":null,"href":"/python-sdk/fastmcp-server-auth-providers-oci"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"fastmcp.server.auth.providers.oci","slug":"fastmcp-server-auth-providers-oci","depth":1,"children":[]},{"title":"Classes","slug":"classes","depth":2,"children":[{"title":"OCIProvider ","slug":"ociprovider","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/fastmcp/10bd208653ac5b9f/v2-banner.js","/docs/_mintlify/custom/fastmcp/1d38b4f69e25e621/unify-intent.js","/docs/_mintlify/custom/fastmcp/47e2a89b34163b38/fastmcp-analytics.js","/docs/_mintlify/custom/fastmcp/91ceb4bc2aa746c8/prefab-demo-payloads.js","/docs/_mintlify/custom/fastmcp/d24671772e5ddf42/v3-banner.js","/docs/_mintlify/custom/fastmcp/c94bc42bfe817b72/language-dropdown.js","/docs/_mintlify/custom/fastmcp/5b04ed929eac1c10/outbound-referrer.js"],"subdomain":"fastmcp","siteName":"FastMCP","title":"oci - FastMCP","navMaps":{"firstHrefInVersion":{"v4.0.5":{"href":"/python-sdk/fastmcp-server-auth-providers-oci","matchLevel":0},"v3.4.4":{"href":"/v3/getting-started/welcome","matchLevel":4},"v2.14.5":{"href":"/v2/getting-started/welcome","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T22:40:38.802Z","originalFileLocation":"python-sdk/fastmcp-server-auth-providers-oci.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"FastMCP\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"oci - FastMCP\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FastMCP\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fastmcp.mintlify.app/_mintlify/api/og/v2?division=providers\u0026amp;title=oci\u0026amp;theme=eccfc557d41f0e9854966f28\u0026amp;signature=857e49bc0fb68bfc05d128b1c43ccdb4a21725e840de3f3b21dd684355c4bee2\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"oci - FastMCP\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fastmcp.mintlify.app/_mintlify/api/og/v2?division=providers\u0026amp;title=oci\u0026amp;theme=eccfc557d41f0e9854966f28\u0026amp;signature=857e49bc0fb68bfc05d128b1c43ccdb4a21725e840de3f3b21dd684355c4bee2\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/fastmcp/1KQviU8vsE4vEF8n/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FastMCP\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2d00f7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/python-sdk/fastmcp-server-auth-providers-oci.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://gofastmcp.com/#organization\",\"name\":\"FastMCP\",\"legalName\":\"Prefect Technologies, Inc.\",\"url\":\"https://gofastmcp.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://gofastmcp.com/docs/assets/brand/wordmark.png\"},\"sameAs\":[\"https://github.com/PrefectHQ/fastmcp\",\"https://x.com/fastmcp\",\"https://bsky.app/profile/gofastmcp.com\",\"https://www.prefect.io\"]},{\"@type\":\"WebSite\",\"@id\":\"https://gofastmcp.com/docs#website\",\"name\":\"FastMCP\",\"url\":\"https://gofastmcp.com/docs\",\"publisher\":{\"@id\":\"https://gofastmcp.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci#webpage\",\"url\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci\",\"name\":\"oci\",\"dateModified\":\"2026-11-05T22:40:38.802Z\",\"isPartOf\":{\"@id\":\"https://gofastmcp.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"fastmcp.server\",\"item\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-auth\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"auth\",\"item\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-auth\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"providers\",\"item\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-auth0\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"oci\",\"item\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci#article\",\"headline\":\"oci\",\"name\":\"oci\",\"url\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci\",\"mainEntityOfPage\":{\"@id\":\"https://gofastmcp.com/docs/python-sdk/fastmcp-server-auth-providers-oci#webpage\"},\"dateModified\":\"2026-11-05T22:40:38.802Z\",\"publisher\":{\"@id\":\"https://gofastmcp.com/#organization\"},\"isPartOf\":{\"@id\":\"https://gofastmcp.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FastMCP\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FastMCP","nav":{"global":null,"versions":[{"version":"v4.0.5","dropdowns":[{"dropdown":"Documentation","icon":"book","groups":[{"group":"Get Started","pages":[{"title":"FastMCP: The Framework for MCP","sidebarTitle":"Welcome!","icon":"hand-wave","mode":"center","href":"/getting-started/welcome"},{"title":"Installation","icon":"arrow-down-to-line","href":"/getting-started/installation"},{"title":"Quickstart","icon":"rocket-launch","href":"/getting-started/quickstart"},{"title":"AI-assisted Development","sidebarTitle":"Coding Agents","icon":"robot","href":"/getting-started/ai-assisted-development"},{"title":"What's New in FastMCP 4","sidebarTitle":"What's New","icon":"sparkles","href":"/getting-started/whats-new"}]},{"group":"Servers","pages":[{"title":"The FastMCP Server","sidebarTitle":"Overview","icon":"server","href":"/servers/server"},{"group":"Core Components","icon":"toolbox","pages":[{"title":"Tools","sidebarTitle":"Tools","icon":"wrench","href":"/servers/tools"},{"title":"Resources \u0026 Templates","sidebarTitle":"Resources","icon":"folder-open","href":"/servers/resources"},{"title":"Prompts","sidebarTitle":"Prompts","icon":"message-lines","href":"/servers/prompts"},{"title":"MCP Context","sidebarTitle":"Context","icon":"rectangle-code","href":"/servers/context"}]},{"group":"Working with Tools","icon":"wand-magic-sparkles","pages":[{"title":"Transforms Overview","sidebarTitle":"Overview","icon":"wand-magic-sparkles","href":"/servers/transforms/transforms"},{"title":"Tool Transformation","sidebarTitle":"Tool Transformation","icon":"wrench","href":"/servers/transforms/tool-transformation"},{"title":"Code Mode","sidebarTitle":"Code Mode","icon":"flask","href":"/servers/transforms/code-mode"},{"title":"Tool Search","sidebarTitle":"Tool Search","icon":"magnifying-glass","href":"/servers/transforms/tool-search"},{"title":"Namespace Transform","sidebarTitle":"Namespace","icon":"tag","href":"/servers/transforms/namespace"},{"title":"Component Visibility","sidebarTitle":"Visibility","icon":"toggle-on","href":"/servers/visibility"},{"title":"Resources as Tools","sidebarTitle":"Resources as Tools","icon":"toolbox","href":"/servers/transforms/resources-as-tools"},{"title":"Prompts as Tools","sidebarTitle":"Prompts as Tools","icon":"message-lines","href":"/servers/transforms/prompts-as-tools"},{"title":"Tool Fingerprinting","sidebarTitle":"Tool Fingerprinting","icon":"fingerprint","href":"/servers/tool-fingerprinting"}]},{"group":"MCP Providers","icon":"layer-group","pages":[{"title":"Providers","sidebarTitle":"Overview","icon":"layer-group","href":"/servers/providers/overview"},{"title":"Local Provider","sidebarTitle":"Local","icon":"house","href":"/servers/providers/local"},{"title":"Filesystem Provider","sidebarTitle":"Filesystem","icon":"folder-tree","href":"/servers/providers/filesystem"},{"title":"MCP Proxy Provider","sidebarTitle":"MCP Proxy","icon":"arrows-retweet","href":"/servers/providers/proxy"},{"title":"Skills over MCP","sidebarTitle":"Skills","icon":"wand-magic-sparkles","href":"/servers/skills"},{"title":"Composing Servers","sidebarTitle":"Composition","icon":"puzzle-piece","href":"/servers/composition"},{"title":"Custom Providers","sidebarTitle":"Custom","icon":"code","href":"/servers/providers/custom"}]},{"group":"Interactivity","icon":"comments","pages":[{"title":"User Elicitation","sidebarTitle":"Elicitation","icon":"message-question","href":"/servers/elicitation"},{"title":"Sampling","sidebarTitle":"Sampling","icon":"robot","href":"/servers/sampling"},{"title":"Argument Completion","sidebarTitle":"Completions","icon":"list-check","href":"/servers/completions"},{"title":"Progress Reporting","sidebarTitle":"Progress","icon":"chart-line","href":"/servers/progress"},{"title":"Client Logging","sidebarTitle":"Logging","icon":"receipt","href":"/servers/logging"},{"title":"Pagination","sidebarTitle":"Pagination","icon":"page","href":"/servers/pagination"},{"title":"Icons","icon":"image","href":"/servers/icons"}]},{"group":"Extensibility","icon":"puzzle-piece","pages":[{"title":"Middleware","sidebarTitle":"Middleware","icon":"layer-group","href":"/servers/middleware"},{"title":"Dependency Injection","sidebarTitle":"Dependencies","icon":"syringe","href":"/servers/dependency-injection"},{"title":"Lifespans","sidebarTitle":"Lifespan","icon":"heart-pulse","href":"/servers/lifespan"},{"title":"Storage Backends","sidebarTitle":"Storage Backends","icon":"database","href":"/servers/storage-backends"},{"title":"Session State","sidebarTitle":"Sessions","icon":"id-badge","href":"/servers/sessions"},{"title":"Server Extensions","sidebarTitle":"Extensions","icon":"plug","href":"/servers/extensions"},{"title":"Background Tasks","sidebarTitle":"Background Tasks","icon":"clock","tag":"NEW","href":"/servers/tasks"},{"title":"Versioning","sidebarTitle":"Versioning","icon":"code-branch","href":"/servers/versioning"}]},{"group":"Auth","icon":"shield-check","pages":[{"group":"Authentication","icon":"key","pages":[{"title":"Authentication","sidebarTitle":"Overview","icon":"user-shield","href":"/servers/auth/authentication"},{"title":"Token Verification","sidebarTitle":"Token Verification","icon":"key","href":"/servers/auth/token-verification"},{"title":"Remote OAuth","sidebarTitle":"Remote OAuth","icon":"camera-cctv","href":"/servers/auth/remote-oauth"},{"title":"OAuth Proxy","sidebarTitle":"OAuth Proxy","icon":"share","href":"/servers/auth/oauth-proxy"},{"title":"OIDC Proxy","sidebarTitle":"OIDC Proxy","icon":"share","href":"/servers/auth/oidc-proxy"},{"title":"Full OAuth Server","sidebarTitle":"Full OAuth Server","icon":"users-between-lines","href":"/servers/auth/full-oauth-server"},{"title":"Multiple Auth Sources","sidebarTitle":"Multiple Auth Sources","icon":"layer-group","href":"/servers/auth/multi-auth"}]},{"title":"Authorization","sidebarTitle":"Authorization","icon":"shield-halved","href":"/servers/authorization"}]},{"group":"Deployment","icon":"rocket","pages":[{"title":"Running Your Server","sidebarTitle":"Running Your Server","icon":"circle-play","href":"/deployment/running-server"},{"title":"HTTP Deployment","sidebarTitle":"HTTP Deployment","icon":"server","href":"/deployment/http"},{"title":"Sandboxed Agents","sidebarTitle":"Sandboxed Agents","icon":"box-open","href":"/deployment/sandboxed-agents"},{"title":"Prefect Horizon","sidebarTitle":"Prefect Horizon","icon":"cloud","href":"/deployment/prefect-horizon"},{"title":"Project Configuration","sidebarTitle":"Project Configuration","icon":"file-code","href":"/deployment/server-configuration"},{"title":"Testing your FastMCP Server","sidebarTitle":"Testing","icon":"vial","href":"/servers/testing"},{"title":"OpenTelemetry","sidebarTitle":"Telemetry","icon":"chart-line","tag":"NEW","href":"/servers/telemetry"}]}]},{"group":"Apps","pages":[{"title":"Apps","sidebarTitle":"Overview","icon":"grid-2","mode":"center","href":"/apps/overview"},{"title":"Quickstart","sidebarTitle":"Quickstart","icon":"rocket","href":"/apps/quickstart"},{"title":"FastMCPApp","sidebarTitle":"FastMCPApp","icon":"puzzle-piece","href":"/apps/fastmcp-app"},{"title":"Interactive Tools","sidebarTitle":"Interactive Tools","icon":"palette","href":"/apps/prefab"},{"title":"Generative UI","sidebarTitle":"Generative UI","icon":"wand-magic-sparkles","href":"/apps/generative"},{"title":"Custom HTML Apps","sidebarTitle":"Custom HTML","icon":"code","href":"/apps/low-level"},{"group":"Reference","icon":"book","pages":[{"group":"Prefab Providers","icon":"cube","pages":[{"title":"Approval","sidebarTitle":"Approval","icon":"shield-check","href":"/apps/providers/approval"},{"title":"Choice","sidebarTitle":"Choice","icon":"list-check","href":"/apps/providers/choice"},{"title":"File Upload","sidebarTitle":"File Upload","icon":"upload","href":"/apps/providers/file-upload"},{"title":"Form Input","sidebarTitle":"Form Input","icon":"rectangle-list","href":"/apps/providers/form"}]},{"title":"Development","sidebarTitle":"Development","icon":"flask","href":"/apps/development"},{"title":"Examples","sidebarTitle":"Examples","icon":"images","href":"/apps/examples"},{"title":"Architecture","sidebarTitle":"Architecture","icon":"sitemap","href":"/apps/architecture"}]}]},{"group":"Clients","pages":[{"title":"The FastMCP Client","sidebarTitle":"Overview","icon":"user-robot","href":"/clients/client"},{"title":"Client-Only Package","icon":"box","href":"/clients/client-only-package"},{"title":"Client Transports","sidebarTitle":"Transports","icon":"link","href":"/clients/transports"},{"title":"Client Groups","sidebarTitle":"Client Groups","icon":"layer-group","tag":"NEW","href":"/clients/client-groups"},{"title":"fastmcp-remote","icon":"bridge","href":"/clients/fastmcp-remote"},{"group":"Operations","icon":"toolbox","tag":"UPDATED","pages":[{"title":"Calling Tools","sidebarTitle":"Tools","icon":"wrench","href":"/clients/tools"},{"title":"Reading Resources","sidebarTitle":"Resources","icon":"folder-open","href":"/clients/resources"},{"title":"Getting Prompts","sidebarTitle":"Prompts","icon":"message-lines","href":"/clients/prompts"},{"title":"LLM Sampling","sidebarTitle":"Sampling","icon":"robot","href":"/clients/sampling"},{"title":"User Elicitation","sidebarTitle":"Elicitation","icon":"message-question","href":"/clients/elicitation"},{"title":"Background Tasks","sidebarTitle":"Tasks","icon":"clock","tag":"NEW","href":"/clients/tasks"},{"title":"Progress Monitoring","sidebarTitle":"Progress","icon":"bars-progress","href":"/clients/progress"},{"title":"Server Logging","sidebarTitle":"Logging","icon":"receipt","href":"/clients/logging"},{"title":"Client Roots","sidebarTitle":"Roots","icon":"folder-tree","href":"/clients/roots"},{"title":"Notifications","sidebarTitle":"Notifications","icon":"envelope","href":"/clients/notifications"}]},{"group":"Authentication","icon":"key","tag":"UPDATED","pages":[{"title":"OAuth Authentication","sidebarTitle":"OAuth","icon":"window","href":"/clients/auth/oauth"},{"title":"Machine-to-Machine Authentication","sidebarTitle":"Client Credentials","icon":"robot","href":"/clients/auth/client-credentials"},{"title":"CIMD Authentication","sidebarTitle":"CIMD","icon":"id-badge","href":"/clients/auth/cimd"},{"title":"Bearer Token Authentication","sidebarTitle":"Bearer Auth","icon":"key","href":"/clients/auth/bearer"}]}]},{"group":"Integrations","pages":[{"group":"Auth","icon":"key","pages":[{"title":"Auth0 OAuth π€ FastMCP","sidebarTitle":"Auth0","icon":"shield-check","href":"/integrations/auth0"},{"title":"AuthKit π€ FastMCP","sidebarTitle":"AuthKit","icon":"shield-check","href":"/integrations/authkit"},{"title":"AWS Cognito OAuth π€ FastMCP","sidebarTitle":"AWS Cognito","icon":"aws","href":"/integrations/aws-cognito"},{"title":"Azure (Microsoft Entra ID) OAuth π€ FastMCP","sidebarTitle":"Azure (Entra ID)","icon":"microsoft","href":"/integrations/azure"},{"title":"Descope π€ FastMCP","sidebarTitle":"Descope","icon":"shield-check","href":"/integrations/descope"},{"title":"Discord OAuth π€ FastMCP","sidebarTitle":"Discord","icon":"discord","href":"/integrations/discord"},{"title":"Eunomia Authorization π€ FastMCP","sidebarTitle":"Eunomia Auth","icon":"shield-check","href":"/integrations/eunomia-authorization"},{"title":"GitHub OAuth π€ FastMCP","sidebarTitle":"GitHub","icon":"github","href":"/integrations/github"},{"title":"Google OAuth π€ FastMCP","sidebarTitle":"Google","icon":"google","href":"/integrations/google"},{"title":"Hugging Face OAuth π€ FastMCP","sidebarTitle":"Hugging Face","icon":"hugging-face","iconType":"brands","href":"/integrations/huggingface"},{"title":"Keycloak OAuth π€ FastMCP","sidebarTitle":"Keycloak","icon":"shield-check","href":"/integrations/keycloak"},{"title":"OCI IAM OAuth π€ FastMCP","sidebarTitle":"Oracle","icon":"shield-check","href":"/integrations/oci"},{"title":"Permit.io Authorization π€ FastMCP","sidebarTitle":"Permit.io","icon":"shield-check","href":"/integrations/permit"},{"title":"PropelAuth π€ FastMCP","sidebarTitle":"PropelAuth","icon":"shield-check","href":"/integrations/propelauth"},{"title":"Scalekit π€ FastMCP","sidebarTitle":"Scalekit","icon":"shield-check","href":"/integrations/scalekit"},{"title":"Supabase π€ FastMCP","sidebarTitle":"Supabase","icon":"shield-check","href":"/integrations/supabase"},{"title":"WorkOS π€ FastMCP","sidebarTitle":"WorkOS","icon":"shield-check","href":"/integrations/workos"}]},{"group":"Web Frameworks","icon":"code","pages":[{"title":"FastAPI π€ FastMCP","sidebarTitle":"FastAPI","icon":"bolt","href":"/integrations/fastapi"},{"title":"OpenAPI π€ FastMCP","sidebarTitle":"OpenAPI","icon":"list-tree","href":"/integrations/openapi"}]},{"group":"AI Assistants","icon":"robot","pages":[{"title":"ChatGPT π€ FastMCP","sidebarTitle":"ChatGPT","icon":"message-smile","href":"/integrations/chatgpt"},{"title":"Claude Code π€ FastMCP","sidebarTitle":"Claude Code","icon":"message-smile","href":"/integrations/claude-code"},{"title":"Claude Desktop π€ FastMCP","sidebarTitle":"Claude Desktop","icon":"message-smile","href":"/integrations/claude-desktop"},{"title":"Cursor π€ FastMCP","sidebarTitle":"Cursor","icon":"message-smile","href":"/integrations/cursor"},{"title":"Gemini CLI π€ FastMCP","sidebarTitle":"Gemini CLI","icon":"message-smile","href":"/integrations/gemini-cli"},{"title":"Goose π€ FastMCP","sidebarTitle":"Goose","icon":"message-smile","href":"/integrations/goose"}]},{"group":"AI SDKs","icon":"microchip","pages":[{"title":"Anthropic API π€ FastMCP","sidebarTitle":"Anthropic API","icon":"message-code","href":"/integrations/anthropic"},{"title":"Gemini SDK π€ FastMCP","sidebarTitle":"Gemini SDK","icon":"message-code","href":"/integrations/gemini"},{"title":"OpenAI API π€ FastMCP","sidebarTitle":"OpenAI API","icon":"message-code","href":"/integrations/openai"},{"title":"Pydantic AI π€ FastMCP","sidebarTitle":"Pydantic AI","icon":"message-code","href":"/integrations/pydantic-ai"}]},{"title":"MCP JSON Configuration π€ FastMCP","sidebarTitle":"MCP.json","icon":"brackets-curly","href":"/integrations/mcp-json-configuration"}]},{"group":"More","pages":[{"title":"Settings","icon":"gear","href":"/more/settings"},{"group":"CLI","icon":"terminal","pages":[{"title":"CLI","sidebarTitle":"Overview","icon":"terminal","href":"/cli/overview"},{"title":"Running Servers","sidebarTitle":"Running","icon":"play","href":"/cli/running"},{"title":"Install MCP Servers","sidebarTitle":"Install MCPs","icon":"download","href":"/cli/install-mcp"},{"title":"Inspecting Servers","sidebarTitle":"Inspecting","icon":"magnifying-glass","href":"/cli/inspecting"},{"title":"Client Commands","sidebarTitle":"Client","icon":"satellite-dish","href":"/cli/client"},{"title":"Generate CLI","sidebarTitle":"Generate CLI","icon":"wand-magic-sparkles","href":"/cli/generate-cli"},{"title":"Auth Utilities","sidebarTitle":"Auth","icon":"key","href":"/cli/auth"}]},{"group":"Upgrading","icon":"up","pages":[{"title":"Upgrading from FastMCP 3","sidebarTitle":"From FastMCP 3","icon":"up","href":"/getting-started/upgrading/from-fastmcp-3"},{"title":"Upgrading from FastMCP 2","sidebarTitle":"From FastMCP 2","icon":"up","href":"/getting-started/upgrading/from-fastmcp-2"},{"title":"Upgrading from MCP SDK v1","sidebarTitle":"From MCP SDK v1","icon":"up","href":"/getting-started/upgrading/from-mcp-sdk-v1"},{"title":"Upgrading from MCP SDK v2","sidebarTitle":"From MCP SDK v2","icon":"up","href":"/getting-started/upgrading/from-mcp-sdk-v2"},{"title":"Upgrading from the Low-Level SDK v1","sidebarTitle":"From Low-Level SDK v1","icon":"up","href":"/getting-started/upgrading/from-low-level-sdk-v1"},{"title":"Upgrading from the Low-Level SDK v2","sidebarTitle":"From Low-Level SDK v2","icon":"up","href":"/getting-started/upgrading/from-low-level-sdk-v2"}]},{"group":"Development","icon":"code","pages":[{"title":"Contributing","icon":"code-pull-request","href":"/development/contributing"},{"title":"Tests","icon":"vial","href":"/development/tests"},{"title":"Releases","icon":"truck-fast","href":"/development/releases"},{"title":"Contrib Modules","icon":"cubes","href":"/patterns/contrib"}]},{"group":"What's New","icon":"sparkles","pages":[{"title":"FastMCP Updates","sidebarTitle":"Updates","icon":"sparkles","tag":"NEW","href":"/updates"},{"title":"Changelog","icon":"list-check","tag":"NEW","href":"/changelog"}]},{"title":"FAQ","icon":"circle-question","href":"/more/faq"}]}]},{"dropdown":"SDK Reference","icon":"code","anchors":[{"anchor":"Python SDK","icon":"python","pages":[{"title":"decorators","sidebarTitle":"decorators","href":"/python-sdk/fastmcp-decorators"},{"title":"dependencies","sidebarTitle":"dependencies","href":"/python-sdk/fastmcp-dependencies"},{"title":"exceptions","sidebarTitle":"exceptions","href":"/python-sdk/fastmcp-exceptions"},{"title":"mcp_config","sidebarTitle":"mcp_config","href":"/python-sdk/fastmcp-mcp_config"},{"title":"settings","sidebarTitle":"settings","href":"/python-sdk/fastmcp-settings"},{"title":"telemetry","sidebarTitle":"telemetry","href":"/python-sdk/fastmcp-telemetry"},{"title":"types","sidebarTitle":"types","href":"/python-sdk/fastmcp-types"},{"group":"fastmcp.apps","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-apps-__init__"},{"title":"app","sidebarTitle":"app","href":"/python-sdk/fastmcp-apps-app"},{"title":"approval","sidebarTitle":"approval","href":"/python-sdk/fastmcp-apps-approval"},{"title":"choice","sidebarTitle":"choice","href":"/python-sdk/fastmcp-apps-choice"},{"title":"config","sidebarTitle":"config","href":"/python-sdk/fastmcp-apps-config"},{"title":"file_upload","sidebarTitle":"file_upload","href":"/python-sdk/fastmcp-apps-file_upload"},{"title":"form","sidebarTitle":"form","href":"/python-sdk/fastmcp-apps-form"},{"title":"generative","sidebarTitle":"generative","href":"/python-sdk/fastmcp-apps-generative"}]},{"group":"fastmcp.cli","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-cli-__init__"},{"title":"apps_dev","sidebarTitle":"apps_dev","href":"/python-sdk/fastmcp-cli-apps_dev"},{"title":"apps_dev_security","sidebarTitle":"apps_dev_security","href":"/python-sdk/fastmcp-cli-apps_dev_security"},{"title":"auth","sidebarTitle":"auth","href":"/python-sdk/fastmcp-cli-auth"},{"title":"cimd","sidebarTitle":"cimd","href":"/python-sdk/fastmcp-cli-cimd"},{"title":"cli","sidebarTitle":"cli","href":"/python-sdk/fastmcp-cli-cli"},{"title":"client","sidebarTitle":"client","href":"/python-sdk/fastmcp-cli-client"},{"group":"deploy","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-cli-deploy-__init__"},{"title":"authentication","sidebarTitle":"authentication","href":"/python-sdk/fastmcp-cli-deploy-authentication"},{"title":"command","sidebarTitle":"command","href":"/python-sdk/fastmcp-cli-deploy-command"},{"title":"configuration","sidebarTitle":"configuration","href":"/python-sdk/fastmcp-cli-deploy-configuration"},{"title":"credentials","sidebarTitle":"credentials","href":"/python-sdk/fastmcp-cli-deploy-credentials"},{"title":"horizon_client","sidebarTitle":"horizon_client","href":"/python-sdk/fastmcp-cli-deploy-horizon_client"},{"title":"output","sidebarTitle":"output","href":"/python-sdk/fastmcp-cli-deploy-output"},{"title":"state","sidebarTitle":"state","href":"/python-sdk/fastmcp-cli-deploy-state"}]},{"title":"discovery","sidebarTitle":"discovery","href":"/python-sdk/fastmcp-cli-discovery"},{"title":"generate","sidebarTitle":"generate","href":"/python-sdk/fastmcp-cli-generate"},{"group":"install","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-cli-install-__init__"},{"title":"claude_code","sidebarTitle":"claude_code","href":"/python-sdk/fastmcp-cli-install-claude_code"},{"title":"claude_desktop","sidebarTitle":"claude_desktop","href":"/python-sdk/fastmcp-cli-install-claude_desktop"},{"title":"cursor","sidebarTitle":"cursor","href":"/python-sdk/fastmcp-cli-install-cursor"},{"title":"gemini_cli","sidebarTitle":"gemini_cli","href":"/python-sdk/fastmcp-cli-install-gemini_cli"},{"title":"goose","sidebarTitle":"goose","href":"/python-sdk/fastmcp-cli-install-goose"},{"title":"mcp_json","sidebarTitle":"mcp_json","href":"/python-sdk/fastmcp-cli-install-mcp_json"},{"title":"shared","sidebarTitle":"shared","href":"/python-sdk/fastmcp-cli-install-shared"},{"title":"stdio","sidebarTitle":"stdio","href":"/python-sdk/fastmcp-cli-install-stdio"}]},{"title":"run","sidebarTitle":"run","href":"/python-sdk/fastmcp-cli-run"}]},{"group":"fastmcp.client","pages":[{"group":"auth","pages":[{"title":"bearer","sidebarTitle":"bearer","href":"/python-sdk/fastmcp-client-auth-bearer"},{"title":"client_credentials","sidebarTitle":"client_credentials","href":"/python-sdk/fastmcp-client-auth-client_credentials"},{"title":"oauth","sidebarTitle":"oauth","href":"/python-sdk/fastmcp-client-auth-oauth"}]},{"title":"caching","sidebarTitle":"caching","href":"/python-sdk/fastmcp-client-caching"},{"title":"client","sidebarTitle":"client","href":"/python-sdk/fastmcp-client-client"},{"title":"dependencies","sidebarTitle":"dependencies","href":"/python-sdk/fastmcp-client-dependencies"},{"title":"elicitation","sidebarTitle":"elicitation","href":"/python-sdk/fastmcp-client-elicitation"},{"title":"extension_hooks","sidebarTitle":"extension_hooks","href":"/python-sdk/fastmcp-client-extension_hooks"},{"title":"group","sidebarTitle":"group","href":"/python-sdk/fastmcp-client-group"},{"title":"logging","sidebarTitle":"logging","href":"/python-sdk/fastmcp-client-logging"},{"title":"messages","sidebarTitle":"messages","href":"/python-sdk/fastmcp-client-messages"},{"group":"mixins","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-client-mixins-__init__"},{"title":"prompts","sidebarTitle":"prompts","href":"/python-sdk/fastmcp-client-mixins-prompts"},{"title":"resources","sidebarTitle":"resources","href":"/python-sdk/fastmcp-client-mixins-resources"},{"title":"tools","sidebarTitle":"tools","href":"/python-sdk/fastmcp-client-mixins-tools"}]},{"title":"oauth_callback","sidebarTitle":"oauth_callback","href":"/python-sdk/fastmcp-client-oauth_callback"},{"title":"progress","sidebarTitle":"progress","href":"/python-sdk/fastmcp-client-progress"},{"title":"roots","sidebarTitle":"roots","href":"/python-sdk/fastmcp-client-roots"},{"group":"sampling","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-client-sampling-__init__"},{"group":"handlers","pages":[{"title":"anthropic","sidebarTitle":"anthropic","href":"/python-sdk/fastmcp-client-sampling-handlers-anthropic"},{"title":"google_genai","sidebarTitle":"google_genai","href":"/python-sdk/fastmcp-client-sampling-handlers-google_genai"},{"title":"openai","sidebarTitle":"openai","href":"/python-sdk/fastmcp-client-sampling-handlers-openai"}]}]},{"title":"telemetry","sidebarTitle":"telemetry","href":"/python-sdk/fastmcp-client-telemetry"},{"group":"transports","pages":[{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-client-transports-base"},{"title":"config","sidebarTitle":"config","href":"/python-sdk/fastmcp-client-transports-config"},{"title":"http","sidebarTitle":"http","href":"/python-sdk/fastmcp-client-transports-http"},{"title":"inference","sidebarTitle":"inference","href":"/python-sdk/fastmcp-client-transports-inference"},{"title":"memory","sidebarTitle":"memory","href":"/python-sdk/fastmcp-client-transports-memory"},{"title":"sse","sidebarTitle":"sse","href":"/python-sdk/fastmcp-client-transports-sse"},{"title":"stdio","sidebarTitle":"stdio","href":"/python-sdk/fastmcp-client-transports-stdio"}]}]},{"group":"fastmcp.experimental","pages":[{"group":"transforms","pages":[{"title":"code_mode","sidebarTitle":"code_mode","href":"/python-sdk/fastmcp-experimental-transforms-code_mode"},{"title":"jev_search","sidebarTitle":"jev_search","href":"/python-sdk/fastmcp-experimental-transforms-jev_search"}]}]},{"group":"fastmcp.prompts","pages":[{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-prompts-base"},{"title":"function_prompt","sidebarTitle":"function_prompt","href":"/python-sdk/fastmcp-prompts-function_prompt"}]},{"group":"fastmcp.resources","pages":[{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-resources-base"},{"title":"function_resource","sidebarTitle":"function_resource","href":"/python-sdk/fastmcp-resources-function_resource"},{"title":"security","sidebarTitle":"security","href":"/python-sdk/fastmcp-resources-security"},{"title":"template","sidebarTitle":"template","href":"/python-sdk/fastmcp-resources-template"},{"title":"types","sidebarTitle":"types","href":"/python-sdk/fastmcp-resources-types"}]},{"group":"fastmcp.server","pages":[{"group":"auth","pages":[{"title":"auth","sidebarTitle":"auth","href":"/python-sdk/fastmcp-server-auth-auth"},{"title":"cimd","sidebarTitle":"cimd","href":"/python-sdk/fastmcp-server-auth-cimd"},{"group":"handlers","pages":[{"title":"authorize","sidebarTitle":"authorize","href":"/python-sdk/fastmcp-server-auth-handlers-authorize"}]},{"title":"identity_assertion","sidebarTitle":"identity_assertion","href":"/python-sdk/fastmcp-server-auth-identity_assertion"},{"title":"jwt_issuer","sidebarTitle":"jwt_issuer","href":"/python-sdk/fastmcp-server-auth-jwt_issuer"},{"title":"middleware","sidebarTitle":"middleware","href":"/python-sdk/fastmcp-server-auth-middleware"},{"group":"oauth_proxy","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-__init__"},{"title":"consent","sidebarTitle":"consent","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-consent"},{"title":"models","sidebarTitle":"models","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-models"},{"title":"proxy","sidebarTitle":"proxy","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-proxy"},{"title":"ui","sidebarTitle":"ui","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-ui"},{"title":"upstream","sidebarTitle":"upstream","href":"/python-sdk/fastmcp-server-auth-oauth_proxy-upstream"}]},{"title":"oidc_proxy","sidebarTitle":"oidc_proxy","href":"/python-sdk/fastmcp-server-auth-oidc_proxy"},{"group":"providers","pages":[{"title":"auth0","sidebarTitle":"auth0","href":"/python-sdk/fastmcp-server-auth-providers-auth0"},{"title":"aws","sidebarTitle":"aws","href":"/python-sdk/fastmcp-server-auth-providers-aws"},{"title":"azure","sidebarTitle":"azure","href":"/python-sdk/fastmcp-server-auth-providers-azure"},{"title":"clerk","sidebarTitle":"clerk","href":"/python-sdk/fastmcp-server-auth-providers-clerk"},{"title":"debug","sidebarTitle":"debug","href":"/python-sdk/fastmcp-server-auth-providers-debug"},{"title":"descope","sidebarTitle":"descope","href":"/python-sdk/fastmcp-server-auth-providers-descope"},{"title":"discord","sidebarTitle":"discord","href":"/python-sdk/fastmcp-server-auth-providers-discord"},{"title":"github","sidebarTitle":"github","href":"/python-sdk/fastmcp-server-auth-providers-github"},{"title":"google","sidebarTitle":"google","href":"/python-sdk/fastmcp-server-auth-providers-google"},{"title":"huggingface","sidebarTitle":"huggingface","href":"/python-sdk/fastmcp-server-auth-providers-huggingface"},{"title":"in_memory","sidebarTitle":"in_memory","href":"/python-sdk/fastmcp-server-auth-providers-in_memory"},{"title":"introspection","sidebarTitle":"introspection","href":"/python-sdk/fastmcp-server-auth-providers-introspection"},{"title":"jwt","sidebarTitle":"jwt","href":"/python-sdk/fastmcp-server-auth-providers-jwt"},{"title":"keycloak","sidebarTitle":"keycloak","description":null,"href":"/python-sdk/fastmcp-server-auth-providers-keycloak"},{"title":"oci","sidebarTitle":"oci","href":"/python-sdk/fastmcp-server-auth-providers-oci"},{"title":"propelauth","sidebarTitle":"propelauth","description":null,"href":"/python-sdk/fastmcp-server-auth-providers-propelauth"},{"title":"scalekit","sidebarTitle":"scalekit","href":"/python-sdk/fastmcp-server-auth-providers-scalekit"},{"title":"supabase","sidebarTitle":"supabase","href":"/python-sdk/fastmcp-server-auth-providers-supabase"},{"title":"workos","sidebarTitle":"workos","href":"/python-sdk/fastmcp-server-auth-providers-workos"}]},{"title":"redirect_validation","sidebarTitle":"redirect_validation","href":"/python-sdk/fastmcp-server-auth-redirect_validation"},{"title":"ssrf","sidebarTitle":"ssrf","href":"/python-sdk/fastmcp-server-auth-ssrf"}]},{"title":"caching","sidebarTitle":"caching","href":"/python-sdk/fastmcp-server-caching"},{"title":"completions","sidebarTitle":"completions","href":"/python-sdk/fastmcp-server-completions"},{"title":"context","sidebarTitle":"context","href":"/python-sdk/fastmcp-server-context"},{"title":"dependencies","sidebarTitle":"dependencies","href":"/python-sdk/fastmcp-server-dependencies"},{"title":"elicitation","sidebarTitle":"elicitation","href":"/python-sdk/fastmcp-server-elicitation"},{"title":"event_store","sidebarTitle":"event_store","href":"/python-sdk/fastmcp-server-event_store"},{"title":"extensions","sidebarTitle":"extensions","href":"/python-sdk/fastmcp-server-extensions"},{"title":"http","sidebarTitle":"http","href":"/python-sdk/fastmcp-server-http"},{"title":"lifespan","sidebarTitle":"lifespan","href":"/python-sdk/fastmcp-server-lifespan"},{"title":"low_level","sidebarTitle":"low_level","href":"/python-sdk/fastmcp-server-low_level"},{"group":"middleware","pages":[{"title":"authorization","sidebarTitle":"authorization","href":"/python-sdk/fastmcp-server-middleware-authorization"},{"title":"caching","sidebarTitle":"caching","href":"/python-sdk/fastmcp-server-middleware-caching"},{"title":"dereference","sidebarTitle":"dereference","href":"/python-sdk/fastmcp-server-middleware-dereference"},{"title":"error_handling","sidebarTitle":"error_handling","href":"/python-sdk/fastmcp-server-middleware-error_handling"},{"title":"logging","sidebarTitle":"logging","href":"/python-sdk/fastmcp-server-middleware-logging"},{"title":"middleware","sidebarTitle":"middleware","href":"/python-sdk/fastmcp-server-middleware-middleware"},{"title":"ping","sidebarTitle":"ping","href":"/python-sdk/fastmcp-server-middleware-ping"},{"title":"rate_limiting","sidebarTitle":"rate_limiting","href":"/python-sdk/fastmcp-server-middleware-rate_limiting"},{"title":"response_limiting","sidebarTitle":"response_limiting","href":"/python-sdk/fastmcp-server-middleware-response_limiting"},{"title":"timing","sidebarTitle":"timing","href":"/python-sdk/fastmcp-server-middleware-timing"},{"title":"tool_injection","sidebarTitle":"tool_injection","href":"/python-sdk/fastmcp-server-middleware-tool_injection"}]},{"group":"mixins","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-mixins-__init__"},{"title":"extensions","sidebarTitle":"extensions","href":"/python-sdk/fastmcp-server-mixins-extensions"},{"title":"lifespan","sidebarTitle":"lifespan","href":"/python-sdk/fastmcp-server-mixins-lifespan"},{"title":"mcp_operations","sidebarTitle":"mcp_operations","href":"/python-sdk/fastmcp-server-mixins-mcp_operations"},{"title":"transport","sidebarTitle":"transport","href":"/python-sdk/fastmcp-server-mixins-transport"}]},{"group":"providers","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-providers-__init__"},{"title":"addressing","sidebarTitle":"addressing","href":"/python-sdk/fastmcp-server-providers-addressing"},{"title":"aggregate","sidebarTitle":"aggregate","href":"/python-sdk/fastmcp-server-providers-aggregate"},{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-server-providers-base"},{"title":"fastmcp_provider","sidebarTitle":"fastmcp_provider","href":"/python-sdk/fastmcp-server-providers-fastmcp_provider"},{"title":"filesystem","sidebarTitle":"filesystem","href":"/python-sdk/fastmcp-server-providers-filesystem"},{"title":"filesystem_discovery","sidebarTitle":"filesystem_discovery","href":"/python-sdk/fastmcp-server-providers-filesystem_discovery"},{"group":"local_provider","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-providers-local_provider-__init__"},{"group":"decorators","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-providers-local_provider-decorators-__init__"},{"title":"prompts","sidebarTitle":"prompts","href":"/python-sdk/fastmcp-server-providers-local_provider-decorators-prompts"},{"title":"resources","sidebarTitle":"resources","href":"/python-sdk/fastmcp-server-providers-local_provider-decorators-resources"},{"title":"tools","sidebarTitle":"tools","href":"/python-sdk/fastmcp-server-providers-local_provider-decorators-tools"}]},{"title":"local_provider","sidebarTitle":"local_provider","href":"/python-sdk/fastmcp-server-providers-local_provider-local_provider"}]},{"group":"openapi","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-providers-openapi-__init__"},{"title":"components","sidebarTitle":"components","href":"/python-sdk/fastmcp-server-providers-openapi-components"},{"title":"provider","sidebarTitle":"provider","href":"/python-sdk/fastmcp-server-providers-openapi-provider"},{"title":"routing","sidebarTitle":"routing","href":"/python-sdk/fastmcp-server-providers-openapi-routing"}]},{"title":"prefab_payload","sidebarTitle":"prefab_payload","href":"/python-sdk/fastmcp-server-providers-prefab_payload"},{"title":"prefab_synthesis","sidebarTitle":"prefab_synthesis","href":"/python-sdk/fastmcp-server-providers-prefab_synthesis"},{"title":"proxy","sidebarTitle":"proxy","href":"/python-sdk/fastmcp-server-providers-proxy"},{"group":"skills","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-providers-skills-__init__"},{"title":"claude_provider","sidebarTitle":"claude_provider","href":"/python-sdk/fastmcp-server-providers-skills-claude_provider"},{"title":"directory_provider","sidebarTitle":"directory_provider","href":"/python-sdk/fastmcp-server-providers-skills-directory_provider"},{"title":"skill_provider","sidebarTitle":"skill_provider","href":"/python-sdk/fastmcp-server-providers-skills-skill_provider"},{"title":"vendor_providers","sidebarTitle":"vendor_providers","href":"/python-sdk/fastmcp-server-providers-skills-vendor_providers"}]},{"title":"wrapped_provider","sidebarTitle":"wrapped_provider","href":"/python-sdk/fastmcp-server-providers-wrapped_provider"}]},{"title":"server","sidebarTitle":"server","href":"/python-sdk/fastmcp-server-server"},{"title":"session_scoped_event_store","sidebarTitle":"session_scoped_event_store","href":"/python-sdk/fastmcp-server-session_scoped_event_store"},{"title":"sessions","sidebarTitle":"sessions","href":"/python-sdk/fastmcp-server-sessions"},{"title":"telemetry","sidebarTitle":"telemetry","href":"/python-sdk/fastmcp-server-telemetry"},{"group":"transforms","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-transforms-__init__"},{"title":"catalog","sidebarTitle":"catalog","href":"/python-sdk/fastmcp-server-transforms-catalog"},{"title":"namespace","sidebarTitle":"namespace","href":"/python-sdk/fastmcp-server-transforms-namespace"},{"title":"prompts_as_tools","sidebarTitle":"prompts_as_tools","href":"/python-sdk/fastmcp-server-transforms-prompts_as_tools"},{"title":"resources_as_tools","sidebarTitle":"resources_as_tools","href":"/python-sdk/fastmcp-server-transforms-resources_as_tools"},{"group":"search","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-server-transforms-search-__init__"},{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-server-transforms-search-base"},{"title":"bm25","sidebarTitle":"bm25","href":"/python-sdk/fastmcp-server-transforms-search-bm25"},{"title":"regex","sidebarTitle":"regex","href":"/python-sdk/fastmcp-server-transforms-search-regex"}]},{"title":"tool_transform","sidebarTitle":"tool_transform","href":"/python-sdk/fastmcp-server-transforms-tool_transform"},{"title":"version_filter","sidebarTitle":"version_filter","href":"/python-sdk/fastmcp-server-transforms-version_filter"},{"title":"visibility","sidebarTitle":"visibility","href":"/python-sdk/fastmcp-server-transforms-visibility"}]}]},{"group":"fastmcp.tools","pages":[{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-tools-base"},{"title":"function_parsing","sidebarTitle":"function_parsing","href":"/python-sdk/fastmcp-tools-function_parsing"},{"title":"function_tool","sidebarTitle":"function_tool","href":"/python-sdk/fastmcp-tools-function_tool"},{"title":"tool_transform","sidebarTitle":"tool_transform","href":"/python-sdk/fastmcp-tools-tool_transform"}]},{"group":"fastmcp.utilities","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-utilities-__init__"},{"title":"asgi_transport","sidebarTitle":"asgi_transport","href":"/python-sdk/fastmcp-utilities-asgi_transport"},{"title":"async_utils","sidebarTitle":"async_utils","href":"/python-sdk/fastmcp-utilities-async_utils"},{"title":"auth","sidebarTitle":"auth","href":"/python-sdk/fastmcp-utilities-auth"},{"title":"authorization","sidebarTitle":"authorization","href":"/python-sdk/fastmcp-utilities-authorization"},{"title":"cli","sidebarTitle":"cli","href":"/python-sdk/fastmcp-utilities-cli"},{"title":"components","sidebarTitle":"components","href":"/python-sdk/fastmcp-utilities-components"},{"title":"docstring_parsing","sidebarTitle":"docstring_parsing","href":"/python-sdk/fastmcp-utilities-docstring_parsing"},{"title":"exceptions","sidebarTitle":"exceptions","href":"/python-sdk/fastmcp-utilities-exceptions"},{"title":"http","sidebarTitle":"http","href":"/python-sdk/fastmcp-utilities-http"},{"title":"inspect","sidebarTitle":"inspect","href":"/python-sdk/fastmcp-utilities-inspect"},{"title":"json_schema","sidebarTitle":"json_schema","href":"/python-sdk/fastmcp-utilities-json_schema"},{"title":"json_schema_type","sidebarTitle":"json_schema_type","href":"/python-sdk/fastmcp-utilities-json_schema_type"},{"title":"lifespan","sidebarTitle":"lifespan","href":"/python-sdk/fastmcp-utilities-lifespan"},{"title":"logging","sidebarTitle":"logging","href":"/python-sdk/fastmcp-utilities-logging"},{"group":"mcp_server_config","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-utilities-mcp_server_config-__init__"},{"group":"v1","pages":[{"group":"environments","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__"},{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base"},{"title":"uv","sidebarTitle":"uv","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv"}]},{"title":"mcp_server_config","sidebarTitle":"mcp_server_config","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config"},{"group":"sources","pages":[{"title":"base","sidebarTitle":"base","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base"},{"title":"filesystem","sidebarTitle":"filesystem","href":"/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem"}]}]}]},{"title":"mime","sidebarTitle":"mime","href":"/python-sdk/fastmcp-utilities-mime"},{"group":"openapi","pages":[{"title":"__init__","sidebarTitle":"__init__","href":"/python-sdk/fastmcp-utilities-openapi-__init__"},{"title":"director","sidebarTitle":"director","href":"/python-sdk/fastmcp-utilities-openapi-director"},{"title":"formatters","sidebarTitle":"formatters","href":"/python-sdk/fastmcp-utilities-openapi-formatters"},{"title":"json_schema_converter","sidebarTitle":"json_schema_converter","href":"/python-sdk/fastmcp-utilities-openapi-json_schema_converter"},{"title":"models","sidebarTitle":"models","href":"/python-sdk/fastmcp-utilities-openapi-models"},{"title":"parser","sidebarTitle":"parser","href":"/python-sdk/fastmcp-utilities-openapi-parser"},{"title":"schemas","sidebarTitle":"schemas","href":"/python-sdk/fastmcp-utilities-openapi-schemas"}]},{"title":"pagination","sidebarTitle":"pagination","href":"/python-sdk/fastmcp-utilities-pagination"},{"title":"prefab","sidebarTitle":"prefab","href":"/python-sdk/fastmcp-utilities-prefab"},{"title":"skills","sidebarTitle":"skills","href":"/python-sdk/fastmcp-utilities-skills"},{"title":"tasks","sidebarTitle":"tasks","href":"/python-sdk/fastmcp-utilities-tasks"},{"title":"tests","sidebarTitle":"tests","href":"/python-sdk/fastmcp-utilities-tests"},{"title":"timeout","sidebarTitle":"timeout","href":"/python-sdk/fastmcp-utilities-timeout"},{"title":"token_cache","sidebarTitle":"token_cache","href":"/python-sdk/fastmcp-utilities-token_cache"},{"title":"types","sidebarTitle":"types","href":"/python-sdk/fastmcp-utilities-types"},{"title":"ui","sidebarTitle":"ui","href":"/python-sdk/fastmcp-utilities-ui"},{"title":"version_check","sidebarTitle":"version_check","href":"/python-sdk/fastmcp-utilities-version_check"},{"title":"versions","sidebarTitle":"versions","href":"/python-sdk/fastmcp-utilities-versions"}]}]}]}]},{"version":"v3.4.4","pages":[{"title":"v3.4.4","href":"/v3/getting-started/welcome"}]},{"version":"v2.14.5","pages":[{"title":"v2.14.5","href":"/v2/getting-started/welcome"}]}]},"basePath":"","title":"oci - FastMCP","buildId":"dpl_DQCMP4mismmBj3AFK7YZqNhrtLNq","deploymentId":"dpl_DQCMP4mismmBj3AFK7YZqNhrtLNq","dynamics":["10e4515597"],"chunks":["BannerMarkdown-Brp0mPUt.js","dist-Dpla8_R7.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-C_advUgl.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}