MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

Meta Social MCP — 用 Chrome Cookies 直接操作 Facebook / Instagram / Threads,無需第三方 API Token

Created 4/24/2026
Updated about 23 hours ago
Repository documentation and setup instructions

Meta Workflow

用 CDP Browser Hijacking 直接操作 Facebook 個人帳號——不需要 API Token、不需要開發者帳號。

用你自己的 Chromium 瀏覽器 session,AI Agent 透過 CDP 接管來發文、讀私訊、讀通知。

2026-04-24 實測:成功在 Facebook 個人牆發文

post result platform

功能

| 工具 | 說明 | 狀態 | |------|------|------| | open_login_window | 啟動可見瀏覽器,讓你親自登入 Facebook(只需一次) | ✅ | | post_facebook | 在個人動態牆發布文字帖 | ✅ 實測成功 | | read_messenger | 讀取 Messenger 私訊對話列表 | ✅ | | read_notifications | 讀取 Facebook 通知 | ✅ | | post_threads | 在 Threads 個人檔案發布文字+圖片帖 | ✅ 實測成功 |

原理

你親自登入一次(Chromium - FacebookMCP profile)
         ↓
Hermes Agent 啟動 Chromium --remote-debugging-port=9333
         ↓
CDP WebSocket 接管 browser
         ↓
Playwright 直接操作 DOM
         ↓
完成發文 / 讀取私訊 / 讀取通知

為什麼不走 Graph API?

  • Graph API 只能操作粉絲專頁,不能操作個人帳號私訊/通知
  • 需要 Facebook 開發者審批(pages_messaging 權限需要人工審查)
  • 我們的方案:個人帳號能做什麼,AI 就能做什麼

為什麼不用 Selenium/Playwright 直接 launch?

  • macOS Chrome 的 cookies 使用 login.keychain 加密,外部程序無法直接讀取
  • 解法:透過 CDP 接管一個已經解密 cookies 的 browser session
  • 關鍵洞察由 @Livia-Zaharia/just_facebook_mcp 觸發,但該 repo 使用 headless Chrome 仍有 cookie 讀取限制

前置需求

  • Python 3.11+
  • ungoogled-chromium(brew install --cask chromium)
  • macOS(已測試)
  • Linux/WSL 理論上支援(需調整 profile 路徑)

安裝

git clone https://github.com/whypuss/social-mcp.git
cd social-mcp
uv sync

設定

1. 建立獨立 Chromium profile

建議使用獨立 profile,避免影響你日常的 Chrome session:

# 建立 FacebookMCP profile 目錄
mkdir -p ~/Library/Application\ Support/Chromium/FacebookMCP

2. 在 Chromium 登入 Facebook

open -a Chromium --args --user-data-dir="$HOME/Library/Application Support/Chromium/FacebookMCP"

在瀏覽器中正常登入 Facebook。只需做一次。

3. 啟動 CDP Server

讓 Chromium 在背景以 remote debugging 模式運行:

# 方法 A:手動啟動
"/Applications/Chromium.app/Contents/MacOS/Chromium" \
  --remote-debugging-port=9333 \
  --user-data-dir="$HOME/Library/Application Support/Chromium/FacebookMCP" \
  --profile-directory="Default" &

# 方法 B:用 launchd 自動啟動(macOS)
# 見 scripts/ 裡的 launchd plist 範例

使用方式

直接測試發文

uv run python -m social_mcp.post_facebook "測試訊息 from AI Agent 🚀"

啟動 MCP Server(Hermes Agent / Claude Desktop)

uv run social-mcp --debug

Hermes Agent 設定

~/.hermes/config.yaml 加入:

mcp_servers:
  personal-social:
    command: "/path/to/.venv/bin/python"
    args: ["/path/to/social-mcp/social_mcp/mcp_server.py"]

重啟 Hermes Gateway 後生效。

Claude Desktop 設定

~/Library/Application Support/Claude/claude_desktop_config.json 加入:

{
  "mcpServers": {
    "social": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/social-mcp", "social-mcp"]
    }
  }
}

工具使用範例

你:幫我發一篇 Facebook 帖:「AI Agent 自動發文測試」
Agent → post_facebook(message="AI Agent 自動發文測試")
       → ✅ Post published successfully!

你:讀取我的 Messenger 私訊
Agent → read_messenger()
       → ### Messenger 私訊摘要
         | 對話 |
         | :--- |
         | 張三 | ...

