How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider’s side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn’t enough, deauthorize MCP Manager’s app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.
A remote MCP server that connected fine and later stopped working is almost always an authentication problem, not an outage. The most stubborn version is a stale authorization on the provider’s side: the provider — Asana, Atlassian, Slack, and so on — is holding an old authorization for MCP Manager that no longer works, and it keeps handing that same dead authorization back instead of prompting you to authorize again. Reconnecting inside MCP Manager alone doesn’t clear it. This page shows how to recognize that case and fix it.
This page is for a connection that worked before and then broke. If instead a server is temporarily down or unreachable, that’s an outage —
see Gateway Resiliency. If you’re running your own server and the OAuth step fails because the server lost the
client MCP Manager registered (often a “client not registered” error), that’s a different problem — see Debugging self-hosted
OAuth and the stale dynamic-client registration edge
behavior.
The identity shows a broken-status badge. On the server’s Identities tab, the identity for the affected server is flagged — Needs authentication while its credential might still recover, or the terminal Disconnected once a definitive rejection has archived the stored credential (a transient blip shows a shorter-lived Not connected). See what each status means. MCP Manager also stops offering a broken identity as an automatic choice, and makes it non-selectable in the connection flow — it never silently picks a credential it knows is broken.
Tool calls fail with a re-authentication error. In your AI client, a call to that server comes back with:
MCP Manager needs ‘Asana’ to be re-authenticated before this request can complete. Visit your gateway settings to reconnect.
Nothing about your setup changed. The failure persists even though your Client ID and Client Secret are unchanged and still correct. Because you set this connection up successfully before, a message pointing you at your credentials is usually a red herring for this failure — what changed is the authorization on the provider’s side, not your app registration.
The tell: no consent screen on retry. When you try to reconnect (below), the provider’s consent screen doesn’t appear — the authorization tab flashes and closes in about a second — and the connection still fails. That near-instant, no-consent round trip is the fingerprint of a stale authorization: the provider auto-approves an authorization it already has, then rejects the token it just issued.
If the reconnect in Step 1 below does show a real consent screen and then works, you had an ordinary expired token, not a stale authorization —
you’re done. The rest of this page is for when the consent screen never appears.
MCP Manager refreshes OAuth tokens automatically, so a healthy connection keeps working without you re-authenticating. A connection goes stale when the authorization on the provider’s side is gone or blocked while the provider still treats its app authorization as active. Common triggers:
You changed your password or your security settings with the provider.
An administrator at the provider revoked or blocked the app.
You removed the account, workspace, or app that the original authorization was tied to.
For providers that rotate refresh tokens on a fixed schedule, the authorization simply reached the end of its life — roughly every 90 days for some (Atlassian, for example), which makes this a routine re-authentication rather than a one-off failure.
Re-adding your identity inside MCP Manager often isn’t enough on its own. MCP Manager reuses one registered OAuth application per server and, for most providers, does not force the provider to show its consent screen again. It also has no way to revoke its own authorization on the provider for you. So if the provider still holds a stale authorization, a fresh attempt is silently auto-approved against that same dead authorization. The one action that reliably clears it is to deauthorize the app on the provider’s side, which forces the provider to prompt for consent the next time — and that is something only you, or a provider administrator, can do.
Google-backed servers are the exception. MCP Manager always forces a fresh consent screen when you re-authorize a Google server, so the
provider-side deauthorize step below is usually unnecessary for them — a straight reconnect (Step 1) is normally enough.
Try re-authenticating first — and use it to diagnose
In MCP Manager, go to the Servers page, open the affected server, and on its Identities tab open the broken identity and click Authenticate again (or, for a brand-new identity, Add a new identity). For an OAuth server this launches the provider’s authorization in a new browser tab. Watch that tab:
If the provider shows its consent screen, you approve it, and the connection starts working — you’re done. This was an ordinary expired token, and Authenticate again has already moved your gateways and connections onto the repaired identity.
If the tab flashes and closes with no consent screen, and the connection still fails, the provider is holding a stale authorization. Continue to the next step.
2
Deauthorize MCP Manager's app on the provider
This is the load-bearing step — it forces the provider to prompt for consent again next time. The exact location differs per provider (see the table below); the pattern is always to remove MCP Manager’s authorization in the provider’s connected-apps settings.In Asana, for example: click your avatar to open Settings, choose Apps in the left column, find the MCP Manager app under Authorized Apps (named something like “Asana MCP company-wide”), and click Deauthorize.
If several apps look similar, match the one whose last activity date lines up with roughly when your connection stopped working.
3
Re-authenticate the identity
Back in MCP Manager, on the same Identities tab, open the affected identity and click Authenticate again, then confirm Yes, re-authenticate. This time, because you deauthorized on the provider’s side, the provider shows a real consent screen — approve it.Because identities are write-once, MCP Manager mints a new identity with brand-new credentials that no longer reference the stale ones, then moves your gateway assignments and connections onto it automatically and retires the old one — so you don’t have to re-select the identity everywhere it was used.
Authenticate again repairs your own OAuth identities, and is the preferred fix because it carries your existing uses over for you. If the identity is a shared (Global) service account or authenticates with a header token rather than OAuth, re-establish it instead by updating its credential or adding a new identity — in this release the automatic move-your-uses-over step applies to your own OAuth identities.
4
Verify the connection is healthy
The identity’s broken-status badge (Needs authentication or Disconnected) should clear, and a tool call to the server should now succeed from your AI client.
The step that actually clears a stale authorization is removing MCP Manager’s authorization in the provider’s own settings — look for connected apps, authorized apps, or third-party access. The location varies by provider, and the provider’s own documentation is authoritative for the exact path.
In the provider’s account or security settings, find connected / authorized / third-party apps and remove the MCP Manager entry
Google
Usually unnecessary — MCP Manager forces a fresh consent screen for Google servers on every re-authorization (see the note above)
Some providers expire authorizations on a fixed schedule — roughly every 90 days for Atlassian, for example — so this kind of re-authentication can be
a routine, recurring event rather than a sign that something is broken.
If a fresh consent screen still doesn’t restore the connection, the cause is likely outside your control as an individual user:
Ask a provider administrator to check the app’s status. The app may be blocked or pending approval at the organization level in the provider’s app-management settings — something a single user can’t clear.
Contact the provider’s support with the timestamps of the failed attempts and, if you have it, the exact error the provider returned (for example, an invalid_grant response from its token endpoint). A connection problem rooted in how the provider works is fastest to resolve at the source.
Contact MCP Manager support if you believe the problem is on the MCP Manager side — include the correlation ID from the error so the request can be traced.
This flow clears the most common cause of a broken connection — a stale authorization on the provider’s side. It does not address a provider
outage or a self-hosted server that lost the client MCP Manager registered (debugging self-hosted
OAuth).
When an identity’s credential stops working versus a plain server outage, and how each is surfaced.
Authentication & Identity
How MCP Manager stores credentials, refreshes tokens automatically, and what happens when a refresh fails.
Connection Experience
The guided, server-by-server connection flow and how saved identities are reused.
Validate MCP Servers
Confirm a server and its credentials work in isolation with an open inspector before diagnosing further.
Find & Connect MCP Servers
How MCP Manager detects a server’s authentication type, and the per-server connection guides.
Connect Asana
The Asana setup guide — registering the app, Client ID and Secret, and the OAuth approval.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MCP Manager","description":"MCP Manager by Usercentrics is the governance and security layer for Model Context Protocol — connect, control, and monitor MCP servers and gateways across your organization.","colors":{"primary":"#0E7490","light":"#22D3EE","dark":"#0E7490"},"logo":{"light":"https://mintcdn.com/mcpmanagerbyusercentrics/6VTit4ttpXMM_zQN/images/mcp-manager-gradient-horizontal.png?fit=max\u0026auto=format\u0026n=6VTit4ttpXMM_zQN\u0026q=85\u0026s=e94ab5f0ba0a199071d9382c369a563e","dark":"https://mintcdn.com/mcpmanagerbyusercentrics/6VTit4ttpXMM_zQN/images/mcp-manager-white-horizontal.png?fit=max\u0026auto=format\u0026n=6VTit4ttpXMM_zQN\u0026q=85\u0026s=03d0f45c0c62b8c1b31002cd74b751c0"},"favicon":{"light":"https://mintcdn.com/mcpmanagerbyusercentrics/gKqTvJPtsRi2bLNx/images/android-chrome-512x512.png?fit=max\u0026auto=format\u0026n=gKqTvJPtsRi2bLNx\u0026q=85\u0026s=4e67940baa41dee1997379b94a6740fb","dark":"https://mintcdn.com/mcpmanagerbyusercentrics/gKqTvJPtsRi2bLNx/images/android-chrome-512x512.png?fit=max\u0026auto=format\u0026n=gKqTvJPtsRi2bLNx\u0026q=85\u0026s=4e67940baa41dee1997379b94a6740fb"},"footer":{"socials":{}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mcpmanagerbyusercentrics","hasAudioNarration":false,"actualSubdomain":"mcpmanagerbyusercentrics","customDomains":["docs.mcpmanager.ai"],"gitSource":{"type":"github","owner":"mcp-manager","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeb898436ecec2d732358c6","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Features","count":19},{"language":"default","tag":"MCP Server Guides","count":14},{"language":"default","tag":"Admin API \u0026 MCP","count":13},{"language":"default","tag":"Enterprise","count":13},{"language":"default","tag":"Deployment","count":11},{"language":"default","tag":"MCP Gateway Concepts","count":11},{"language":"default","tag":"Gateway Rules","count":10},{"language":"default","tag":"Industries","count":10},{"language":"default","tag":"Tutorials","count":10},{"language":"default","tag":"Advanced","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"advanced/fixing-broken-connections","slug":"/advanced/fixing-broken-connections","pageMetadata":{"title":"Fix a Broken or Stale MCP Connection","diataxis":"how-to","sidebarTitle":"Fix a Broken Connection","description":"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider's side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn't enough, deauthorize MCP Manager's app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.","icon":"plug-circle-xmark","keywords":["broken MCP connection","stale connection","corrupted connection","reconnect MCP server","re-authenticate","reauthorize","Authenticate again","deauthorize","OAuth","invalid_grant","Not connected","Needs authentication","Disconnected","delete identity","re-add identity","stale grant","token refresh failed","Asana"],"href":"/advanced/fixing-broken-connections"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider’s side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn’t enough, deauthorize MCP Manager’s app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"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={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Heading,Note,Step,Steps,Table,Tip}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`A remote MCP server that connected fine and later stopped working is almost always an `,_jsx(_components.strong,{children:`authentication`}),` problem, not an outage. The most stubborn version is a `,_jsx(_components.strong,{children:`stale authorization on the provider’s side`}),`: the provider — Asana, Atlassian, Slack, and so on — is holding an old authorization for `,_jsx(_components.strong,{children:`MCP Manager`}),` that no longer works, and it keeps handing that same dead authorization back instead of prompting you to authorize again. Reconnecting inside MCP Manager alone doesn’t clear it. This page shows how to recognize that case and fix it.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`This page is for a connection that `,_jsx(_components.strong,{children:`worked before and then broke`}),`. If instead a server is temporarily `,_jsx(_components.strong,{children:`down or unreachable`}),`, that’s an outage —\nsee `,_jsx(_components.a,{href:`/advanced/gateway-resiliency`,children:`Gateway Resiliency`}),`. If you’re running `,_jsx(_components.strong,{children:`your own`}),` server and the OAuth step fails because the server lost the\nclient MCP Manager registered (often a “client not registered” error), that’s a different problem — see `,_jsx(_components.a,{href:`/build-your-own-mcp-server/debugging-self-hosted-oauth`,children:`Debugging self-hosted\nOAuth`}),` and the `,_jsx(_components.a,{href:`/security/authentication-and-identity#edge-and-failure-behavior`,children:`stale dynamic-client registration edge\nbehavior`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`recognize-a-stale-connection`,children:`Recognize a stale connection`}),`\n`,_jsx(_components.p,{children:`You’ll see some combination of the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The identity shows a broken-status badge.`}),` On the server’s `,_jsx(_components.a,{href:`https://app.mcpmanager.ai/settings/servers`,children:`Identities`}),` tab, the identity for the affected server is flagged — `,_jsx(_components.strong,{children:`Needs authentication`}),` while its credential might still recover, or the terminal `,_jsx(_components.strong,{children:`Disconnected`}),` once a definitive rejection has archived the stored credential (a transient blip shows a shorter-lived `,_jsx(_components.strong,{children:`Not connected`}),`). See `,_jsx(_components.a,{href:`/security/authentication-and-identity#identity-authentication-statuses`,children:`what each status means`}),`. MCP Manager also stops offering a broken identity as an automatic choice, and makes it non-selectable in the connection flow — it never silently picks a credential it knows is broken.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tool calls fail with a re-authentication error.`}),` In your AI client, a call to that server comes back with:`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`MCP Manager needs ‘Asana’ to be re-authenticated before this request can complete. Visit your gateway settings to reconnect.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Nothing about your setup changed.`}),` The failure persists even though your Client ID and Client Secret are unchanged and still correct. Because you set this connection up successfully before, a message pointing you at your credentials is usually a red herring for this failure — what changed is the authorization on the provider’s side, not your app registration.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`The tell: no consent screen on retry.`}),` When you try to reconnect (below), the provider’s `,_jsx(_components.strong,{children:`consent screen doesn’t appear`}),` — the authorization tab flashes and closes in about a second — and the connection still fails. That near-instant, no-consent round trip is the fingerprint of a stale authorization: the provider auto-approves an authorization it already has, then rejects the token it just issued.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If the reconnect in Step 1 below `,_jsx(_components.strong,{children:`does`}),` show a real consent screen and then works, you had an ordinary expired token, not a stale authorization —\nyou’re done. The rest of this page is for when the consent screen never appears.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`why-it-happens`,children:`Why it happens`}),`\n`,_jsxs(_components.p,{children:[`MCP Manager refreshes OAuth tokens automatically, so a healthy connection keeps working without you re-authenticating. A connection goes stale when the `,_jsx(_components.strong,{children:`authorization on the provider’s side`}),` is gone or blocked while the provider still treats its app authorization as active. Common triggers:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You changed your password or your security settings with the provider.`}),`\n`,_jsx(_components.li,{children:`An administrator at the provider revoked or blocked the app.`}),`\n`,_jsx(_components.li,{children:`You removed the account, workspace, or app that the original authorization was tied to.`}),`\n`,_jsx(_components.li,{children:`For providers that rotate refresh tokens on a fixed schedule, the authorization simply reached the end of its life — roughly every 90 days for some (Atlassian, for example), which makes this a routine re-authentication rather than a one-off failure.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Re-adding your identity inside MCP Manager often isn’t enough on its own. MCP Manager reuses `,_jsx(_components.strong,{children:`one registered OAuth application per server`}),` and, for most providers, does not force the provider to show its consent screen again. It also has no way to revoke its own authorization on the provider for you. So if the provider still holds a stale authorization, a fresh attempt is silently auto-approved against that same dead authorization. The one action that reliably clears it is to `,_jsx(_components.strong,{children:`deauthorize the app on the provider’s side`}),`, which forces the provider to prompt for consent the next time — and that is something only you, or a provider administrator, can do.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Google-backed servers are the exception.`}),` MCP Manager always forces a fresh consent screen when you re-authorize a Google server, so the\nprovider-side deauthorize step below is usually unnecessary for them — a straight reconnect (Step 1) is normally enough.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`fix-it`,children:`Fix it`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Try re-authenticating first — and use it to diagnose`,children:[_jsxs(_components.p,{children:[`In MCP Manager, go to the `,_jsx(_components.a,{href:`https://app.mcpmanager.ai/settings/servers`,children:`Servers`}),` page, open the affected server, and on its `,_jsx(_components.strong,{children:`Identities`}),` tab open the broken identity and click `,_jsx(_components.strong,{children:`Authenticate again`}),` (or, for a brand-new identity, `,_jsx(_components.strong,{children:`Add a new identity`}),`). For an OAuth server this launches the provider’s authorization in a new browser tab. Watch that tab:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`If the provider shows its `,_jsx(_components.strong,{children:`consent screen`}),`, you approve it, and the connection starts working — you’re done. This was an ordinary expired token, and `,_jsx(_components.strong,{children:`Authenticate again`}),` has already moved your gateways and connections onto the repaired identity.`]}),`\n`,_jsxs(_components.li,{children:[`If the tab `,_jsx(_components.strong,{children:`flashes and closes with no consent screen`}),`, and the connection still fails, the provider is holding a stale authorization. Continue to the next step.`]}),`\n`]})]}),_jsxs(Step,{title:`Deauthorize MCP Manager's app on the provider`,children:[_jsxs(_components.p,{children:[`This is the load-bearing step — it forces the provider to prompt for consent again next time. The exact location differs per provider (see `,_jsx(_components.a,{href:`#where-to-deauthorize-by-provider`,children:`the table below`}),`); the pattern is always to remove MCP Manager’s authorization in the provider’s connected-apps settings.`]}),_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Asana`}),`, for example: click your avatar to open `,_jsx(_components.strong,{children:`Settings`}),`, choose `,_jsx(_components.strong,{children:`Apps`}),` in the left column, find the MCP Manager app under `,_jsx(_components.strong,{children:`Authorized Apps`}),` (named something like `,_jsx(_components.strong,{children:`“Asana MCP company-wide”`}),`), and click `,_jsx(_components.strong,{children:`Deauthorize`}),`.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`If several apps look similar, match the one whose `,_jsx(_components.strong,{children:`last activity`}),` date lines up with roughly when your connection stopped working.`]})})]}),_jsxs(Step,{title:`Re-authenticate the identity`,children:[_jsxs(_components.p,{children:[`Back in MCP Manager, on the same `,_jsx(_components.strong,{children:`Identities`}),` tab, open the affected identity and click `,_jsx(_components.strong,{children:`Authenticate again`}),`, then confirm `,_jsx(_components.strong,{children:`Yes, re-authenticate`}),`. This time, because you deauthorized on the provider’s side, the provider shows a real `,_jsx(_components.strong,{children:`consent screen`}),` — approve it.`]}),_jsxs(_components.p,{children:[`Because identities are write-once, MCP Manager mints a `,_jsx(_components.strong,{children:`new`}),` identity with brand-new credentials that no longer reference the stale ones, then `,_jsx(_components.strong,{children:`moves your gateway assignments and connections onto it automatically`}),` and retires the old one — so you don’t have to re-select the identity everywhere it was used.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Authenticate again`}),` repairs your `,_jsx(_components.strong,{children:`own OAuth`}),` identities, and is the preferred fix because it carries your existing uses over for you. If the identity is a `,_jsx(_components.strong,{children:`shared (Global) service account`}),` or authenticates with a `,_jsx(_components.strong,{children:`header token`}),` rather than OAuth, re-establish it instead by updating its credential or adding a new identity — in this release the automatic move-your-uses-over step applies to your own OAuth identities.`]})})]}),_jsx(Step,{title:`Verify the connection is healthy`,children:_jsxs(_components.p,{children:[`The identity’s broken-status badge (`,_jsx(_components.strong,{children:`Needs authentication`}),` or `,_jsx(_components.strong,{children:`Disconnected`}),`) should clear, and a tool call to the server should now succeed from your AI client.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-deauthorize-by-provider`,children:`Where to deauthorize, by provider`}),`\n`,_jsxs(_components.p,{children:[`The step that actually clears a stale authorization is removing MCP Manager’s authorization in the `,_jsx(_components.strong,{children:`provider’s`}),` own settings — look for `,_jsx(_components.strong,{children:`connected apps`}),`, `,_jsx(_components.strong,{children:`authorized apps`}),`, or `,_jsx(_components.strong,{children:`third-party access`}),`. The location varies by provider, and the provider’s own documentation is authoritative for the exact path.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Provider`}),_jsx(_components.th,{children:`Where to deauthorize MCP Manager’s app`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Asana`}),` (worked example)`]}),_jsxs(_components.td,{children:[`Settings → `,_jsx(_components.strong,{children:`Apps`}),` → `,_jsx(_components.strong,{children:`Authorized Apps`}),` → the MCP Manager app (e.g. “Asana MCP company-wide”) → `,_jsx(_components.strong,{children:`Deauthorize`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Atlassian, Slack, and other OAuth providers`})}),_jsx(_components.td,{children:`In the provider’s account or security settings, find connected / authorized / third-party apps and remove the MCP Manager entry`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Google`})}),_jsx(_components.td,{children:`Usually unnecessary — MCP Manager forces a fresh consent screen for Google servers on every re-authorization (see the note above)`})]})]})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Some providers expire authorizations on a fixed schedule — roughly every 90 days for Atlassian, for example — so this kind of re-authentication can be\na routine, recurring event rather than a sign that something is broken.`})}),`\n`,_jsx(Heading,{level:`2`,id:`still-not-connecting`,children:`Still not connecting?`}),`\n`,_jsx(_components.p,{children:`If a fresh consent screen still doesn’t restore the connection, the cause is likely outside your control as an individual user:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Ask a provider administrator to check the app’s status.`}),` The app may be `,_jsx(_components.strong,{children:`blocked`}),` or pending approval at the organization level in the provider’s app-management settings — something a single user can’t clear.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contact the provider’s support`}),` with the timestamps of the failed attempts and, if you have it, the exact error the provider returned (for example, an `,_jsx(_components.code,{children:`invalid_grant`}),` response from its token endpoint). A connection problem rooted in how the provider works is fastest to resolve at the source.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contact MCP Manager support`}),` if you believe the problem is on the MCP Manager side — include the `,_jsx(_components.strong,{children:`correlation ID`}),` from the error so the request can be traced.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`This flow clears the most common cause of a broken connection — a stale authorization on the provider’s side. It does not address a provider\n`,_jsx(_components.a,{href:`/advanced/gateway-resiliency`,children:`outage`}),` or a self-hosted server that lost the client MCP Manager registered (`,_jsx(_components.a,{href:`/build-your-own-mcp-server/debugging-self-hosted-oauth`,children:`debugging self-hosted\nOAuth`}),`).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`further-reading`,children:`Further reading`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Gateway Resiliency`,icon:`heart-pulse`,href:`/advanced/gateway-resiliency#when-an-identitys-credential-stops-working`,children:_jsx(_components.p,{children:`When an identity’s credential stops working versus a plain server outage, and how each is surfaced.`})}),_jsx(Card,{title:`Authentication \u0026 Identity`,icon:`fingerprint`,href:`/security/authentication-and-identity#token-lifecycle-refresh-rotation-and-revocation`,children:_jsx(_components.p,{children:`How MCP Manager stores credentials, refreshes tokens automatically, and what happens when a refresh fails.`})}),_jsx(Card,{title:`Connection Experience`,icon:`plug-circle-check`,href:`/features/connection-experience`,children:_jsx(_components.p,{children:`The guided, server-by-server connection flow and how saved identities are reused.`})}),_jsx(Card,{title:`Validate MCP Servers`,icon:`plug-circle-check`,href:`/advanced/validate-mcp-servers`,children:_jsx(_components.p,{children:`Confirm a server and its credentials work in isolation with an open inspector before diagnosing further.`})}),_jsx(Card,{title:`Find \u0026 Connect MCP Servers`,icon:`compass`,href:`/mcp-server-guides/overview`,children:_jsx(_components.p,{children:`How MCP Manager detects a server’s authentication type, and the per-server connection guides.`})}),_jsx(Card,{title:`Connect Asana`,icon:`https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=427a154ab4b6d9525ee820c61e5e8796`,href:`/mcp-server-guides/asana`,\"data-og-width\":`251`,width:`251`,\"data-og-height\":`232`,height:`232`,\"data-path\":`icons/asana.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=280\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=702af38378cac3b5ec42815b09b5f4e3 280w, https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=560\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=cae57df9f2cdfc6bd33d401b927bef07 560w, https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=840\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=11be57001b5fdd8aa749f1244a293e83 840w, https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=f60a9baa0de49acc83144da67cd08259 1100w, https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=cd1f00a0aeb8a45474b6899fbe70e545 1650w, https://mintcdn.com/mcpmanagerbyusercentrics/2mmzGFJHOMDidO8P/icons/asana.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=2mmzGFJHOMDidO8P\u0026q=85\u0026s=4e2d1297a2a35bf535e136330b29f675 2500w`,children:_jsx(_components.p,{children:`The Asana setup guide — registering the app, Client ID and Secret, and the OAuth approval.`})})]})]})}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":{"config":{},"pageMetadata":{"title":"Fix a Broken or Stale MCP Connection","diataxis":"how-to","sidebarTitle":"Fix a Broken Connection","description":"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider's side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn't enough, deauthorize MCP Manager's app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.","icon":"plug-circle-xmark","keywords":["broken MCP connection","stale connection","corrupted connection","reconnect MCP server","re-authenticate","reauthorize","Authenticate again","deauthorize","OAuth","invalid_grant","Not connected","Needs authentication","Disconnected","delete identity","re-add identity","stale grant","token refresh failed","Asana"],"href":"/advanced/fixing-broken-connections"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Recognize a stale connection","slug":"recognize-a-stale-connection","depth":2,"children":[]},{"title":"Why it happens","slug":"why-it-happens","depth":2,"children":[]},{"title":"Fix it","slug":"fix-it","depth":2,"children":[]},{"title":"Where to deauthorize, by provider","slug":"where-to-deauthorize-by-provider","depth":2,"children":[]},{"title":"Still not connecting?","slug":"still-not-connecting","depth":2,"children":[]},{"title":"Further reading","slug":"further-reading","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"mcpmanagerbyusercentrics","siteName":"MCP Manager","title":"Fix a Broken or Stale MCP Connection - MCP Manager","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-24T13:56:35.341Z","originalFileLocation":"advanced/fixing-broken-connections.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=\"description\" content=\"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider\u0026#x27;s side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn\u0026#x27;t enough, deauthorize MCP Manager\u0026#x27;s app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\">\u003cmeta data-mint-head name=\"application-name\" content=\"MCP Manager\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_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=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Fix a Broken or Stale MCP Connection - MCP Manager\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider\u0026#x27;s side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn\u0026#x27;t enough, deauthorize MCP Manager\u0026#x27;s app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MCP Manager\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mcpmanagerbyusercentrics.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Fix+a+Broken+or+Stale+MCP+Connection\u0026amp;description=How+to+fix+a+remote+MCP+server+connection+that+worked+before+and+then+broke+because+of+a+stale+authorization+held+on+the+provider%27s+side.+Recognize+the+symptoms\u0026amp;theme=c1e0fba9470b1ccc41367e04\u0026amp;signature=990c17258e220132eae52dcfcaa62304ebe4a0992c7aad4e6f57caad06f3a1ef\">\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=\"Fix a Broken or Stale MCP Connection - MCP Manager\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider\u0026#x27;s side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn\u0026#x27;t enough, deauthorize MCP Manager\u0026#x27;s app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mcpmanagerbyusercentrics.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Fix+a+Broken+or+Stale+MCP+Connection\u0026amp;description=How+to+fix+a+remote+MCP+server+connection+that+worked+before+and+then+broke+because+of+a+stale+authorization+held+on+the+provider%27s+side.+Recognize+the+symptoms\u0026amp;theme=c1e0fba9470b1ccc41367e04\u0026amp;signature=990c17258e220132eae52dcfcaa62304ebe4a0992c7aad4e6f57caad06f3a1ef\">\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=\"/mintlify-assets/_mintlify/favicons/mcpmanagerbyusercentrics/VOFxFtXGpF8ZdNYo/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MCP Manager\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0E7490\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/advanced/fixing-broken-connections.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mcpmanager.ai/#organization\",\"name\":\"MCP Manager\",\"url\":\"https://docs.mcpmanager.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mcpmanagerbyusercentrics/6VTit4ttpXMM_zQN/images/mcp-manager-gradient-horizontal.png?fit=max\u0026auto=format\u0026n=6VTit4ttpXMM_zQN\u0026q=85\u0026s=e94ab5f0ba0a199071d9382c369a563e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mcpmanager.ai#website\",\"name\":\"MCP Manager\",\"url\":\"https://docs.mcpmanager.ai\",\"publisher\":{\"@id\":\"https://docs.mcpmanager.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections#webpage\",\"url\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections\",\"name\":\"Fix a Broken or Stale MCP Connection\",\"description\":\"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider's side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn't enough, deauthorize MCP Manager's app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\",\"dateModified\":\"2026-07-24T13:56:35.341Z\",\"isPartOf\":{\"@id\":\"https://docs.mcpmanager.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced\",\"item\":\"https://docs.mcpmanager.ai/advanced/validate-mcp-servers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fix a Broken or Stale MCP Connection\",\"item\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections#article\",\"headline\":\"Fix a Broken or Stale MCP Connection\",\"name\":\"Fix a Broken or Stale MCP Connection\",\"description\":\"How to fix a remote MCP server connection that worked before and then broke because of a stale authorization held on the provider's side. Recognize the symptoms — an identity flagged Needs authentication or Disconnected, tool calls returning a re-authentication error, and no provider consent screen when you retry — then re-authenticate from Settings, and when that isn't enough, deauthorize MCP Manager's app on the provider and use Authenticate again to force a fresh authorization (which moves your gateways and connections onto the repaired identity automatically). Applies to any OAuth-based server, shown with Asana as the worked example.\",\"url\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mcpmanager.ai/advanced/fixing-broken-connections#webpage\"},\"dateModified\":\"2026-07-24T13:56:35.341Z\",\"keywords\":\"broken MCP connection, stale connection, corrupted connection, reconnect MCP server, re-authenticate, reauthorize, Authenticate again, deauthorize, OAuth, invalid_grant, Not connected, Needs authentication, Disconnected, delete identity, re-add identity, stale grant, token refresh failed, Asana\",\"publisher\":{\"@id\":\"https://docs.mcpmanager.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mcpmanager.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MCP Manager\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"MCP Manager","nav":{"global":null,"groups":[{"group":"Get Started","icon":"rocket","pages":[{"title":"Introduction","sidebarTitle":"Introduction","icon":"house","href":"/get-started/introduction"},{"title":"Use these docs with your AI agent","sidebarTitle":"Docs for AI agents","icon":"wand-magic-sparkles","href":"/get-started/use-docs-with-ai"}]},{"group":"MCP Gateway Concepts","icon":"diagram-project","pages":[{"group":"MCP Servers","icon":"server","pages":[{"title":"MCP Servers Overview","sidebarTitle":"Overview","icon":"server","href":"/mcp-gateway-concepts/mcp-servers/overview"},{"title":"Remote MCP Servers","sidebarTitle":"Remote","icon":"cloud","href":"/mcp-gateway-concepts/mcp-servers/remote"},{"title":"Choosing a Remote Server's Authentication Method","sidebarTitle":"Choosing remote auth","icon":"list-check","href":"/mcp-gateway-concepts/mcp-servers/choosing-remote-auth"},{"title":"Managed MCP Servers","sidebarTitle":"Managed","icon":"cubes","href":"/mcp-gateway-concepts/mcp-servers/managed"},{"title":"Self-Hosted MCP Servers","sidebarTitle":"Self-hosted","icon":"rocket","href":"/mcp-gateway-concepts/mcp-servers/self-hosted"},{"title":"Workstation MCP Servers","sidebarTitle":"Workstation","icon":"laptop","href":"/mcp-gateway-concepts/mcp-servers/workstation"},{"title":"Troubleshoot a workstation connection","sidebarTitle":"Troubleshooting","icon":"stethoscope","href":"/mcp-gateway-concepts/mcp-servers/workstation-troubleshooting"},{"title":"Troubleshoot a remote server connection","sidebarTitle":"Troubleshooting connections","icon":"stethoscope","href":"/mcp-gateway-concepts/mcp-servers/troubleshooting-connections"}]},{"title":"MCP Gateways","sidebarTitle":"MCP Gateways","icon":"network-wired","href":"/mcp-gateway-concepts/mcp-gateways"},{"title":"Apps \u0026 Agents","sidebarTitle":"Apps \u0026 Agents","icon":"robot","href":"/mcp-gateway-concepts/apps-and-agents"},{"title":"Architecture \u0026 Trust","sidebarTitle":"Architecture \u0026 Trust","icon":"building-shield","href":"/mcp-gateway-concepts/architecture-and-trust"}]},{"group":"Features","icon":"shapes","pages":[{"title":"Features","sidebarTitle":"Overview","icon":"grid-2","href":"/features/overview"},{"title":"Connection Experience","sidebarTitle":"Connection Experience","icon":"plug-circle-check","href":"/features/connection-experience"},{"title":"Feature Provisioning","sidebarTitle":"Feature Provisioning","icon":"filter","href":"/features/feature-provisioning"},{"title":"API Tokens \u0026 Headless Agents","sidebarTitle":"API Tokens \u0026 Agents","icon":"key","href":"/features/api-tokens-and-headless-agents"},{"title":"Reporting","sidebarTitle":"Reporting","icon":"chart-pie","href":"/features/reporting"},{"title":"Viewing Logs","sidebarTitle":"Viewing Logs","icon":"rectangle-list","href":"/features/viewing-logs"},{"title":"PII Filtering","sidebarTitle":"PII Filtering","icon":"user-secret","href":"/features/pii-filtering"},{"group":"Gateway Rules","icon":"shield-halved","pages":[{"title":"Gateway Rules Overview","sidebarTitle":"Overview","icon":"shield-halved","href":"/features/gateway-rules/overview"},{"title":"Regex","sidebarTitle":"Regex","icon":"asterisk","href":"/features/gateway-rules/regex"},{"title":"Microsoft Presidio","sidebarTitle":"Microsoft Presidio","icon":"user-shield","href":"/features/gateway-rules/presidio"},{"title":"Amazon Bedrock","sidebarTitle":"Amazon Bedrock","icon":{"style":"brands","name":"aws","library":"fontawesome"},"href":"/features/amazon-bedrock"},{"title":"Google Model Armor","sidebarTitle":"Google Model Armor","icon":{"style":"brands","name":"google","library":"fontawesome"},"href":"/features/google-model-armor"},{"title":"Azure Prompt Shields","sidebarTitle":"Azure Prompt Shields","icon":{"style":"brands","name":"microsoft","library":"fontawesome"},"href":"/features/azure-prompt-shields"},{"title":"Azure AI Content Safety","sidebarTitle":"Azure AI Content Safety","icon":{"style":"brands","name":"microsoft","library":"fontawesome"},"href":"/features/azure-ai-content-safety"},{"title":"Lakera Guard","sidebarTitle":"Lakera Guard","icon":"shield-check","href":"/features/lakera-guard"},{"title":"Google Drive Folder Blocker","sidebarTitle":"Drive Folder Blocker","icon":"folder-tree","href":"/features/gateway-rules/google-drive-folder-blocker"},{"title":"Custom Rule Engines","sidebarTitle":"Custom Rule Engines","icon":"plug","href":"/features/gateway-rules/custom-rules-engines"}]},{"title":"Identity Controls","sidebarTitle":"Identity Controls","icon":"id-card","href":"/features/identity-controls"},{"title":"Alerts","sidebarTitle":"Alerts","icon":"bell","href":"/features/alerts"}]},{"group":"Industries","icon":"industry","pages":[{"title":"Industries","sidebarTitle":"Overview","icon":"industry","href":"/industries/overview"},{"title":"Financial Services \u0026 Banking","sidebarTitle":"Financial Services","icon":"building-columns","href":"/industries/financial-services-and-banking"},{"title":"Investment Management","sidebarTitle":"Investment Management","icon":"chart-line","href":"/industries/investment-management"},{"title":"Healthcare \u0026 Life Sciences","sidebarTitle":"Healthcare","icon":"heart-pulse","href":"/industries/healthcare-and-life-sciences"},{"title":"Pharmaceutical \u0026 Biotechnology","sidebarTitle":"Pharma \u0026 Biotech","icon":"flask-vial","href":"/industries/pharmaceutical-and-biotechnology"},{"title":"Insurance","sidebarTitle":"Insurance","icon":"umbrella","href":"/industries/insurance"},{"title":"Cybersecurity \u0026 Threat Intelligence","sidebarTitle":"Cybersecurity","icon":"user-secret","href":"/industries/cybersecurity-and-threat-intelligence"},{"title":"Energy \u0026 Utilities","sidebarTitle":"Energy \u0026 Utilities","icon":"bolt","href":"/industries/energy-and-utilities"},{"title":"Government \u0026 Public Sector","sidebarTitle":"Government","icon":"landmark","href":"/industries/government-and-public-sector"},{"title":"Retail \u0026 E-commerce","sidebarTitle":"Retail \u0026 E-commerce","icon":"cart-shopping","href":"/industries/retail-and-ecommerce"}]},{"group":"Tutorials","icon":"graduation-cap","pages":[{"title":"Tutorials","sidebarTitle":"Overview","icon":"graduation-cap","href":"/tutorials/overview"},{"title":"Quickstart: Your first governed tool call","sidebarTitle":"First tool call","icon":"rocket","href":"/tutorials/first-tool-call"},{"title":"Connect your AI client to a gateway","sidebarTitle":"Connect your AI client","icon":"plug","href":"/tutorials/connect-your-ai-client"},{"title":"Connect a workstation MCP server","sidebarTitle":"Workstation server","icon":"laptop","href":"/tutorials/connect-a-workstation-server"},{"title":"Build a team gateway and invite a teammate","sidebarTitle":"Build a team gateway","icon":"users","href":"/tutorials/team-gateway"},{"title":"Add your first gateway rule","sidebarTitle":"Add a gateway rule","icon":"shield-halved","href":"/tutorials/first-gateway-rule"},{"title":"Redact PII from tool responses with Presidio","sidebarTitle":"Redact PII with Presidio","icon":"user-shield","href":"/tutorials/pii-filtering"},{"title":"Trace a tool call in your logs","sidebarTitle":"Trace a call in logs","icon":"magnifying-glass","href":"/tutorials/trace-in-logs"},{"title":"Run a headless agent with an API token","sidebarTitle":"Run a headless agent","icon":"robot","href":"/tutorials/headless-agent"},{"title":"Build and connect your first custom rule engine","sidebarTitle":"Build a custom rule engine","icon":"plug","href":"/tutorials/custom-rule-engine"}]},{"group":"MCP Server Guides","icon":"compass","pages":[{"title":"Find \u0026 Connect MCP Servers","sidebarTitle":"Overview","icon":"compass","href":"/mcp-server-guides/overview"},{"title":"Connect Asana","sidebarTitle":"Asana","icon":"https://mintlify.s3.us-west-1.amazonaws.com/mcpmanagerbyusercentrics/icons/asana.svg","href":"/mcp-server-guides/asana"},{"title":"Connect Atlassian Rovo","sidebarTitle":"Atlassian Rovo","icon":"atlassian","href":"/mcp-server-guides/atlassian"},{"title":"Connect AWS","sidebarTitle":"AWS","icon":"aws","href":"/mcp-server-guides/aws"},{"title":"Connect Bitbucket","sidebarTitle":"Bitbucket","icon":"bitbucket","href":"/mcp-server-guides/bitbucket"},{"title":"Connect Chargebee","sidebarTitle":"Chargebee","icon":"file-invoice-dollar","href":"/mcp-server-guides/chargebee"},{"title":"Connect Datadog","sidebarTitle":"Datadog","icon":"dog","href":"/mcp-server-guides/datadog"},{"title":"Connect Figma","sidebarTitle":"Figma","icon":"figma","href":"/mcp-server-guides/figma"},{"title":"Connect GitHub","sidebarTitle":"GitHub","icon":"github","href":"/mcp-server-guides/github"},{"title":"Connect HubSpot","sidebarTitle":"HubSpot","icon":"hubspot","href":"/mcp-server-guides/hubspot"},{"title":"Connect Metabase","sidebarTitle":"Metabase","icon":"chart-bar","href":"/mcp-server-guides/metabase"},{"title":"Connect Notion","sidebarTitle":"Notion","icon":"notion","href":"/mcp-server-guides/notion"},{"title":"Connect Salesforce","sidebarTitle":"Salesforce","icon":"salesforce","href":"/mcp-server-guides/salesforce"},{"title":"Connect Slack","sidebarTitle":"Slack","icon":"slack","href":"/mcp-server-guides/slack"}]},{"group":"Security","icon":"lock","pages":[{"title":"Security Overview","sidebarTitle":"Overview","icon":"shield","href":"/security/overview"},{"title":"Authentication \u0026 Identity","sidebarTitle":"Authentication \u0026 Identity","icon":"fingerprint","href":"/security/authentication-and-identity"},{"title":"Feature Governance","sidebarTitle":"Feature Governance","icon":"list-check","href":"/security/feature-governance"},{"title":"Audit \u0026 Observability","sidebarTitle":"Audit \u0026 Observability","icon":"magnifying-glass-chart","href":"/security/audit-and-observability"},{"title":"Runtime Protections","sidebarTitle":"Runtime Protections","icon":"shield-halved","href":"/security/runtime-protections"}]},{"group":"Deployment","icon":"boxes-stacked","pages":[{"group":"Access Control","icon":"user-lock","pages":[{"title":"Access Control","sidebarTitle":"Overview","icon":"user-lock","href":"/deployment/access-control"},{"title":"Roles","sidebarTitle":"Roles","icon":"user-shield","href":"/deployment/rbac-and-roles/overview"},{"title":"Teams","sidebarTitle":"Teams","icon":"users","href":"/deployment/teams"},{"title":"Capabilities","sidebarTitle":"Capabilities","icon":"key","href":"/deployment/rbac-and-roles/capabilities"}]},{"title":"Gateway Deployment Strategies","sidebarTitle":"Gateway Deployment Strategies","icon":"sitemap","href":"/deployment/gateway-deployment-strategies"},{"title":"Safe Rollout Sequence","sidebarTitle":"Safe Rollout Sequence","icon":"shield-check","href":"/deployment/safe-rollout-sequence"},{"title":"Hosting \u0026 Data Residency","sidebarTitle":"Hosting \u0026 Data Residency","icon":"cloud","href":"/deployment/hosting-and-data-residency"},{"title":"Product Support","sidebarTitle":"Product Support","icon":"life-ring","href":"/deployment/product-support"},{"title":"Uptime \u0026 Maintenance Plan","sidebarTitle":"Uptime \u0026 Maintenance Plan","icon":"calendar-check","href":"/deployment/uptime-and-maintenance-plan"},{"title":"Enterprise Strategy \u0026 Lockdown","sidebarTitle":"Enterprise \u0026 Lockdown","icon":"building-lock","href":"/deployment/enterprise-strategy-and-lockdown"},{"title":"MCP Enterprise Lockdown Checklist","sidebarTitle":"Lockdown Checklist","icon":"list-check","href":"/deployment/lockdown-checklist"}]},{"group":"Enterprise","icon":"building","pages":[{"title":"Security \u0026 Compliance","sidebarTitle":"Security \u0026 Compliance","icon":"file-shield","href":"/enterprise/security-and-compliance"},{"title":"Single Sign-On (SSO)","sidebarTitle":"SSO","icon":"right-to-bracket","href":"/enterprise/sso"},{"title":"Add an MCP Manager tile to your IdP dashboard","sidebarTitle":"IdP dashboard tile","icon":"grip","href":"/enterprise/idp-dashboard-tile"},{"title":"SCIM Provisioning","sidebarTitle":"SCIM","icon":"arrows-rotate","href":"/enterprise/scim"},{"title":"Supported Identity Providers","sidebarTitle":"Identity Providers","icon":"address-book","href":"/enterprise/supported-identity-providers"},{"title":"Programmatic Access","sidebarTitle":"Programmatic Access","icon":"code","href":"/enterprise/programmatic-access"},{"group":"Export to SIEM","icon":"tower-broadcast","pages":[{"title":"Export to SIEM","sidebarTitle":"Overview","icon":"tower-broadcast","href":"/enterprise/export-to-siem"},{"title":"New Relic","sidebarTitle":"New Relic","icon":"chart-line","href":"/enterprise/export-to-siem/new-relic"},{"title":"Grafana Cloud","sidebarTitle":"Grafana Cloud","icon":"lines-leaning","href":"/enterprise/export-to-siem/grafana-cloud"},{"title":"Datadog","sidebarTitle":"Datadog","icon":"dog","href":"/enterprise/export-to-siem/datadog"},{"title":"Honeycomb","sidebarTitle":"Honeycomb","icon":"table-cells-large","href":"/enterprise/export-to-siem/honeycomb"},{"title":"Splunk","sidebarTitle":"Splunk","icon":"database","href":"/enterprise/export-to-siem/splunk-observability-cloud"},{"title":"Self-hosted OpenTelemetry Collector","sidebarTitle":"Self-hosted Collector","icon":"server","href":"/enterprise/export-to-siem/self-hosted-collector"}]}]},{"group":"Admin API \u0026 MCP","icon":"terminal","tag":"Beta","pages":[{"title":"Admin API \u0026 MCP Server","sidebarTitle":"Overview","icon":"terminal","tag":"Beta","href":"/admin-api/overview"},{"title":"Connect an agent to the Admin MCP server","sidebarTitle":"Connect an agent","icon":"plug","tag":"Beta","href":"/admin-api/connect"},{"title":"Authentication \u0026 access","sidebarTitle":"Authentication \u0026 access","icon":"shield-halved","tag":"Beta","href":"/admin-api/authentication"},{"title":"Plan limits","sidebarTitle":"Plan limits","icon":"gauge","tag":"Beta","href":"/admin-api/plan-limits"},{"group":"Tool \u0026 endpoint reference","icon":"book","pages":[{"title":"Tool \u0026 endpoint reference","sidebarTitle":"Overview","icon":"book","tag":"Beta","href":"/admin-api/reference/overview"},{"title":"Account \u0026 Access Tokens","sidebarTitle":"Account \u0026 Access Tokens","icon":"key","tag":"Beta","href":"/admin-api/reference/account"},{"title":"Servers","sidebarTitle":"Servers","icon":"server","tag":"Beta","href":"/admin-api/reference/servers"},{"title":"Identities","sidebarTitle":"Identities","icon":"fingerprint","tag":"Beta","href":"/admin-api/reference/identities"},{"title":"Gateways","sidebarTitle":"Gateways","icon":"network-wired","tag":"Beta","href":"/admin-api/reference/gateways"},{"title":"People, Teams \u0026 Roles","sidebarTitle":"People, teams \u0026 roles","icon":"users","tag":"Beta","href":"/admin-api/reference/people"},{"title":"Hosts","sidebarTitle":"Hosts","icon":"robot","tag":"Beta","href":"/admin-api/reference/hosts"},{"title":"Logging","sidebarTitle":"Logging","icon":"file-lines","tag":"Beta","href":"/admin-api/reference/logging"}]},{"title":"What's coming","sidebarTitle":"What's coming","icon":"road","tag":"Beta","href":"/admin-api/roadmap"}]},{"group":"Build Your Own MCP Server","icon":"hammer","pages":[{"title":"Building Your Own MCP Server","sidebarTitle":"Overview","icon":"hammer","href":"/build-your-own-mcp-server/overview"},{"title":"Add a Connect Button to Your Site","sidebarTitle":"Connect Button","icon":"link","href":"/build-your-own-mcp-server/connect-button"},{"title":"Build with FastMCP (Python)","sidebarTitle":"FastMCP (Python)","icon":"python","href":"/build-your-own-mcp-server/fastmcp"},{"title":"Build with the TypeScript SDK","sidebarTitle":"TypeScript SDK","icon":"js","href":"/build-your-own-mcp-server/typescript"},{"title":"Build on Cloudflare Workers","sidebarTitle":"Cloudflare Workers","icon":"cloudflare","href":"/build-your-own-mcp-server/cloudflare"},{"title":"Build with Spring AI (Java)","sidebarTitle":"Spring AI (Java)","icon":"java","href":"/build-your-own-mcp-server/java-spring"},{"title":"Build with Go","sidebarTitle":"Go (SDK + mcp-go)","icon":"golang","href":"/build-your-own-mcp-server/go"},{"title":"Debugging Your Self-Hosted Server's OAuth","sidebarTitle":"Debug Self-Hosted OAuth","icon":"bug","href":"/build-your-own-mcp-server/debugging-self-hosted-oauth"}]},{"group":"Advanced","icon":"screwdriver-wrench","pages":[{"title":"Validate MCP Servers with Open Tools","sidebarTitle":"Validate Servers","icon":"plug-circle-check","href":"/advanced/validate-mcp-servers"},{"title":"Gateway Resiliency","sidebarTitle":"Gateway Resiliency","description":"What happens when an MCP server in your MCP Manager gateway is down, offline, or unreachable: the gateway keeps every other server working, the offline server's tools drop off the list, and calls to it return a clear error and raise an admin alert. One server's outage is never a gateway-wide outage, and a recovered server rejoins on its own — no new gateway needed.","icon":"heart-pulse","href":"/advanced/gateway-resiliency"},{"title":"Fix a Broken or Stale MCP Connection","sidebarTitle":"Fix a Broken Connection","icon":"plug-circle-xmark","href":"/advanced/fixing-broken-connections"},{"title":"Agents that Pass Identities to MCP Manager","sidebarTitle":"Agents Passing Identities","description":"How to whitelist a headless agent for use with Claude and proxy credentials at the calling-user level through MCP Manager: create one token-based host for the agent, let each end user enroll and bring their own identity to mint a per-user access token, and have the agent map each user to their token so downstream MCP servers act as the real user — fully governed and logged.","icon":"id-badge","href":"/advanced/agents-passing-identities"},{"title":"Getting fresh data from Claude","sidebarTitle":"Stale data in Claude","icon":"arrows-rotate","href":"/advanced/getting-fresh-data-from-claude"},{"title":"Building a Custom Rule Engine","sidebarTitle":"Building an Engine","icon":"code","href":"/advanced/building-a-custom-rule-engine"},{"title":"Custom Rule Engine Examples","sidebarTitle":"Custom Rule Engine Examples","icon":"wand-magic-sparkles","href":"/advanced/custom-rule-engine-examples"},{"title":"Building vs. Buying an MCP Gateway","sidebarTitle":"Building vs. Buying","icon":"scale-balanced","href":"/advanced/building-vs-buying"},{"title":"Frequently Asked Questions","sidebarTitle":"FAQ","icon":"circle-question","href":"/advanced/faq"}]}]},"basePath":"","title":"Fix a Broken or Stale MCP Connection - MCP Manager","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}