AgentHubAgentHub

facebook MCP配置与使用教程

MCP ServerMCP Registry官方收录

io.github.IvanBBaev/facebook-mcp · v0.8.0

Facebook Pages MCP server for the Meta Graph API — publishing, insights, moderation, messaging

建议先在本页复制安装配置,再到上游核对文档与权限。

产品介绍

Facebook Pages MCP server for the Meta Graph API — publishing, insights, moderation, messaging facebook-mcp 是一个MCP Server,收录自 官方 MCP Registry。支持 stdio 传输。本页提供产品介绍、配置教程、安装命令与适用场景,支持 Trae、通义灵码、Cursor、Claude Code、VS Code 等。

适用场景

AgentHub Verified 可用性验证技术测试通过

自动化测试流水线已校验安装命令、传输协议与客户端兼容性

最近校验时间2026-10-31
安装配置格式测试有效CLI 与 mcpServers JSON 语法校验通过
协议连接与握手响应正常支持标准 JSON-RPC 2.0 规格规范
上游数据源存活来源 official-mcp-registry,可正常下载依赖
测试可用客户端Claude Code、Claude Desktop、Cursor 等
安全等级: A+ 级 · 官方认证推荐 (A+)·该工具由官方或知名生态团队维护,源码遵循标准开源许可协议,可安全接入 Cursor / Claude。

按平台快速复制

选择你的平台查看安装方式

  1. 打开项目根目录下的 .cursor/mcp.json(没有就新建)
  2. 点击「复制配置」粘贴进去;若已有其他 MCP,只合并 mcpServers 里的本条目
  3. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  4. 保存后按 Cmd+Shift+P(Windows:Ctrl+Shift+P)→ 输入 Reload Window 并执行

预填环境变量与密钥(可选)

secret
secret
secret
secret
secret
secret
隐私安全承诺:所有参数与密钥仅在您本机的浏览器前端进行实时文本替换,AgentHub 绝不向任何服务器上传或存储您的敏感凭据。
点击「复制配置」直接粘贴到客户端
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

配置教程

  1. 打开 facebook-mcp 详情页,确认这是你需要的 MCP Server(来源 官方 MCP Registry)。
  2. 按客户端选择 Trae、通义灵码、Cursor、Claude Code 或 VS Code,复制 JSON 配置或 CLI 命令。
  3. 将配置合并进 mcpServers,并把环境变量占位符替换为真实密钥。
  4. 重载窗口后,在 Agent 对话中调用该 MCP 提供的工具。

安装命令

以下安装命令与配置步骤已写入页面 HTML,搜索引擎与未启用 JavaScript 的浏览器均可直接读取。

Claude Code(本地)

  1. 确保已安装 Claude Code CLI
  2. 复制下方命令,将 <占位符> 替换为真实环境变量值后,在终端执行
  3. 若下方列出了环境变量,请对照填写
claude mcp add facebook-mcp -- npx -y @ivanbaev/facebook-mcp

Cursor — .cursor/mcp.json(本地)

  1. 打开项目根目录下的 .cursor/mcp.json(没有就新建)
  2. 点击「复制配置」粘贴进去;若已有其他 MCP,只合并 mcpServers 里的本条目
  3. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  4. 保存后按 Cmd+Shift+P(Windows:Ctrl+Shift+P)→ 输入 Reload Window 并执行
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

VS Code — .vscode/mcp.json(本地)

  1. 确保 VS Code 已安装 GitHub Copilot 扩展并支持 MCP
  2. 打开项目根目录下的 .vscode/mcp.json(没有就新建)
  3. 点击「复制配置」粘贴;若已有其他 MCP,只合并 mcpServers 里的本条目
  4. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  5. 保存后重新加载 VS Code 窗口
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

Claude Desktop — claude_desktop_config.json(本地)

  1. 打开 Claude Desktop 的 claude_desktop_config.json(路径见远程指引)
  2. 点击「复制配置」合并到 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥
  4. 完全退出并重启 Claude Desktop
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