你:看看 Facebook 有沒有通知
Agent → read_notifications()
       → ### Facebook 通知摘要
         | 通知 |
         | :--- |
         | Kate Ngu 讚好你的回應 | ...

CDP 端口與 profile 設定

| 設定 | 值 | |------|-----| | Chromium 路徑 | /Applications/Chromium.app/Contents/MacOS/Chromium | | CDP 端口 | 9333 | | Profile 目錄 | ~/Library/Application Support/Chromium/FacebookMCP |

若你的 Chromium 路徑不同,在 social_mcp/browser_hijack.py 裡修改 CHROMIUM_PATH

常見問題

Q: 為什麼要用 ungoogled-chromium(Chromium)而不是 Google Chrome? A: Chromium 是完全開源的,沒有 Google 更新推送等問題。任何 Chromium 都支援 --remote-debugging-port

Q: 為什麼不直接用 Playwright launch headless Chrome? A: macOS Chrome 的 cookies 會用 login keychain 加密。Playwright 新啟動的 headless Chrome 處於「未解密」狀態,Facebook 會偵測到異常 session。

Q: session 會過期嗎? A: Facebook 有時會要求重新驗證裝置。若操作失敗,重新在 CDP Chromium 視窗登入一次即可。

Q: 支援粉絲專頁嗎? A: 目前主要支援個人帳號。粉絲專頁操作(以粉絲團身份發文)需要切換到粉絲團身份,Facebook 頁面元件稍有不同,可能需要調整 DOM selector。

Q: 支援 Instagram / Threads 嗎? A: ✅ Threads 支援已實測成功!見下方「Threads 發文」章節。Instagram 尚未測試。

Threads 發文

Threads 使用和 Facebook 相同的 CDP Browser Hijacking 架構。Chromium 登入 Facebook 後,Threads 同步登入,無需另外設定。

直接測試文字帖

uv run python scripts/post_threads "測試訊息 from AI Agent 🚀"

帶圖片發文

uv run python scripts/post_threads "Windows 11 SSD 速度問題" --image /tmp/ssd.jpg

Python API

from social_mcp.post_threads import post_threads

# 純文字
result = await post_threads("測試文字帖")

# 圖文並茂
result = await post_threads(
    message="Windows 11 升級後 SSD 速度跌至 1/4?",
    image_path="/tmp/ssd.jpg"
)
print(result)  # ✅ Posted to Threads in 9.2s

Threads 發文原理(與 Facebook 的差異)

| 步驟 | Facebook | Threads | |------|----------|---------| | 開啟 composer | aria-label=" 建立帖子 " | aria-label=" 文字欄位空白。請輸入內容以撰寫新貼文。 " | | 編輯器 | 標準 contenteditable | Lexical data-lexical-editor | | 發布按鈕 | 直接在頁面 DOM | 在 role="dialog" 內(含「發佈」文字) | | 圖片上傳 | 點擊按鈕 → OS 文件選擇 | 找 dialog 內 input[type="file"]set_input_files() | | 發布後行為 | Dialog 關閉 | Dialog 關閉,留在 profile 頁面不跳轉 |

驗證方式:發布後 reload profile 頁面,從 DOM 中確認內容出現。

安全性說明

  • Cookies 永遠留在本地:所有操作都在你自己機器的 Chromium 內,cookies 不會離開你的電腦
  • 不使用任何第三方 API:不走 Meta Graph API,不需要 access token
  • 獨立 profile:建議使用專用 profile,避免影響日常瀏覽 session
  • 警告:大量自動化操作可能違反 Meta 服務條款,請自行評估風險。本工具僅供個人用途。

開發

# 安裝
uv sync

# 程式碼檢查
uv run ruff check social_mcp/

# 單元測試
uv run pytest

架構

social_mcp/
├── __init__.py          # 套件起點
├── browser_hijack.py    # CDP 瀏覽器接管核心
├── mcp_server.py        # MCP Server(stdio 模式)
├── post_facebook.py     # Facebook 發文腳本
└── post_threads.py      # Threads 發文腳本(支援圖文)

授權

MIT License

Quick Setup
Installation guide for this server

Install Package (if required)

uvx social-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "whypuss-social-mcp": { "command": "uvx", "args": [ "social-mcp" ] } } }