Connects to Facebook Pages via Meta Graph API v25.0 for organic analytics and content management. Exposes page info, post publishing, comment threads, video metrics, and insights with date range filtering. Built specifically to avoid the June 2026 metric deprecations, so it uses page_views_total instead of the legacy page_impressions family. Handles both personal and Business Manager page tokens, includes long-lived token exchange helpers, and supports cursor-based pagination across all list endpoints. Reach for this when you need Claude to pull engagement data, analyze post performance, or publish directly to pages you manage.
Public tool metadata for what this MCP can expose to an agent.
fb_list_pagesList all Facebook Pages the user manages. Returns page ID, name, category, and access token for each page. Use this to find the page_id for other tools.1 paramsList all Facebook Pages the user manages. Returns page ID, name, category, and access token for each page. Use this to find the page_id for other tools.
_infostringfb_get_pageGet detailed information about a Facebook Page: name, category, followers, fan count, about, description, website, and more.2 paramsGet detailed information about a Facebook Page: name, category, followers, fan count, about, description, website, and more.
fieldsstringpage_idstringfb_get_page_tokenGet the Page Access Token for a specific page. Useful when managing multiple pages — each page has its own token.1 paramsGet the Page Access Token for a specific page. Useful when managing multiple pages — each page has its own token.
page_idstringfb_list_postsList posts from a Facebook Page feed. Returns post ID, message, creation time, picture, and permalink. Supports pagination via limit parameter.3 paramsList posts from a Facebook Page feed. Returns post ID, message, creation time, picture, and permalink. Supports pagination via limit parameter.
limitnumberfieldsstringpage_idstringfb_get_postGet details of a single Facebook post by ID. Returns message, creation time, picture, permalink, and engagement counts.2 paramsGet details of a single Facebook post by ID. Returns message, creation time, picture, permalink, and engagement counts.
fieldsstringpost_idstringfb_create_postCreate a new post on a Facebook Page. Can include text message and/or link. Set published=false to create an unpublished (draft) post.4 paramsCreate a new post on a Facebook Page. Can include text message and/or link. Set published=false to create an unpublished (draft) post.
linkstringmessagestringpage_idstringpublishedbooleanfb_update_postUpdate the text message of an existing Facebook post. Only the message field can be edited after creation.2 paramsUpdate the text message of an existing Facebook post. Only the message field can be edited after creation.
messagestringpost_idstringfb_delete_postPermanently delete a Facebook post. This action cannot be undone.1 paramsPermanently delete a Facebook post. This action cannot be undone.
post_idstringfb_schedule_postSchedule a post to be published at a future time. The scheduled_time must be between 10 minutes and 75 days from now (Unix timestamp in seconds).4 paramsSchedule a post to be published at a future time. The scheduled_time must be between 10 minutes and 75 days from now (Unix timestamp in seconds).
linkstringmessagestringpage_idstringscheduled_timenumberfb_list_commentsList comments on a Facebook post or object. Returns comment ID, message, author, time, like count, and hidden status.2 paramsList comments on a Facebook post or object. Returns comment ID, message, author, time, like count, and hidden status.
limitnumberobject_idstringfb_create_commentAdd a comment to a Facebook post. The page will be shown as the comment author.2 paramsAdd a comment to a Facebook post. The page will be shown as the comment author.
messagestringobject_idstringfb_reply_commentReply to an existing comment. Creates a threaded reply under the specified comment.2 paramsReply to an existing comment. Creates a threaded reply under the specified comment.
messagestringcomment_idstringfb_delete_commentPermanently delete a comment. This action cannot be undone.1 paramsPermanently delete a comment. This action cannot be undone.
comment_idstringfb_hide_commentHide or unhide a comment. Hidden comments are only visible to the author and page admins. Useful for moderation.2 paramsHide or unhide a comment. Hidden comments are only visible to the author and page admins. Useful for moderation.
is_hiddenbooleancomment_idstringfb_upload_photoUpload a photo to a Facebook Page from a URL. Can include a caption. Set published=false for an unpublished photo (use in multi-photo posts).4 paramsUpload a photo to a Facebook Page from a URL. Can include a caption. Set published=false for an unpublished photo (use in multi-photo posts).
urlstringcaptionstringpage_idstringpublishedbooleanfb_list_photosList photos uploaded to a Facebook Page. Returns photo ID, name, link, creation time, and image URLs at various sizes.2 paramsList photos uploaded to a Facebook Page. Returns photo ID, name, link, creation time, and image URLs at various sizes.
limitnumberpage_idstringfb_delete_photoPermanently delete a photo from a Facebook Page.1 paramsPermanently delete a photo from a Facebook Page.
photo_idstringfb_upload_videoUpload a video to a Facebook Page from a URL. Supports title and description. For large videos (>1GB), use chunked upload via Facebook UI.4 paramsUpload a video to a Facebook Page from a URL. Supports title and description. For large videos (>1GB), use chunked upload via Facebook UI.
titlestringpage_idstringfile_urlstringdescriptionstringfb_list_videosList videos uploaded to a Facebook Page. Returns video ID, title, description, creation time, duration, and source URL.2 paramsList videos uploaded to a Facebook Page. Returns video ID, title, description, creation time, duration, and source URL.
limitnumberpage_idstringfb_delete_videoPermanently delete a video from a Facebook Page.1 paramsPermanently delete a video from a Facebook Page.
video_idstringfb_get_page_insightsGet analytics metrics for a Facebook Page. Common metrics: page_impressions, page_engaged_users, page_post_engagements, page_fan_adds. Period: day, week, days_28.5 paramsGet analytics metrics for a Facebook Page. Common metrics: page_impressions, page_engaged_users, page_post_engagements, page_fan_adds. Period: day, week, days_28.
sincestringuntilstringmetricstringperiodstringpage_idstringfb_get_post_insightsGet analytics for a specific post. Common metrics: post_impressions, post_engaged_users, post_clicks, post_reactions_by_type_total.2 paramsGet analytics for a specific post. Common metrics: post_impressions, post_engaged_users, post_clicks, post_reactions_by_type_total.
metricstringpost_idstringfb_get_page_fansGet total fan (follower) count for a Facebook Page over time. Returns daily values showing the total page likes.1 paramsGet total fan (follower) count for a Facebook Page over time. Returns daily values showing the total page likes.
page_idstringfb_get_page_viewsGet page view count over time. Returns total number of times the Page profile was viewed.2 paramsGet page view count over time. Returns total number of times the Page profile was viewed.
periodstringpage_idstringfb_list_conversationsList Messenger conversations for a Facebook Page. Returns conversation ID, last update time, snippet, message count, and participants.2 paramsList Messenger conversations for a Facebook Page. Returns conversation ID, last update time, snippet, message count, and participants.
limitnumberpage_idstringfb_get_messagesGet messages from a specific Messenger conversation. Returns message ID, text, sender, and time.2 paramsGet messages from a specific Messenger conversation. Returns message ID, text, sender, and time.
limitnumberconversation_idstringfb_send_messageSend a text message via Messenger to a user. Requires the recipient PSID (Page-Scoped ID). Note: 24-hour messaging window applies — can only respond within 24h of the user's last message.3 paramsSend a text message via Messenger to a user. Requires the recipient PSID (Page-Scoped ID). Note: 24-hour messaging window applies — can only respond within 24h of the user's last message.
textstringpage_idstringrecipient_idstringfb_send_typingShow or hide the typing indicator in Messenger. Use before sending a message for a more natural conversation feel.3 paramsShow or hide the typing indicator in Messenger. Use before sending a message for a more natural conversation feel.
actionstringpage_idstringrecipient_idstringMCP server for Facebook Pages organic analytics and management, powered by Meta Graph API v25.0.
Built for Claude Code and any MCP-compatible AI tool. Gives your AI assistant direct access to your Facebook Page data — posts, insights, comments, and more.
Part of The SEO Engine toolkit by Lantern Row — AI-powered SEO and social media tooling for agencies and businesses.
page_impressions, page_reach, and page_impressions_unique no longer return data. This server uses the replacement metrics from day one.{
"mcpServers": {
"facebook-pages": {
"command": "npx",
"args": ["-y", "facebook-pages-mcp"],
"env": {
"FB_PAGE_ACCESS_TOKEN": "your_page_access_token",
"FB_PAGE_ID": "your_page_id"
}
}
}
}
git clone https://github.com/lanternrow/facebook-pages-mcp.git
cd facebook-pages-mcp
npm install
npm run build
Then add to your Claude Code MCP settings:
{
"mcpServers": {
"facebook-pages": {
"command": "node",
"args": ["/path/to/facebook-pages-mcp/dist/index.js"],
"env": {
"FB_PAGE_ACCESS_TOKEN": "your_page_access_token",
"FB_PAGE_ID": "your_page_id"
}
}
}
}
pages_show_list, pages_read_engagement, business_managementIf your Pages are managed through Business Manager (most businesses):
# First, find your business ID
GET /me/businesses?fields=id,name
# Then get Page tokens for that business
GET /{business-id}/owned_pages?fields=id,name,access_token
If your Pages are on your personal account:
GET /me/accounts?fields=id,name,access_token
Copy the access_token and id for the Page you want.
Short-lived tokens expire in ~1 hour. Exchange for a long-lived token (~60 days):
GET /oauth/access_token
?grant_type=fb_exchange_token
&client_id={your-app-id}
&client_secret={your-app-secret}
&fb_exchange_token={short-lived-token}
Tip: For Pages you admin, Page tokens derived from a long-lived User Token never expire.
| Tool | Description |
|---|---|
get_page_info | Page metadata: name, category, follower count, contact info, cover photo |
get_page_insights | Page-level analytics with date ranges and period aggregation (day/week/28-day) |
get_published_posts | Paginated list of posts authored by the Page |
get_post_insights | Per-post engagement: impressions, clicks, reactions by type |
get_post_comments | Paginated comments with author info and like/reply counts |
get_video_insights | Video performance: views, watch time, reactions |
get_page_feed | Full feed including visitor posts |
| Tool | Description |
|---|---|
create_post | Publish text, link, or photo posts to the Page |
| Tool | Description |
|---|---|
refresh_token_info | Check token validity, expiration, and granted scopes |
Meta deprecated these page-level metrics on June 15, 2026:
| Deprecated | Replacement |
|---|---|
page_impressions | page_views_total |
page_reach | Page Viewer metric (rolling out) |
page_impressions_unique | Media Viewers metric (rolling out) |
This server uses only non-deprecated metrics: page_views_total, page_fans, page_fan_adds, page_fan_removes, page_actions_post_reactions_total.
src/
index.ts # MCP server entry point, tool registration
client.ts # Graph API HTTP client (native fetch, no dependencies)
types.ts # TypeScript interfaces for API responses
tools/
pages.ts # get_page_info, get_page_feed
insights.ts # get_page_insights, get_video_insights
posts.ts # get_published_posts, get_post_insights, get_post_comments, create_post
utils.ts # refresh_token_info
fetchx-app-usage and x-page-usage headersafter cursor and configurable limits| Variable | Required | Description |
|---|---|---|
FB_PAGE_ACCESS_TOKEN | Yes | Long-lived Page Access Token |
FB_PAGE_ID | Yes | Default Facebook Page ID (numeric) |
npm run dev # Watch mode — recompiles on save
npm run build # Production build
npm start # Run the server
Issues and PRs welcome. If Meta changes the API (they will), please open an issue.
MIT — see LICENSE.
Built as part of The SEO Engine by Lantern Row.
FB_PAGE_ACCESS_TOKEN*secretLong-lived Facebook Page Access Token
FB_PAGE_ID*Default Facebook Page ID (numeric)
io.github.infoinlet-marketplace/mcp-observability
betterdb-inc/monitor
com.mcparmory/datadog
thotischner/observability-mcp
io.github.tantiope/datadog-mcp
io.github.us-all/datadog