loading…
Search for a command to run...
loading…
Full-coverage MCP server for Instagram Graph API v25.0, Threads API & Meta platform — 57 tools for publishing, comments, insights, hashtags, DMs, and token mana
Full-coverage MCP server for Instagram Graph API v25.0, Threads API & Meta platform — 57 tools for publishing, comments, insights, hashtags, DMs, and token management.
English | 한국어
npm version License: MIT MCP Badge
Full-coverage MCP server for Instagram Graph API (v25.0), Threads API, and Meta platform management.
Tell your AI assistant things like:
content_publish promptAI Agent Integration: See llms.txt for a machine-readable summary, or copy templates/CLAUDE.md / templates/AGENTS.md into your project for automatic MCP discovery.
x-app-usage headerimpressions, video_views, engagement replaced with views, reach, saved, sharesparent_post_author_only and followers_only optionsclicks, reposts, reels_skip_rate metrics| Platform | Account Type | Notes |
|---|---|---|
| Business or Creator account | Personal accounts cannot use the Graph API. Free to switch in Instagram settings | |
| Threads | Any account | All Threads accounts can use the API (Instagram account link no longer required since Sep 2025) |
| Meta (token/webhook tools) | Meta Developer App | Create at developers.facebook.com |
{
"mcpServers": {
"meta": {
"command": "npx",
"args": ["-y", "@mikusnuz/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"
}
}
}
}
git clone https://github.com/mikusnuz/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"
}
}
}
}
| Variable | Required | Description |
|---|---|---|
INSTAGRAM_ACCESS_TOKEN |
For Instagram | Instagram Graph API access token |
INSTAGRAM_USER_ID |
For Instagram | Instagram Business/Creator account ID |
THREADS_ACCESS_TOKEN |
For Threads | Threads API access token |
THREADS_USER_ID |
For Threads | Threads user ID |
META_APP_ID |
For token/webhook tools | Meta App ID |
META_APP_SECRET |
For token/webhook tools | Meta App Secret |
You only need to set the variables for the platforms you use. For example, if you only use Threads, just set THREADS_ACCESS_TOKEN and THREADS_USER_ID.
| Tool | Description |
|---|---|
meta_exchange_token |
Exchange short-lived token for long-lived token (~60 days) |
meta_refresh_token |
Refresh a long-lived token before expiration |
meta_debug_token |
Inspect token validity, expiration, and scopes |
meta_get_app_info |
Get Meta App information |
meta_subscribe_webhook |
Subscribe to webhook notifications |
meta_get_webhook_subscriptions |
List current webhook subscriptions |
| Tool | Description |
|---|---|
ig_publish_photo |
Publish a photo post (supports alt_text) |
ig_publish_video |
Publish a video post |
ig_publish_carousel |
Publish a carousel/album (2-10 items, supports alt_text per item) |
ig_publish_reel |
Publish a Reel (supports alt_text) |
ig_publish_story |
Publish a Story (24hr) |
ig_get_container_status |
Check media container processing status |
| Tool | Description |
|---|---|
ig_get_media_list |
List published media |
ig_get_media |
Get media details |
ig_delete_media |
Delete a media post |
ig_get_media_insights |
Get media analytics (views, reach, saved, shares) |
ig_toggle_comments |
Enable/disable comments on a post |
| Tool | Description |
|---|---|
ig_get_comments |
Get comments on a post |
ig_get_comment |
Get comment details |
ig_post_comment |
Post a comment |
ig_get_replies |
Get replies to a comment |
ig_reply_to_comment |
Reply to a comment |
ig_hide_comment |
Hide/unhide a comment |
ig_delete_comment |
Delete a comment |
| Tool | Description |
|---|---|
ig_get_profile |
Get account profile info |
ig_get_account_insights |
Get account-level analytics (views, reach, follower_count) |
ig_business_discovery |
Look up another business account |
ig_get_collaboration_invites |
Get pending collaboration invites |
ig_respond_collaboration_invite |
Accept or decline collaboration invites |
| Tool | Description |
|---|---|
ig_search_hashtag |
Search hashtag by name |
ig_get_hashtag |
Get hashtag info |
ig_get_hashtag_recent |
Get recent media for a hashtag |
ig_get_hashtag_top |
Get top media for a hashtag |
| Tool | Description |
|---|---|
ig_get_mentioned_comments |
Get comments mentioning you |
ig_get_tagged_media |
Get media you're tagged in |
| Tool | Description |
|---|---|
ig_get_conversations |
List DM conversations |
ig_get_messages |
Get messages in a conversation |
ig_send_message |
Send a DM |
ig_get_message |
Get message details |
| Tool | Description |
|---|---|
threads_publish_text |
Publish a text post (supports polls, GIFs, link attachments, topic tags, quote posts, spoiler flag) |
threads_publish_image |
Publish an image post (supports alt_text, topic tags, spoiler flag) |
threads_publish_video |
Publish a video post (supports alt_text, topic tags, spoiler flag) |
threads_publish_carousel |
Publish a carousel (2-20 items, supports alt_text per item) |
threads_delete_post |
Delete a post (max 100/day) |
threads_get_container_status |
Check container processing status |
threads_get_publishing_limit |
Check remaining publishing quota (250 posts/day) |
| Tool | Description |
|---|---|
threads_get_posts |
List published posts (includes topic_tag, poll, GIF fields) |
threads_get_post |
Get post details |
threads_search_posts |
Search public posts by keyword or topic tag |
| Tool | Description |
|---|---|
threads_get_replies |
Get replies to a post |
threads_reply |
Reply to a post (supports image/video attachments) |
threads_hide_reply |
Hide a reply |
threads_unhide_reply |
Unhide a reply |
| Tool | Description |
|---|---|
threads_get_profile |
Get Threads profile info (includes is_verified) |
threads_get_user_threads |
List user's threads |
| Tool | Description |
|---|---|
threads_get_post_insights |
Get post analytics (views, likes, replies, reposts, quotes, clicks) |
threads_get_user_insights |
Get account-level analytics |
| Resource URI | Description |
|---|---|
instagram://profile |
Instagram account profile data |
threads://profile |
Threads account profile data (includes is_verified) |
| Prompt | Description |
|---|---|
content_publish |
Cross-post content to Instagram and Threads |
analytics_report |
Generate combined analytics report |
All platforms (Instagram, Threads) require a Meta Developer App.
Your META_APP_ID and META_APP_SECRET are in App Settings → Basic.
Requires an Instagram Business or Creator account. Switch for free in Instagram app → Settings → Account type.
instagram_basic, instagram_content_publish, instagram_manage_comments, instagram_manage_insights, instagram_manage_contents, pages_show_list, pages_read_engagementGET 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_TOKEN
Or use the meta_exchange_token tool after setup.GET https://graph.facebook.com/v25.0/me/accounts?access_token=YOUR_TOKEN
This returns your Facebook Pages. For each page, get the linked Instagram account:GET https://graph.facebook.com/v25.0/{page-id}?fields=instagram_business_account&access_token=YOUR_TOKEN
The instagram_business_account.id is your INSTAGRAM_USER_ID (a numeric ID like 17841400123456789).Works with any Threads account (personal or business). Instagram account link is no longer required since September 2025.
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=code
https://localhost/ as redirect URI (configure in App Settings → Threads API → Redirect URIs)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_CODE
GET https://graph.threads.net/access_token
?grant_type=th_exchange_token
&client_secret=YOUR_APP_SECRET
&access_token=SHORT_LIVED_TOKEN
GET https://graph.threads.net/v1.0/me?fields=id,username&access_token=YOUR_TOKEN
The id field is your THREADS_USER_ID (a numeric ID like 1234567890).Set only the variables for the platforms you use:
# Instagram (requires Business/Creator account)
INSTAGRAM_ACCESS_TOKEN=EAAxxxxxxx... # Long-lived token from Step 2
INSTAGRAM_USER_ID=17841400123456789 # Numeric ID from Step 2.5
# Threads (any account)
THREADS_ACCESS_TOKEN=THQWxxxxxxx... # Long-lived token from Step 3
THREADS_USER_ID=1234567890 # Numeric ID from Step 3.6
# Meta App (for token management & webhooks)
META_APP_ID=123456789012345 # From App Settings → Basic
META_APP_SECRET=abcdef0123456789abcdef # From App Settings → Basic
Access tokens expire after ~60 days. Refresh before expiration:
meta_exchange_token with the current valid tokenmeta_refresh_token or call:GET https://graph.threads.net/refresh_access_token
?grant_type=th_refresh_token
&access_token=CURRENT_LONG_LIVED_TOKEN
You can check token status anytime with meta_debug_token.
The following Instagram metrics were deprecated in Graph API v22.0 (January 2025) and removed for all versions on April 21, 2025:
| Deprecated Metric | Replacement |
|---|---|
impressions |
views |
video_views |
views |
plays |
views |
clips_replays_count |
views |
engagement |
saves + shares + likes + comments |
email_contacts |
Removed (no replacement) |
phone_call_clicks |
Removed (no replacement) |
text_message_clicks |
Removed (no replacement) |
get_directions_clicks |
Removed (no replacement) |
website_clicks |
Removed (no replacement) |
profile_views |
Removed (no replacement) |
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mikusnuz-meta-mcp": {
"command": "npx",
"args": []
}
}
}