Skip to main content
Glama
longhdwst1full

social-connect-mcp-poc

README.md
# Social Connect MCP POC

Node.js 22 POC **không cần npm dependency** để test Facebook + TikTok connection, OAuth và MCP connection tools.

## 1. Chạy ngay bằng mock

```bash
cp .env.example .env
npm test
npm start
```

Mở `http://localhost:3000`, sau đó bấm **Test Facebook**, **Test TikTok** hoặc **Run test-all**.

`.env.example` mặc định `MOCK_SOCIAL=true`, nên demo được ngay mà chưa cần secret.

## 2. Test khả năng truy cập endpoint thật

```bash
npm run probe
```

HTTP 400/401 khi không có token vẫn có nghĩa là endpoint provider đang reachable.

## 3. Chạy Facebook LIVE

Tạo Meta Developer App, thêm Facebook Login và cấu hình:

```env
MOCK_SOCIAL=false
META_GRAPH_VERSION=v26.0
META_APP_ID=...
META_APP_SECRET=...
META_REDIRECT_URI=http://localhost:3000/api/facebook/callback
```

OAuth scopes POC:

```text
pages_show_list
pages_read_engagement
pages_manage_posts
pages_manage_engagement
pages_messaging
```

Sau đó mở:

```text
http://localhost:3000/api/facebook/login
```

Callback đổi authorization code thành user access token, gọi `/me` và `/me/accounts`, rồi giữ token tạm trong memory.

Bạn cũng có thể bypass OAuth để test token/Page trực tiếp:

```env
META_USER_ACCESS_TOKEN=...
# hoặc
META_PAGE_ID=...
META_PAGE_ACCESS_TOKEN=...
```

## 4. Chạy TikTok LIVE

Tạo TikTok Developer App + Login Kit và cấu hình:

```env
MOCK_SOCIAL=false
TIKTOK_CLIENT_KEY=...
TIKTOK_CLIENT_SECRET=...
TIKTOK_REDIRECT_URI=http://localhost:3000/api/tiktok/callback
TIKTOK_SCOPES=user.info.basic,video.list
```

Mở:

```text
http://localhost:3000/api/tiktok/login
```

Callback dùng endpoint token v2 và sau đó test `/v2/user/info/`. Nếu app có `video.list`, POC test luôn `/v2/video/list/`.

Hoặc test token trực tiếp:

```env
TIKTOK_ACCESS_TOKEN=...
```

## 5. API nội bộ

```text
GET /api/health
GET /api/facebook/login
GET /api/facebook/callback
GET /api/facebook/test
GET /api/tiktok/login
GET /api/tiktok/callback
GET /api/tiktok/test
POST /api/tiktok/upload/init
POST /api/tiktok/upload/status
GET /api/test-all
```

## 6. MCP POC

```bash
npm run mcp
```

Tools:

```text
social_status
facebook_test_connection
tiktok_test_connection
```

`src/mcp-server.js` là minimal stdio JSON-RPC MCP implementation để POC không phụ thuộc package ngoài. Khi nâng lên production nên thay bằng official MCP SDK.

## 7. Production TODO

POC cố ý chỉ giữ OAuth token trong memory. Production cần database/encrypted secret store, refresh-token rotation, Meta/TikTok webhook verification, RBAC, audit log, rate-limit/retry, App Review và token revocation flow.

## 8. Git

Repo đã được `git init` sẵn. Để đẩy lên GitHub sau khi tạo remote repository:

```bash
git remote add origin git@github.com:<username>/social-connect-mcp-poc.git
git push -u origin main
```