Meta Social MCP
Meta Social MCP
A free, self-hosted Model Context Protocol server that lets Claude (or any MCP client) publish and manage your organic Facebook Page and Instagram content directly through Meta's own Graph API — no paid third-party service in the middle.
It complements an ads connector (e.g. Pipeboard's Meta Ads MCP): use the ads connector for campaigns, and this one for organic posts, scheduling, comments and insights.
What it can do
Facebook Page
facebook_publish_post— publish a text, link, or photo post; schedule it for laterfacebook_list_posts— list recent published and scheduled postsfacebook_get_comments— read comments on a postfacebook_reply_to_comment— reply to a commentfacebook_get_insights— post- or Page-level performance
Instagram (Business/Creator)
instagram_publish_photo— single photo + captioninstagram_publish_carousel— 2–10 image carouselinstagram_publish_reel— video reelinstagram_publish_container— publish a prepared container (retry reels / schedule)instagram_list_media— recent mediainstagram_get_comments— read commentsinstagram_reply_to_comment— reply to a commentinstagram_get_insights— media- or account-level performance
Utility
meta_whoami— confirm your token, Page and IG account resolve correctly
Honest limitations (read these)
Facebook scheduling is native (via
scheduled_publish_time, 10 min–75 days ahead). Instagram has no native scheduled-publish API — to schedule IG posts you publish at the target time (e.g. an OS cron / external scheduler that calls the publish tool, or a container created earlier and published later withinstagram_publish_container).Instagram posting only works on a Business or Creator account linked to a Facebook Page. Personal IG accounts cannot post via the API.
Images/videos must be at public URLs — Instagram fetches media from a URL; it does not accept direct file uploads through this API.
Going beyond your own assets / into production requires Meta app review and business verification for the publishing permissions.
Prerequisites
A Facebook Page you manage.
For Instagram: an Instagram Business/Creator account linked to that Page.
A Meta developer app and an access token with these permissions:
pages_show_listpages_read_engagementpages_manage_postspages_manage_engagement(for replying to comments)read_insightsinstagram_basicinstagram_content_publishinstagram_manage_comments/instagram_manage_insights(for IG comments/insights)
Getting a token (quick start for your own Page)
Go to https://developers.facebook.com/apps → Create App → type Business.
Add the Facebook Login and Instagram Graph API products.
Open the Graph API Explorer (https://developers.facebook.com/tools/explorer), select your app, and Add permissions for the scopes listed above.
Generate Access Token and approve the dialog. This gives a short-lived user token.
Exchange it for a long-lived token (≈60 days):
https://graph.facebook.com/v21.0/oauth/access_token?grant_type=fb_exchange_token&client_id=APP_ID&client_secret=APP_SECRET&fb_exchange_token=SHORT_LIVED_TOKENFind your Page ID: open the Page → About, or call
GET /me/accounts.Find your IG user ID:
GET /{page-id}?fields=instagram_business_account.
Put the long-lived user token in META_ACCESS_TOKEN — the server resolves the Page token
for you. (A Page token also works directly.)
Install
git clone https://github.com/<your-username>/meta-social-mcp.git
cd meta-social-mcp
pip install -r requirements.txt # or: pip install -e .
cp .env.example .env # then fill in your valuesConfigure
Set these as environment variables or in .env:
Variable | Required | Description |
| yes | Long-lived user or Page access token |
| yes* | Facebook Page ID (*required for Facebook posting) |
| no | Instagram Business/Creator user ID |
| no | Defaults to |
Run / connect to Claude
Add to your MCP client config (Claude Desktop claude_desktop_config.json, or the custom
connector settings). Example stdio config:
{
"mcpServers": {
"meta-social": {
"command": "python",
"args": ["-m", "meta_social_mcp.server"],
"cwd": "/absolute/path/to/meta-social-mcp",
"env": {
"META_ACCESS_TOKEN": "EAAB...",
"FB_PAGE_ID": "1234567890",
"IG_USER_ID": "1789xxxxxxxxxx",
"GRAPH_API_VERSION": "v21.0"
}
}
}
}Then ask Claude things like:
"Post to my Facebook Page: 'New off-market deal just listed', schedule it for tomorrow 9am."
"Publish this image to Instagram with a caption about our latest project."
"Show me the comments on my last Instagram post and draft replies."
Verify it works
python -m py_compile meta_social_mcp/*.py # syntax check
python -c "from meta_social_mcp.server import mcp; print('tools ok')"Then in your client, run meta_whoami first — it confirms the token, Page and IG account
resolve before you try to post.
License
MIT.
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/nicktradeaccelerate-beep/meta-social-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server