Trae — .trae/mcp.json(本地)

  1. 打开 Trae → 设置 → MCP,或编辑 .trae/mcp.json / 全局 mcp.json
  2. 点击「复制配置」粘贴并合并 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥
  4. 保存后重载 Trae 窗口
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

Cherry Studio — MCP 设置(本地)

  1. 打开 Cherry Studio → 设置 → MCP 服务器 → 添加(STDIO)
  2. 也可直接导入下方 JSON:点击「复制配置」合并到 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥,并确保本机已安装 Node.js / uv(npx、uvx)
  4. 启用服务并查看工具列表是否加载成功
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

通义灵码 — MCP 配置(本地)

  1. 通义灵码:个人设置 → MCP 服务 → 「+」→ 手工添加(STDIO)或配置文件添加
  2. 点击「复制配置」合并 mcpServers;命令/参数/环境变量与 JSON 一致
  3. 将 env 中的 <占位符> 替换为真实密钥;本机需 Node.js 18+(npx)或已安装 uv(uvx)
  4. 确认服务状态为已连接后再在智能体对话中调用
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

Windsurf — mcp_config.json(本地)

  1. 编辑 ~/.codeium/windsurf/mcp_config.json
  2. 点击「复制配置」合并 mcpServers(本地 stdio 与 Cursor 格式相同)
  3. 将 env 中的 <占位符> 替换为真实密钥后保存并刷新 Cascade
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

Cline — MCP Servers(本地)

  1. Cline 面板 → 设置 → MCP Servers
  2. 点击「复制配置」粘贴并合并
  3. 将 env 中的 <占位符> 替换为真实密钥后保存
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

WorkBuddy — .workbuddy/mcp.json(本地)

  1. 编辑 ~/.workbuddy/mcp.json(用户级)或项目目录 .workbuddy/mcp.json
  2. 也可在界面:插件 → MCP 服务器 → 配置 MCP,粘贴下方 JSON
  3. 将 env 中的 <占位符> 替换为真实密钥;Windows 下 command/脚本路径建议用绝对路径
  4. 保存并重启 WorkBuddy,确认连接器状态为绿色
{
  "mcpServers": {
    "facebook-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@ivanbaev/facebook-mcp"
      ]
    }
  }
}

常见报错排查与运行避坑 (Troubleshooting)FAQ

针对 facebook-mcp 在 Cursor、Claude Code 中的常见连接错误与解决办法

在 Cursor / Claude Code 中配置 facebook-mcp 提示 connection closed 或 exit code 1?

通常由本地运行时环境缺失或命令路径未被 IDE 继承引起。排查步骤: 1. 确认已安装 Node.js 18+(支持 npx)或 Python 3.10+(支持 uvx); 2. 尝试在终端运行 which npx 或 which uvx,把配置文件中的 "command" 字段改为完整绝对路径; 3. 修改 mcp.json 后,必须完全重载或重启客户端窗口。

Fix Snippet
# 终端测试命令是否存在:
which npx
node -v
提示 spawn npx ENOENT 或 command not found?

这是因为编辑器后台进程未加载完整的终端环境变量(PATH)。解决方案:在全局安装该包(如 npm install -g 包名),或在配置文件中将 command 设置为系统的实际路径(如 Windows 下的 C:\Program Files\nodejs\npx.cmd,Mac 下的 /usr/local/bin/npx)。

提示 Missing required environment variable 或 API 认证失败?

facebook-mcp 依赖环境变量(如 FB_SYSTEM_TOKEN、FB_ACCESS_TOKEN、FB_PAGE_TOKEN、FB_APP_ID、FB_APP_SECRET、FB_PAGE_ID、FB_API_VERSION、FB_ADS_API_VERSION、FB_REQUEST_TIMEOUT_MS、FB_HOST_CONCURRENCY、FB_MAX_RESULT_CHARS、FB_WRITE_MODE、FB_CONFIRM_TOKEN、FB_MEDIA_DIR、FB_JOURNAL_PATH、FB_ACTIVITY_STATE_PATH、FB_EXPORT_DIR、FB_TOOL_PACKAGES、FB_PACKAGES_DENY、FB_PACKAGES_READONLY、FB_TRANSPORT、FB_HTTP_TOKEN、FB_HTTP_PORT、FB_AD_ACCOUNT_ID、FB_ADS_BUDGET_CEILING、FB_ADS_CAMPAIGN_SPEND_CAP_MAX、FB_LOG_LEVEL)。请在客户端配置文件的 "env" 对象中填入有效密钥,注意不要包含多余空格或未闭合的双引号。

