Local-first TypeScript MCP server for the Meta Graph API that lets an MCP client publish, read and moderate Facebook Pages through your own Meta developer app, with least-privilege tokens, plan-and-apply write safety and no telemetry.
37 tools with consistent verb-noun naming (list_, get_, publish_, delete_, etc.). All tools have descriptions (10-150 chars, mostly adequate). Input schemas present for all tools with typed parameters. However, descriptions are often terse (e.g., 'List posts from a Facebook Page' lacks context on when to use vs. list_reels). Parameter descriptions are minimal, most are 1-2 phrases without format/constraint guidance. Output schemas are not documented in the source. Error handling and recovery guidance are absent. No confirmation pattern for destructive operations (delete_post, delete_comment). Risk annotations present (READ_ONLY, WRITE, DESTRUCTIVE) but not integrated into descriptions. Pagination parameters (limit) present but no documentation of defaults, max values, or cursor/offset behavior.
Get insights and performance data for an ad.
Get insights and performance data for an ad set.
Block a user from the page.
Get insights and performance data for a campaign.
Delete a comment.
Delete a post from a Facebook Page.
Get details about a specific ad.
Get details about a specific ad set.
Output schemas not documented. LLMs cannot infer what fields to expect from list_posts, get_page, page_insights, etc. This forces agents to guess at response structure and breaks tool chaining.
Destructive operations (delete_post, delete_comment) lack confirmation/dry-run pattern. No guidance for agents to preview impact before executing irreversible actions.
Parameter descriptions are minimal (1-2 phrases). Missing format constraints, ranges, and enums. E.g., 'metric' param in page_insights lacks enum of valid metrics; 'limit' params lack min/max bounds.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Get details about a specific advertising campaign.
Get replies to a specific comment.
Get messages from a specific conversation.
Get detailed information about a specific Facebook Page.
Get detailed information about a specific post.
Get reactions to a post or comment.
Hide a comment from public view.
List ad sets within a campaign.
List ads within an ad set.
List advertising campaigns for a page.
List comments on a post or page.
List Messenger conversations for a page.
List all Facebook Pages accessible to the authenticated user.
List posts from a Facebook Page.
List Reels from a Facebook Page.
Get insights and analytics for a Facebook Page.
Get insights and analytics for a specific post.
Send a private reply to a comment.
Publish a photo post to a Facebook Page.
Publish a post to a Facebook Page.
Publish a Reel to a Facebook Page.
Publish a video post to a Facebook Page.
Get insights and analytics for a Reel.
Schedule a post to be published at a future time.
Send a message via Messenger.
Update the budget of a campaign.
Update the status of a campaign (pause/resume).
Get API usage statistics and quota information.
Identify the authenticated user and their available pages.
No error recovery guidance. Tools lack descriptions of failure modes and what agents should do next (retry, lookup alternative, ask user). E.g., 'User not found' should suggest search_users().
Pagination behavior undocumented. 'limit' parameters present but no mention of defaults, max values, cursor/offset support, or total count in responses. Agents cannot reliably iterate large result sets.