Meta Business MCP
Allows listing Instagram accounts associated with a Meta Business, with read-only access.
Provides tools for inspecting Meta Business assets, including ad accounts, campaigns, ads insights, and pages, as well as creating reviewable proposals for budget or delivery status changes.
Intended for WhatsApp Business API integration, but write operations including messaging are excluded from the initial version.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Meta Business MCPlist my ad accounts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Meta Business MCP
![]()
Meta Business MCP is an open-source-ready Model Context Protocol gateway over allowlisted Meta Business APIs.
Published and maintained by Guangyu Song.
The goal is not to build an autonomous marketing agent. The goal is a safe, self-hosted operations gateway that lets MCP clients inspect Meta Business assets, normalize performance data, draft/propose changes, and execute only explicitly approved named actions without exposing broad Graph API access.
This project is not affiliated with, endorsed by, or sponsored by Meta, Anthropic, or OpenAI.
Current status
This repository has a local stdio MCP server for Codex, a Streamable HTTP /mcp path for remote MCP clients, broad live read handlers, sanitized local search/fetch, and durable proposal state.
Included:
TypeScript workspace with strict builds.
Broad MCP tool contracts for Ads, Pages, Instagram, leads metadata, health/context, search/fetch, and proposals.
Real stdio MCP server entrypoint.
Streamable HTTP MCP server entrypoint with OAuth bearer verification hooks.
Default-safe policy primitives.
Allowlisted Meta API client boundary.
Proposal hashing, approval, and execution state.
Audit redaction helpers.
Docs, examples, and tests.
Live when configured:
meta_connection_statusmeta_ad_accounts_listmeta_campaigns_listmeta_adsets_listmeta_ads_listmeta_ad_creatives_listmeta_pixels_listmeta_custom_conversions_listmeta_ads_insights_querymeta_pages_listmeta_page_getmeta_page_posts_listmeta_page_post_comments_listmeta_page_insights_querymeta_page_post_insights_querymeta_page_conversations_listmeta_instagram_accounts_listmeta_instagram_media_listmeta_instagram_media_insights_querymeta_lead_forms_listmeta_allowed_assets_listmeta_permission_probemeta_token_health_checksearchfetchproposal create/list/get/cancel/approve tools
Implemented for private development but not advertised by the default public policy:
meta_proposal_executecontains guarded execution code for approved named proposals.The default public policy excludes this tool from the MCP registry, even if a write environment variable is set.
External writes require a later, separately reviewed private policy and are not part of the first directory release.
Excluded by default:
Arbitrary Graph proxy tools.
Deletes, WhatsApp, raw lead export, browser automation, and arbitrary URL fetch.
Raw lead export or lead PII retrieval.
Company-specific prompts, account IDs, workflows, thresholds, CRM integrations, or private playbooks.
Related MCP server: meta-mcp
Tool contracts
See docs/tool-reference.md for the current tool list, schemas, and safety behavior. Live Meta tools require META_ADS_TOKEN plus explicit asset allowlists.
Configuration
The server reads credentials and allowlists from environment/config only. Do not pass tokens as tool arguments.
export META_ADS_TOKEN="EAAR_fake_replace_me"
export META_ADS_API_VERSION="v25.0"
export META_BUSINESS_MCP_AD_ACCOUNTS_FILE="/private/path/ad-accounts.json"
export META_BUSINESS_MCP_PAGES_FILE="/private/path/pages.json"
export META_BUSINESS_MCP_INSTAGRAM_ACCOUNTS_FILE="/private/path/instagram-accounts.json"Allowlist file format:
{
"accounts": [
{
"account_id": "act_1234567890",
"account_name": "Example Account",
"status": "active"
}
]
}Alternatives:
META_BUSINESS_MCP_AD_ACCOUNTS_JSON: inline JSON in the same shape.META_AD_ACCOUNT_IDS: comma-separated account IDs for simple local testing.META_BUSINESS_MCP_PAGES_JSON/META_PAGE_IDS: Page allowlist.META_BUSINESS_MCP_INSTAGRAM_ACCOUNTS_JSON/META_INSTAGRAM_ACCOUNT_IDS: Instagram account allowlist.META_BUSINESS_MCP_PIXELS_JSON/META_PIXEL_IDS: pixel allowlist.META_BUSINESS_MCP_TIMEOUT_MS: request timeout, default20000.META_BUSINESS_MCP_STORAGE_DIR: local sanitized cache/proposal storage.META_BUSINESS_MCP_WRITES_ENABLED: opt-in approved execution switch, default off.
For private deployments, keep account allowlists and token sourcing outside this public repo. Point META_BUSINESS_MCP_AD_ACCOUNTS_FILE at a private file if needed.
Development
npm install
npm run typecheck
npm test
npm run buildBuild and validate the Claude Desktop MCP bundle:
npm run mcpb:validate
npm run mcpb:packThe generated .mcpb artifact is written under dist/ and is not committed.
Run the stdio server:
npm --workspace @meta-business-mcp/server run dev:stdioRun the HTTP server locally:
npm --workspace @meta-business-mcp/server run dev:httpFor ChatGPT or other remote MCP clients, deploy the HTTP server behind HTTPS and enable:
export META_BUSINESS_MCP_HTTP_AUTH_ENABLED=1
export META_BUSINESS_MCP_AUTH_ISSUER="https://issuer.example"
export META_BUSINESS_MCP_AUTH_AUDIENCE="https://your-domain.example/mcp"
export META_BUSINESS_MCP_AUTH_JWKS_URL="https://issuer.example/.well-known/jwks.json"
export META_BUSINESS_MCP_AUTH_REQUIRED_SCOPES="meta_business.read,meta_business.write"
export META_BUSINESS_MCP_ALLOWED_ORIGINS="https://chatgpt.com"Run the opt-in live smoke test:
META_BUSINESS_MCP_LIVE_TEST=1 npm run smoke:liveThe live smoke test is skipped unless META_BUSINESS_MCP_LIVE_TEST=1 is set and prints redacted JSON.
Install it in Codex:
codex mcp add meta-business -- \
npm --prefix /absolute/path/to/meta-business-mcp \
--workspace @meta-business-mcp/server \
run dev:stdioSee docs/install.md for Codex and ChatGPT setup notes.
Directory release status
Claude Desktop: version 0.1.1 has been installed and exercised in Claude Desktop on macOS. GitHub Actions builds, packages, and performs the MCP runtime handshake on macOS, Windows, and Linux. Each user supplies their own Meta token and explicit asset allowlists.
Anthropic desktop extension directory: version 0.1.1 was submitted for consideration on August 20, 2026 and is awaiting review. Submission does not imply acceptance or publication. Any follow-up live evaluation remains gated by a fully populated reviewer Meta account and end-to-end evidence for every advertised tool.
OpenAI public directory: not ready. The current HTTP path is for private deployment and uses server-side configuration; a public listing requires per-user Meta OAuth, tenant-isolated storage, a production HTTPS endpoint, domain verification, and reviewer credentials.
See docs/directory-submission.md for the draft listing packet and review cases.
Privacy Policy
The desktop extension is local-first and does not send credentials or Meta Business data to a publisher-operated backend. Read the complete Privacy Notice for data flow, local storage, retention, sharing, and user-control details.
Privacy questions can be sent to support@guangyusong.com. Do not send access tokens, account data, or security vulnerabilities by ordinary email.
Support
General and privacy support: support@guangyusong.com
Bugs and feature requests: GitHub Issues
Security vulnerabilities: use GitHub private vulnerability reporting
Security defaults
Meta writes disabled by default.
Draft/proposal operations are local and auditable.
Execution accepts only
proposal_id, never free-form write arguments.No raw Meta token in tool arguments or outputs.
No generic Graph proxy.
No external mutation tool advertised by the default public policy.
No live credentials required for tests.
No raw lead values.
See docs/threat-model.md and docs/architecture.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read and manage Meta Ads campaigns, ad sets, ads, audiences, pages and Business Manager. You provide
Hosted Meta ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Hosted OAuth MCP for Google, Meta, X, and LinkedIn Ads, GA4, and Search Console.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides Meta (Facebook/Instagram) business insights through the Graph and Marketing APIs, enabling access to ad accounts, pages, campaigns, and business assets using a System User access token.MIT
- AlicenseCqualityDmaintenanceRead-only MCP server for Meta (Facebook) Graph API, enabling access to Marketing API, Pages, Instagram, and WhatsApp Business data through Claude Code and any MCP-compatible client.30141MIT
- AlicenseBqualityBmaintenanceRead-only MCP server for Meta Ads that lists and reads ad accounts, campaigns, ad sets, ads, ad images, creatives, and fetches insights at various levels.14MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only access to Meta Ads data and optionally creates paused ads, with safety features like OAuth and validation.1,659MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/guangyusong/meta-business-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server