Fix Snippet
// .cursor/mcp.json 或 claude_desktop_config.json
{
  "env": {
    "API_KEY": "your_actual_key_here"
  }
}

免安装模拟调用 (Playground)

仿真环境

facebook-mcp 核心接口调用仿真 · 无需配置本地环境,直接预览调用参数与返回格式

沙盒就绪 (Virtual Mock)
fn: facebook_mcpFacebook Pages MCP server for the Meta Graph API — publishing, insights, moderation, messaging
请求入参 (Arguments)JSON Schema
{
  "target": "facebook-mcp",
  "action": "execute",
  "options": {
    "mode": "standard",
    "timeoutMs": 5000
  }
}
💡Agent 在规划任务时会自动生成并传递上述入参
Agent Tool Output

点击上方「模拟运行」按钮

查看该工具在 Agent 内部的返回数据格式

测试环境:AgentHub Virtual SandboxJSON-RPC 2.0

选型与决策建议(为什么选它?)

帮助你快速判断该资源是否契合当前项目,避免盲目折腾

适合什么任务?
  • PR 自动审查
  • 生成 changelog
  • 跨仓库 Issue 检索
什么时候不建议用?
  • 替代人工安全审计
  • 在无授权仓库上操作
推荐工作流搭配:查看完整场景 →

facebook-mcp + 对应场景 Prompt → 组成标准 Agent 自动化任务

MCP 实战教程:从安装到看见效果

按完整实例走一遍(含期望效果与对比验收)。装完本页资源后,用教程里的提示词核对是否真正生效。

打开教程 →

相关资源

常搭配使用

中文公文写作

v2.0.46

SkillClawHub7210.6k

io.clawhub.gongyu0918-debug/chinese-official-writing

用于中文公文、事务性材料和新闻稿件的起草、改写、压缩、润色、审校、文种核对、去口语化、降 AI 味及 Word 格式处理,适用于机关、企事业单位、学校和新闻机构。涵盖申请、请示、报告、通知、通告、意见、决定、决议、议案、公报、命令、函、复函、批复、说明、方案、纪要、公告、公示、通报、制度、规定、办法、细则、操作规程、工作要点、总结、调研、讲话、致辞、主持词、述职、可研、审查材料、技术需求、新闻消息、编者按、新闻评论,以及采购、整改、反馈和 AI 算力等场景。

source

继续逛 AgentHub

大多数人安装前还会对比同类工具或看场景方案——下面这些能帮你少走弯路。

收录徽章:把 AgentHub 挂到你的官网

复制下面任意一段代码到项目主页、官网或 GitHub README。徽章是 SVG 热链,无需上传文件,链接指向本页,访客可由此直接找到安装方式。

预览AgentHub 已收录:facebook-mcp
HTML
<a href="https://myagenthub.cn/p/io.github.IvanBBaev/facebook-mcp" title="AgentHub 已收录:facebook-mcp" target="_blank" rel="noopener">
  <img src="https://myagenthub.cn/badge/io.github.IvanBBaev/facebook-mcp" alt="AgentHub 已收录:facebook-mcp" height="20" style="border:0"/>
