Facebook MCP server
Facebook Pages MCP server for the Meta Graph API — publishing, insights, moderation, messaging
2 stars326 downloads/wk
Reviews
Write oneNobody has reviewed Facebook yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Facebook tools (49, 17 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
facebook_ads_insightsRead performance numbers (impressions, clicks, spend, reach, cpc, ctr) for
facebook_ads_report_statusProbe one async insights report run and, with fetch_results:true, read its
facebook_comment_on_postwrite actionPost a PUBLIC top-level comment as the Page on a post — e.g. a first comment
facebook_create_photo_postwrite actionPublish ONE photo to a Page, optionally with a caption, as a draft, or
facebook_create_postwrite actionCreate a Page post: plain text, a link, a multi-link card carousel, or a
facebook_create_reelwrite actionPublish a Facebook Reel through the three-phase upload (start → transfer
facebook_create_storywrite actionPublish a photo or video story on the Page. A story is public at once for
facebook_create_video_postwrite actionUpload a video to a Page. A local path inside FB_MEDIA_DIR is streamed
facebook_delete_commentwrite actionPERMANENTLY delete up to 50 comments. This cannot be undone — prefer
facebook_delete_postwrite actionPermanently delete a Page post the app itself created — including a
facebook_duplicate_ad_objectCopy one campaign, ad set or ad into a new PAUSED copy (an ad set copy stays in its campaign,
facebook_edit_commentReplace the text of a comment the Page itself wrote — e.g. fix a typo in a
facebook_get_activity_sinceWhat is new on a Page since a point in time, in one call: new comments
facebook_get_ad_objectRead one campaign, ad set or ad by id. Pass `level` when you know it — the
facebook_get_ad_previewShow how an existing ad, an existing ad creative, or a Page post used as an
facebook_get_ad_set_targetingRead one ad set's audience and summarise it in plain terms: countries, counts of regions / cities / locales, age range, genders, placements, and flags for detailed targeting, custom audiences, exclusions and Advantage+ audience. `editable_by_this_server` says whether facebook_update_ad_set_targeting can change it, and `not_editable_because` says why not. Pass include_raw:true to also get the raw t
facebook_get_commentRead one comment by ID, optionally with its replies, and report whether a
facebook_get_pageFetch metadata for one Page — name, category, follower/fan counts, publish
facebook_get_page_reportOne-call Page performance report over a window (default last 28 days,
facebook_get_postwrite actionFetch ONE post by its composite id ("{page-id}_{post-id}" as returned by
facebook_get_posts_insightsLifetime insights for several posts in one call, as a compact table: one
facebook_get_reactionsRead the reactions on one post: a `totals` map per reaction type
facebook_get_video_statusPoll where one video stands in Meta's pipeline: uploading, processing,
facebook_hide_commentHide or unhide up to 50 comments in one call (`hidden:true` hides,
facebook_like_commentLike up to 50 comments as the Page, or unlike them with `unlike:true`.
facebook_list_adsList individual ads under one ad account, a cursor page at a time. This is
facebook_list_adsetsList ad sets under one ad account, a cursor page at a time. Ad sets are
facebook_list_albumsList a Page's photo albums, one cursor page at a time: `id`, `name`,
facebook_list_campaignsList campaigns under one ad account, a cursor page at a time. Each record
facebook_list_commentsList the comments on a post, photo, video or another comment, newest-first
facebook_list_pagesList the Facebook Pages the operator administers (via /me/accounts): id,
facebook_list_photosList photos, one cursor page at a time: an album's photos when `album_id`
facebook_list_postsList a Page's posts, one cursor page at a time. `edge` selects WHICH posts:
facebook_list_reelsList a Page's Reels via the /video_reels edge — the ONLY place Reels are
facebook_list_scheduled_postsList the Page posts that are queued to publish later, each with its publish
facebook_list_storiesList a Page's Stories via the /stories edge, one cursor page at a time:
facebook_page_insightsRead Graph insights for one Page in a compact flat shape: one row per
facebook_post_insightswrite actionRead Graph insights for one published post (post_media_view, post_clicks,
facebook_private_replywrite actionSend a private message to the author of a comment, or of a visitor post on
facebook_reel_insightsRead Graph insights for one Reel from /{video-id}/video_insights — the
facebook_reply_and_hide_commentwrite actionPost a PUBLIC reply under a comment and then hide that comment, in one
facebook_reply_to_commentwrite actionPost a PUBLIC reply under a comment — visible to everyone who can see the
facebook_triage_commentsA moderation queue in one call: the comments on the Page's most recent
facebook_update_ad_objectwrite actionPause or resume an ads object, change its budget, or set a campaign spend cap. Plan-first: without
facebook_update_ad_set_targetingwrite actionChange only the countries and/or the age range of one ad set's audience; everything else in its targeting is kept exactly as it is. Refused when the audience is more complex than that (custom audiences, detailed targeting, regions/cities/zips, exclusions, Advantage+ audience on) — check editable_by_this_server with facebook_get_ad_set_targeting first. Adding EU countries to an audience that had no
facebook_update_postwrite actionEdit a Page post the app itself created, or move it through the scheduled-post
facebook_upload_ad_imagewrite actionUpload one local image (JPEG, PNG, GIF, BMP, TIFF or WEBP, at most 30 MB, inside FB_MEDIA_DIR) to the ad account's image library and return its hash, which creatives reference it by. Creates no ad and changes no delivery. Plan-first: without apply:true this returns a preview (file, size, account) and uploads NOTHING; applying requires apply:true plus the plan_id from that preview. Uploads are dedu
facebook_usageReport the most recent Graph rate-limit signals (X-App-Usage,
facebook_whoamiReport the identity behind the configured token (type, validity, granted
Public scan report
scanner v0.1.10 · 2026-10-30 · same rubric, same numbers if you re-run it
- Code scan154 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 1 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Facebook compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 65% of 48,243 servers
- Tools
- 49
- the typical server has 7
- Tools that change things
- 35%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 75% of 28,706 servers
- Downloads a week
- 326
- more than 82% of 12,306 servers with a package
What its tools let an agent do: 32 read · 17 change
Release history: 2 versions in the registry since 2026-08-27, latest 2026-10-28, typically one every 62 days.
Install Facebook in Claude Code, Cursor or VS Code
Runs npx -y @ivanbaev/facebook-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add facebook-mcp -- npx -y @ivanbaev/facebook-mcp
What the publisher says
From the Facebook repository's README, as published. We do not edit it. Read it on GitHub
facebook-mcp — Facebook Pages MCP Server
📖 Documentation site →
A local-first TypeScript Model Context Protocol (MCP) server for the Meta Graph API, focused on Facebook Pages — publishing, reading & insights, and comment/message moderation — driven from an MCP client (Claude, VS Code, the Inspector…) and operated locally by a Page admin using their own Meta developer app. Least-privilege tokens, plan-and-apply write safety, and no telemetry.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Facebook: common questions
- Is Facebook MCP server safe?
- Mostly: it is graded B (83/100). Read the Facebook safety report
- How do I install Facebook?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Facebook need an API key?
- Yes. The registry entry asks for
FB_SYSTEM_TOKEN,FB_ACCESS_TOKEN,FB_PAGE_TOKEN,FB_APP_SECRETand 2 more. - Is Facebook maintained?
- The last commit was 7 days ago (2026-10-29). The latest release is v0.8.0.
- How does Facebook compare with other MCP servers?
- safety score 83/100 (higher than 65% of 48,243 servers); tools 49 (the typical server has 7); tools that change things 35% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.