Facebook MCP server for Claude Code and AI agents. Posting, scheduling, drafts, Page and post insights, and comment moderation through Meta's official Graph API.
Strong naming conventions (all tools start with action verbs: list_, get_, create_, reply_, hide_, delete_, update_). Descriptions are clear and contextual (avg ~120 chars, well within 10-1024 range). All 15 tools have documented input schemas with type definitions and parameter descriptions. Output schemas are not explicitly documented in the source code, which is a notable gap. Error handling is present but minimal, no recovery guidance or actionable error messages visible. Security considerations are well-designed (read-only mode, audit logging, permission gates for destructive ops). Tool composition is clean: each tool has a single responsibility, and parameter naming is consistent (page, post_id, comment_id). Pagination is implemented (limit params on list_posts, list_comments). However, output field documentation is missing, and error responses lack guidance for LLM recovery.
Publish a photo from a public URL, with an optional caption. Same scheduling and draft options as a text post.
Publish a text post, optionally with a link. Leave publish_at empty and draft false to post immediately. Set draft to keep it unpublished, or publish_at to schedule it.
Permanently delete a comment. Cannot be undone, and refused unless deletion is explicitly enabled. Hiding is usually the better answer.
Permanently delete a post. This cannot be undone, and is refused unless deletion is explicitly enabled.
Profile details for a Page: name, category, follower count, about text, website and whether it is published.
How the Page itself is doing over a date range: impressions, reach, engaged users and follower change.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'name, category, follower count') but no formal schema is visible in source code. LLMs cannot plan downstream tool calls without knowing return field types and structure.
Error handling lacks recovery guidance. No visible error responses that tell the LLM what to do next (e.g., 'Invalid post_id. Call list_posts() to find valid IDs'). Agents cannot self-correct on failures.
Destructive operations (delete_comment, delete_post) lack confirmation/dry-run pattern. No visible pre-execution confirmation step to prevent accidental deletions by agents.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 74 | 2026-07-28+ | v2 |
How one post did: impressions, reach, clicks and reactions. Post metrics are named differently from Page metrics, which is why this is a separate tool.
Hide a comment from everyone except its author and their friends. Reversible, and the usual answer for spam or abuse. Prefer this to deleting.
Comments on a post, with who wrote each one and when. Use this before replying or moderating.
List every Facebook Page this server can act as, with its id and name. Call this first when you have more than one, so you can name the right Page on later calls.
Published posts on a Page, newest first, with their reaction, comment and share counts.
Posts that have not gone out yet: both scheduled ones and saved drafts, with the time each is due.
Take a draft or scheduled post and publish it immediately.
Post a public reply under a comment, as the Page.
Change the text of a published post. Facebook shows an edit history to viewers.
Parameter constraints not fully specified. 'limit' params state 'Default 50' and 'Default 25, maximum 100' but no minimum is documented. 'publish_at' requires 'at least 10 minutes out, at most 6 months' but no format validation is visible.
Tool descriptions lack dependency hints. No guidance on when to call list_pages first, or which tools require a valid page_id. Agents may attempt calls in wrong order.