</a>
Markdown(GitHub README)
[![AgentHub 已收录:facebook-mcp](https://myagenthub.cn/badge/io.github.IvanBBaev/facebook-mcp)](https://myagenthub.cn/p/io.github.IvanBBaev/facebook-mcp)

徽章由 /badge/<资源ID> 动态生成,名称与收录状态变化后自动更新;请保留链接指向,它是收录来源的判定依据。

统一 Manifest

{
  "id": "io.github.IvanBBaev/facebook-mcp",
  "type": "mcp-server",
  "version": "0.8.0",
  "displayName": "facebook-mcp",
  "description": "Facebook Pages MCP server for the Meta Graph API — publishing, insights, moderation, messaging",
  "repository": {
    "url": "https://github.com/IvanBBaev/facebook-mcp",
    "source": "github"
  },
  "homepage": "https://ivanbbaev.github.io/facebook-mcp/",
  "distribution": {
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@ivanbaev/facebook-mcp",
        "version": "0.8.0",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "FB_SYSTEM_TOKEN",
            "description": "System-user access token (Business Manager). Takes precedence over FB_ACCESS_TOKEN and FB_PAGE_TOKEN when several are set.",
            "isSecret": true
          },
          {
            "name": "FB_ACCESS_TOKEN",
            "description": "Primary user access token. At least one of FB_SYSTEM_TOKEN, FB_ACCESS_TOKEN or FB_PAGE_TOKEN must be set.",
            "isSecret": true
          },
          {
            "name": "FB_PAGE_TOKEN",
            "description": "Long-lived Page access token used as a fallback credential when no user or system-user token is configured. It belongs to exactly one Page, so set FB_PAGE_ID to that Page ID alongside it (the doctor / facebook_whoami reports it as the acting Page); a Page token without its Page ID is bound to nothing.",
            "isSecret": true
          },
          {
            "name": "FB_APP_ID",
            "description": "Meta app ID; combined with FB_APP_SECRET it forms the app access token used to authorize /debug_token inspection."
          },
          {
            "name": "FB_APP_SECRET",
            "description": "Meta app secret. When set, appsecret_proof is attached to every call so a stolen bare token cannot be used on its own.",
            "isSecret": true
          },
          {
            "name": "FB_PAGE_ID",
            "description": "Default Facebook Page ID, used when a tool call omits an explicit profile argument. Required when FB_PAGE_TOKEN is the only credential: it names the Page that token belongs to."
          },
          {
            "name": "FB_API_VERSION",
            "description": "Graph API version to target. Defaults to the tested pinned version; other values are accepted verbatim as an escape hatch but are not tested."
          },
          {
            "name": "FB_ADS_API_VERSION",
            "description": "Marketing API version the ads tools target (ad accounts, campaigns, ad sets, ads, insights, async reports). The Marketing API retires versions on its own, shorter schedule, so it is pinned separately from FB_API_VERSION. Other values are accepted verbatim as an escape hatch but are not tested."
          },
          {
            "name": "FB_REQUEST_TIMEOUT_MS",
            "description": "Per-request timeout in milliseconds; integer in [1, 600000]."
          },
          {
            "name": "FB_HOST_CONCURRENCY",
            "description": "Maximum number of in-flight requests per Graph host; integer in [1, 64]."
          },
          {
            "name": "FB_MAX_RESULT_CHARS",
            "description": "Character budget applied by the result shaper before a tool result is truncated; integer in [500, 10000000]."
          },
          {
            "name": "FB_WRITE_MODE",
            "description": "Write gating mode: plan (validating dry-run preview, the default) or apply. It never covers the irreversible and spend tiers, which always need a per-call apply plus a plan_id."
          },
          {
            "name": "FB_CONFIRM_TOKEN",
            "description": "Operator confirmation token for out-of-band approval of irreversible or spend actions. The server prompts through MCP elicitation where the client supports it; otherwise the caller passes this value as the confirm_token tool argument. At least 16 characters — a shorter value fails startup; mint one with openssl rand -hex 32.",
            "isSecret": true
          },
          {
            "name": "FB_MEDIA_DIR",
            "description": "Directory permitted for local media uploads. Unset means URL-only uploads and no local file access at all."
          },
          {
            "name": "FB_JOURNAL_PATH",
            "description": "Path to the append-only write journal. Defaults to the XDG/%APPDATA% state path; the file is created owner-only (0600) and rotates by size."
          },
          {
            "name": "FB_ACTIVITY_STATE_PATH",
            "description": "Path to the small JSON file where facebook_get_activity_since keeps, per Page, the horizon of the last complete read. Defaults to the XDG/%APPDATA% state path next to the journal; the file holds Page ids and timestamps only and is written atomically, owner-only (0600)."
          },
          {
            "name": "FB_EXPORT_DIR",
            "description": "Directory where the insights tools write a CSV or JSON file when called with `output`. Defaults to `exports/` under the XDG/%APPDATA% state path. Files are written atomically and owner-only (0600) and are never overwritten; a name collision gets a numeric suffix."
          },
          {
            "name": "FB_TOOL_PACKAGES",
            "description": "Comma-separated tool packages or profiles to expose (e.g. core,posts,reader, or the profiles core|all|reader|publisher|moderator|ads). Omit for the default profile, which excludes ads."
          },
          {
            "name": "FB_PACKAGES_DENY",
            "description": "Comma-separated packages OR profiles to exclude even when FB_TOOL_PACKAGES enables them; deny wins over allow. Profile names expand here exactly as they do in FB_TOOL_PACKAGES, and a profile beats a same-spelled package, so FB_PACKAGES_DENY=core denies the whole six-package core profile rather than the single core package. The core package is then forced back on regardless, because its identity and diagnostic tools are what you need to debug the surface you just narrowed. An unrecognized name is a startup error, not a silently ignored token."
          },
          {
            "name": "FB_PACKAGES_READONLY",
            "description": "Comma-separated packages OR profiles whose write tools are not registered at all; the read tools of those packages stay available. Profile names expand as they do in FB_TOOL_PACKAGES, so FB_PACKAGES_READONLY=core makes every default package read-only in one token. An unrecognized name is a startup error."
          },
          {
            "name": "FB_TRANSPORT",
            "description": "Transport protocol: stdio (default) or http. The http transport binds 127.0.0.1 only and fails closed without FB_HTTP_TOKEN."
          },
          {
            "name": "FB_HTTP_TOKEN",
            "description": "Bearer token guarding the HTTP transport; required when FB_TRANSPORT=http (the server refuses to start without it). At least 16 characters — a shorter value is refused (under stdio it is dropped with a warning); mint one with openssl rand -hex 32.",
            "isSecret": true
          },
          {
            "name": "FB_HTTP_PORT",
            "description": "Port for the HTTP transport (loopback only); used when FB_TRANSPORT=http. Integer in [1, 65535]."
          },
          {
            "name": "FB_AD_ACCOUNT_ID",
            "description": "Default ad account ID (act_… or the bare numeric id) for the opt-in ads package."
          },
          {
            "name": "FB_ADS_BUDGET_CEILING",
            "description": "Hard ceiling for any ads budget write, in minor units of the ad account's own currency (e.g. cents for USD). Non-negative integer; a write above it is refused. No currency conversion: size it for the account's currency (1000 is $10 but only 1000 JPY)."
          },
          {
            "name": "FB_ADS_CAMPAIGN_SPEND_CAP_MAX",
            "description": "Largest campaign spend_cap (the lifetime total a campaign may spend) that an ads write may set, in minor units of the ad account's own currency. Non-negative integer; a cap above it is refused, never clamped. Unset: every write that sets a campaign spend cap is refused. No currency conversion, same as FB_ADS_BUDGET_CEILING."
          },
          {
            "name": "FB_LOG_LEVEL",
            "description": "Stderr log verbosity: debug, info, warn or error. Logs never go to stdout — that is the stdio protocol channel."
          }
        ]
      }
    ],
    "remotes": []
  },
  "dependencies": [],
  "installTargets": [
    "claude-code",
    "claude-desktop",
    "cursor",
    "vscode",
    "trae",
    "cherry-studio",
    "lingma",
    "windsurf",
    "cline",
    "workbuddy"
  ],
  "keywords": [],
  "provenance": {
    "origin": "official-mcp-registry",
    "originalId": "io.github.IvanBBaev/facebook-mcp",
    "originalUrl": "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.IvanBBaev%2Ffacebook-mcp/versions/latest",
    "isOfficial": true,
    "status": "active"
  }
}