AI & Automation8 min read

Meta MCP Token Expiry Fix: Why Your Connection Breaks Silently and How to Prevent It

Tarek Kekhia

Tarek Kekhia

Jun 9, 2026
Share
Meta MCP Token Expiry Fix: Why Your Connection Breaks Silently and How to Prevent It

Why did Meta MCP suddenly stop returning data?

In most cases, the underlying Meta user access token has reached its ~60-day expiry. Depending on the MCP client, this may surface as empty results or no data rather than a clear token-expired message, which makes the root cause easy to miss.

TL;DR

Meta long-lived user access tokens expire after about 60 days (per Meta's documentation). When they do, some MCP clients may surface this as empty results or generic non-answers rather than a clear error. To fix it: disconnect and reconnect via OAuth, then run a test query. To prevent it: use a Meta Business Manager System User token (Meta's recommended credential for automated API workflows) or set a 55-day calendar reminder. AdAdvisor MCP handles token refresh automatically.

Key Facts

  • Meta long-lived user access tokens expire in ~60 days, per Meta's access token documentation
  • Meta long-lived user access tokens expire in ~60 days, per Meta's access token documentation
  • When a token expires, some MCP clients may return empty results rather than a clear error; this makes the root cause difficult to diagnose without explicit verification
  • The Meta MCP beta is not documented to include an auto-refresh mechanism; manual re-authentication is the expected recovery path
  • Campaign delivery is not controlled by the MCP connection; token expiry affects the AI's ability to read account data, not Meta's ad-serving infrastructure

How Long Does a Meta MCP Token Last?

Meta long-lived user access tokens expire after about 60 days. Meta's access token documentation states that if no requests are made, a long-lived token expires after approximately 60 days and the user must log in again. This is a Meta user-token lifecycle policy. The MCP layer does not shorten or extend this cycle.

Meta token types and expiry

Token typeExpiryNotes
Standard short-lived user token~1-2 hoursExchangeable for a long-lived token
Long-lived user token~60 daysSubject to inactivity expiry per Meta's docs
System User token (Business Manager)Not tied to a user session cycleMeta's recommended credential for automated API access

The Meta MCP beta is not documented to include an auto-refresh mechanism. Based on current product behavior, manual re-authentication via OAuth is the expected recovery path when a token expires.

How to Detect a Silent Token Expiry

Token expiry is difficult to diagnose because some MCP clients do not surface it as a clear error. Meta's access token documentation confirms that tokens expire, but the specific failure mode depends on how the MCP client handles the API response. In some cases, expired credentials result in empty data rather than an explicit authentication error. Claude may then appear to respond normally while returning no useful account data.

A likely reason is that Meta's authentication layer and reporting layer are separate systems. When authentication state becomes invalid, some API endpoints may still return structurally valid responses containing no accessible data instead of a user-facing OAuthException. MCP clients that don't inspect authentication metadata may then surface this as "no results found" rather than "connection broken." This is a known pattern in OAuth-dependent API integrations, though the exact behavior can vary by endpoint and client implementation.

Signs your Meta MCP token has expired

  • Claude says "I don't see any campaigns" when you know you have active ones
  • Performance queries return empty results or zero values
  • Claude gives generic answers instead of account-specific data
  • The integration appears connected in your client settings, but data is missing
  • Queries that returned data yesterday now return nothing

Verification test - run this prompt in Claude:

"List all ad accounts you can see right now. If you see none, tell me what error or response you're getting from the Meta API."

If Claude returns no accounts or an authentication-related error, the token has almost certainly expired.

Second verification - Business Manager activity log: Navigate to Meta Business Manager > Settings > Integrations > Connected Apps. A disconnected app status or unexpected authentication timestamp can indicate a token-related issue, but combine this with the account-listing test above for confirmation. The Connected Apps view does not always reflect the current token state accurately.

Quick diagnosis table

Symptom diagnosis for Meta MCP issues

SymptomLikely causeConfirmed by
Empty results for all queriesToken expiredAccount listing test returns nothing
Generic answers instead of account dataToken expired or MCP not connectedAccount listing test
Some data, some missingPartial permission scopeCheck ads_management and ads_read granted
Connection error shown in ClaudeMCP config issueCheck claude_desktop_config.json

How to Fix an Expired Meta MCP Token

The fix is a full disconnect and reconnect. Based on current Meta MCP beta behavior, manual re-authentication via OAuth is the expected recovery path. There is no documented in-band token refresh flow. Steps differ by client:

For Claude.ai web users:

  1. Go to Claude.ai Settings > Integrations
  2. Find the Meta Ads connection and click Disconnect
  3. Click Add Integration > Meta Ads and complete the OAuth flow
  4. Test: ask Claude "Which ad accounts do you have access to?"

For Claude Desktop users:

  1. Open claude_desktop_config.json
  2. Remove the existing Meta MCP entry
  3. Re-add the MCP configuration with a fresh OAuth connection
  4. Restart Claude Desktop
  5. Test with the account listing query above

For Claude Code CLI users:

