meta-mcp
Provides comprehensive Instagram Business/Creator account management via the Instagram Graph API, including publishing photos, videos, reels, stories and carousels with alt text; managing comments, replies, and DMs; viewing media and account insights; searching hashtags; handling collaboration invites; and managing tagged content and mentions.
Supports Meta platform token lifecycle management (exchange, refresh, and debug) and webhook subscription management for Meta Developer Apps.
Enables full Threads API integration for publishing text posts with polls and GIFs, images, videos, and carousels; managing replies (including hide/unhide); searching public posts; deleting content; and viewing post-level and account-level analytics.
meta-mcp
MCP server for Instagram Graph API (v25.0), Threads API, and Meta platform management. Publish content, manage comments, view insights, and handle DMs — all through AI assistants.
Quick Start
Add to your MCP client config:
{
"mcpServers": {
"meta": {
"command": "npx",
"args": ["-y", "@exileum/meta-mcp"],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "your_ig_token",
"INSTAGRAM_USER_ID": "your_ig_user_id",
"THREADS_ACCESS_TOKEN": "your_threads_token",
"THREADS_USER_ID": "your_threads_user_id"
}
}
}
}Only set the variables for the platforms you use.
Manual Installation
git clone https://github.com/exileum/meta-mcp.git
cd meta-mcp
npm install
npm run build{
"mcpServers": {
"meta": {
"command": "node",
"args": ["/path/to/meta-mcp/dist/index.js"],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "your_ig_token",
"INSTAGRAM_USER_ID": "your_ig_user_id",
"THREADS_ACCESS_TOKEN": "your_threads_token",
"THREADS_USER_ID": "your_threads_user_id"
}
}
}
}Environment Variables
Variable | Required | Description |
| For Instagram | Instagram Graph API access token |
| For Instagram | Instagram Business/Creator account ID |
| For Threads | Threads API access token |
| For Threads | Threads user ID |
| For token/webhook tools | Meta App ID |
| For token/webhook tools | Meta App Secret |
Account Requirements
Platform | Account Type | Notes |
Business or Creator | Personal accounts cannot use the Graph API. Free to switch in settings | |
Threads | Any account | Instagram link no longer required since Sep 2025 |
Meta (token/webhook) | Meta Developer App | Create at developers.facebook.com |
Features
57 tools across Instagram (33), Threads (18), and Meta platform (6)
Instagram: Publish photos/videos/reels/stories/carousels with alt text, manage comments, view insights, search hashtags, handle DMs, manage collaboration invites
Threads: Publish text/images/videos/carousels with polls, GIFs, topic tags, link attachments, alt text, spoiler flags; manage replies; search posts; delete posts; view insights
Meta: Token exchange/refresh/debug, webhook management
2 resources: Instagram profile, Threads profile
2 prompts: Cross-platform content publishing, analytics report
Rate limit tracking via
x-app-usageheader
Tools
Meta Platform (6)
Tool | Description |
| Exchange short-lived token for long-lived token (~60 days) |
| Refresh a long-lived token before expiration |
| Inspect token validity, expiration, and scopes |
| Get Meta App information |
| Subscribe to webhook notifications |
| List current webhook subscriptions |
Instagram — Publishing (6)
Tool | Description |
| Publish a photo post (supports alt_text) |
| Publish a video post |
| Publish a carousel/album (2-10 items, supports alt_text per item) |
| Publish a Reel (supports alt_text) |
| Publish a Story (24hr) |
| Check media container processing status |
Instagram — Media (5)
Tool | Description |
| List published media |
| Get media details |
| Delete a media post |
| Get media analytics (views, reach, saved, shares) |
| Enable/disable comments on a post |
Instagram — Comments (7)
Tool | Description |
| Get comments on a post |
| Get comment details |
| Post a comment |
| Get replies to a comment |
| Reply to a comment |
| Hide/unhide a comment |
| Delete a comment |
Instagram — Profile & Insights (5)
Tool | Description |
| Get account profile info |
| Get account-level analytics (views, reach, follower_count) |
| Look up another business account |
| Get pending collaboration invites |
| Accept or decline collaboration invites |
Instagram — Hashtags (4)
Tool | Description |
| Search hashtag by name |
| Get hashtag info |
| Get recent media for a hashtag |
| Get top media for a hashtag |
Instagram — Mentions & Tags (2)
Tool | Description |
| Get comments mentioning you |
| Get media you're tagged in |
Instagram — Messaging (4)
Tool | Description |
| List DM conversations |
| Get messages in a conversation |
| Send a DM |
| Get message details |
Threads — Publishing (7)
Tool | Description |
| Publish a text post (supports polls, GIFs, link attachments, topic tags, quote posts, spoiler flag) |
| Publish an image post (supports alt_text, topic tags, spoiler flag) |
| Publish a video post (supports alt_text, topic tags, spoiler flag) |
| Publish a carousel (2-20 items, supports alt_text per item) |
| Delete a post (max 100/day) |
| Check container processing status |
| Check remaining publishing quota (250 posts/day) |
Threads — Media & Search (3)
Tool | Description |
| List published posts (includes topic_tag, poll, GIF fields) |
| Get post details |
| Search public posts by keyword or topic tag |
Threads — Replies (4)
Tool | Description |
| Get replies to a post |
| Reply to a post (supports image/video attachments) |
| Hide a reply |
| Unhide a reply |
Threads — Profile (2)
Tool | Description |
| Get Threads profile info (includes is_verified) |
| List user's threads |
Threads — Insights (2)
Tool | Description |
| Get post analytics (views, likes, replies, reposts, quotes, clicks) |
| Get account-level analytics |
Resources
Resource URI | Description |
| Instagram account profile data |
| Threads account profile data (includes is_verified) |
Prompts
Prompt | Description |
| Cross-post content to Instagram and Threads |
| Generate combined analytics report |
Setup Guide
Step 1: Create a Meta Developer App
Go to developers.facebook.com and log in
Click "My Apps" -> "Create App"
Select "Other" -> "Business" (or "None" for personal use)
Enter an app name and create
Your META_APP_ID and META_APP_SECRET are in App Settings -> Basic.
Step 2: Instagram Setup
Requires an Instagram Business or Creator account. Switch for free in Instagram app -> Settings -> Account type.
In your Meta App, go to "Add Products" -> add "Instagram Graph API"
Go to "Instagram Graph API" -> "Settings" and connect your Instagram Business account via a Facebook Page
Open the Graph API Explorer
Select your app
Add permissions:
instagram_basic,instagram_content_publish,instagram_manage_comments,instagram_manage_insights,instagram_manage_contents,pages_show_list,pages_read_engagementClick "Generate Access Token" and authorize
The generated token is short-lived (~1 hour). Exchange it for a long-lived token (~60 days):
GET https://graph.facebook.com/v25.0/oauth/access_token ?grant_type=fb_exchange_token &client_id=YOUR_APP_ID &client_secret=YOUR_APP_SECRET &fb_exchange_token=SHORT_LIVED_TOKENOr use the
meta_exchange_tokentool after setup.Get your Instagram User ID:
GET https://graph.facebook.com/v25.0/me/accounts?access_token=YOUR_TOKENFor each page, get the linked Instagram account:
GET https://graph.facebook.com/v25.0/{page-id}?fields=instagram_business_account&access_token=YOUR_TOKENThe
instagram_business_account.idis yourINSTAGRAM_USER_ID.
Step 3: Threads Setup
Works with any Threads account. Instagram link no longer required since Sep 2025.
In your Meta App, go to "Add Products" -> add "Threads API"
Go to "Threads API" -> "Settings":
Add your Threads account as a Threads Tester under "Roles"
Accept the invitation in the Threads app: Settings -> Account -> Website permissions -> Invites
Generate an authorization URL:
https://threads.net/oauth/authorize ?client_id=YOUR_APP_ID &redirect_uri=YOUR_REDIRECT_URI &scope=threads_basic,threads_content_publish,threads_manage_insights,threads_manage_replies,threads_read_replies &response_type=codeFor local testing, use
https://localhost/as redirect URI (configure in App Settings -> Threads API -> Redirect URIs).After authorization, exchange the code for an access token:
POST https://graph.threads.net/oauth/access_token Content-Type: application/x-www-form-urlencoded client_id=YOUR_APP_ID &client_secret=YOUR_APP_SECRET &grant_type=authorization_code &redirect_uri=YOUR_REDIRECT_URI &code=AUTHORIZATION_CODEExchange for a long-lived token (~60 days):
GET https://graph.threads.net/access_token ?grant_type=th_exchange_token &client_secret=YOUR_APP_SECRET &access_token=SHORT_LIVED_TOKENGet your Threads User ID:
GET https://graph.threads.net/v1.0/me?fields=id,username&access_token=YOUR_TOKENThe
idfield is yourTHREADS_USER_ID.
Token Renewal
Access tokens expire after ~60 days. Refresh before expiration:
Instagram: Use
meta_exchange_tokenwith the current valid tokenThreads: Use
meta_refresh_tokenor call:GET https://graph.threads.net/refresh_access_token ?grant_type=th_refresh_token &access_token=CURRENT_LONG_LIVED_TOKEN
Check token status anytime with meta_debug_token.
Deprecated Metrics (Graph API v22.0+)
Deprecated Metric | Replacement |
|
|
|
|
|
|
|
|
|
|
License
See CHANGELOG.md for release history.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/exileum/meta-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server