If you're also hitting the redirect_uris mismatch bug described in the OAuth Fix article (Article #5 in this cluster), re-authentication alone will not resolve that issue. Fix the OAuth client configuration first, then re-authenticate.

Expected result after reconnecting: Claude returns your ad account list within 5-10 seconds of the test query. If it still returns empty, check whether the is_ads_mcp_enabled flag is active on your account (see Article #5, Error #2).

How to Prevent Token Expiry From Breaking Your Workflow

There are three options, ordered from simplest to most robust:

Option 1: Calendar reminder (simplest)

Set a recurring reminder every 55 days to re-authenticate. The 5-day buffer gives you time to reconnect before the 60-day expiry cuts the connection mid-workflow. Title the event "Reconnect Meta MCP" and include the reconnection steps as a note.

Option 2: Long-lived token (marginal improvement)

Generate a long-lived token via the Meta Developer portal under your registered app. According to Meta's Graph API documentation, long-lived tokens remain subject to the same ~60-day cycle for Marketing API access. They are not a permanent solution, but they are appropriate for self-hosted MCP setups where the token lifecycle is managed manually.

Option 3: Meta Business Manager System User token (best for teams)

Most users don't know about this option, and it's the most robust of the three.

What is a Meta System User token?

A System User is a non-human identity within Meta Business Manager designed for programmatic, automated API access. According to Meta's Business Help Center, System Users can be granted granular permissions across multiple ad accounts without depending on any individual person's credentials. Because a System User token represents a programmatic identity rather than a delegated user session, it is not tied to a user's session lifecycle in the same way a standard OAuth token is.

Meta's documentation positions System Users as the recommended approach for automated API workflows. Standard OAuth user tokens are tied to an individual account's session state and expire on Meta's ~60-day cycle. System User tokens are a separate identity model. They exist to give automated processes stable API access that doesn't require periodic human re-authentication.

To create a System User token:

  1. Go to Meta Business Manager > Settings > Users > System Users
  2. Create a new System User with Advertiser or Admin role
  3. Assign the System User access to the ad accounts it needs
  4. Generate an access token with ads_management and ads_read permissions
  5. Use this token in your MCP configuration in place of your personal OAuth token

Note: System User tokens require Business Manager admin access. Verify the specific token behavior in your Business Manager setup, as token policies may vary. For media buyers who don't want to manage this setup, AdAdvisor handles token infrastructure automatically.

Which solution fits your situation?

Token management solution by use case

SituationBest solution
Solo advertiser, occasional MCP use55-day calendar reminder
Self-hosted MCP, manual managementLong-lived token + reminder
Agency team with shared accountsSystem User token
Multiple client accountsAdAdvisor managed infrastructure
Automated or recurring API workflowsSystem User token

AdAdvisor MCP: Managed Token Infrastructure

AdAdvisor MCP manages token validity as part of its infrastructure. Users don't set calendar reminders or manually reconnect. The managed layer monitors token status and re-authenticates before expiry, so the workflow is never silently interrupted.

For agencies managing multiple ad accounts across multiple MCP connections, the compounding problem of multiple clients x 60-day cycles with no automatic alerts is eliminated entirely. One expired token in a stack of twelve is easy to miss until a client asks why their campaign data returned nothing.

For teams that can't afford a broken connection mid-campaign review, see how AdAdvisor handles token management vs. the official Meta MCP.

Frequently Asked Questions

Frequently Asked Questions

Summary

Meta long-lived user access tokens expire after approximately 60 days (per Meta's access token documentation). When used via the Meta MCP integration, some clients may surface this as empty results rather than a clear error, making the root cause easy to miss. The fastest fix is disconnect, reconnect via OAuth, and confirm with an account listing query. For recurring workflows, the recommended long-term solution is a Meta Business Manager System User token: a programmatic identity not tied to any individual's session lifecycle, and Meta's documented approach for automated API access. For agencies and teams managing multiple client connections, AdAdvisor's managed infrastructure removes the maintenance burden entirely.

Related reading

  • See how AdAdvisor handles token management vs. the official Meta MCP:
Meta MCP vs AdAdvisor: Raw API Access vs Managed Optimization

AI & Automation

Meta MCP vs AdAdvisor: Raw API Access vs Managed Optimization

Meta MCP vs AdAdvisor MCP: both connect AI to your ad account, but they do very different things. Here's which option fits your setup and why it matters.

Read more
  • If reconnecting doesn't help, check whether you're hitting a different OAuth issue:
Facebook MCP OAuth Fix: 4 Errors and How to Resolve Each One

AI & Automation

Facebook MCP OAuth Fix: 4 Errors and How to Resolve Each One

Facebook MCP OAuth failures fall into four distinct categories. This article covers the redirect_uris bug, is_ads_mcp_enabled phased rollout, expired 60-day tokens, and missing permission scopes — with the diagnosis and exact fix for each.

Read more
Tarek Kekhia

Written by

Tarek Kekhia

Co-Founder of AdAdvisor. Builder. AI and Data Specialist.