meta-mcp
meta-mcp lets you manage Meta, Instagram, and Threads accounts through MCP tools.
Handle Meta tokens and webhooks: exchange, refresh, debug tokens; get app info; subscribe/list webhook subscriptions.
Publish Instagram content: photos, videos, carousels, reels, and stories; check container status.
Manage Instagram media and engagement: list/get/delete media, toggle comments, read/post/reply/hide/delete comments, get media insights.
Use Instagram account features: profile/account insights, business discovery, collaboration invites, hashtag search/recent/top media, mentions/tagged media, and DMs.
Publish Threads content: text, image, video, and carousel posts; delete posts; check container status and publishing limits.
Manage Threads posts and replies: list/get/search posts, get replies, reply, hide/unhide replies, get profile and user threads.
View analytics: Instagram media/account insights and Threads post/account insights.
Use README-level extras where available: Instagram/Threads profile resources and cross-posting/analytics report prompts.
Provides comprehensive tools for publishing photos, videos, reels, stories, and carousels, alongside features for managing comments, direct messages, hashtag searching, and detailed account and post-level insights.
Offers platform-level utilities for managing Meta Developer App credentials, including token exchange, refresh, and debugging, as well as webhook subscription management.
Enables publishing text and media posts with support for polls, GIFs, and topic tags, as well as managing replies, searching public posts, and tracking account and post performance analytics.
English | 한국어
meta-mcp
Full-coverage MCP server for Instagram Graph API (v26.0), Threads API, and Meta platform management.
When to Use
Tell your AI assistant things like:
"Post a photo to Instagram" — publish photos, videos, reels, stories, and carousels
"Publish a text post on Threads" — text posts with polls, GIFs, link attachments, and topic tags
"Get my Instagram follower count and insights" — account and post-level analytics
"Schedule a carousel post" — multi-image albums on Instagram (2-10) or Threads (2-20)
"Reply to comments on my latest post" — read and respond to comments on both platforms
"Cross-post to Instagram and Threads" — use the built-in
content_publishprompt"Get analytics for my Threads account" — views, likes, replies, reposts, quotes, clicks
"Manage Instagram DMs" — list conversations, read messages, send replies
AI Agent Integration: See
llms.txtfor a machine-readable summary, or copytemplates/CLAUDE.md/templates/AGENTS.mdinto your project for automatic MCP discovery.
Related MCP server: @node2flow/instagram-mcp
Features
66 tools across Instagram (33), Threads (27), 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, ghost posts, reply approvals, location tags, and Instagram Stories cross-sharing; manage replies and pending reply approvals; search posts and locations; profile/mentions discovery; oEmbed; view insights; delete posts
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
What's New in v2.2.1
Photos, image Stories, and every carousel child and parent now wait for container processing before publication. Processing errors stop the publish request.
Mentioned comments use the Instagram user field expansion with documented default fields.
What's New in v2.2.0
Fixed Instagram business discovery and collaboration invite requests. Use
media_idandacceptfor invites;invite_idandactionremain supported aliases.Account insights support
metric_type,breakdown, and demographictimeframe. Metrics such asviewsselecttotal_valueautomatically.Standalone videos now publish as Reels shared to the feed. Photo, Reel, and carousel publishing support AI info and paid-partnership labels; Reels also support
trial_params.Public Threads oEmbed works without a token. Includes the token refresh, Instagram Messaging, publishing, and reply handling fixes since v2.1.1.
What's New in v2.1.0
Graph API v26.0: Upgraded from v25.0 (no deprecated fields/endpoints from the v26.0 changelog were in use)
Tenor removed: GIPHY is now the only GIF provider (Tenor was sunset March 31, 2026);
gif_providerparam droppedThreads Ghost Posts:
is_ghost_postonthreads_publish_text(auto-archived after 24h)Threads Reply Approvals:
enable_reply_approvalson publish tools, plusthreads_get_pending_repliesandthreads_manage_pending_replyThreads → Instagram Stories cross-share:
crossreshare_to_ig/crossreshare_to_ig_dark_modeon all publish toolsThreads Location Tagging:
location_idon publish tools, plusthreads_search_locationsandthreads_get_locationThreads Profile Discovery:
threads_lookup_profileandthreads_get_profile_postsfor public profilesThreads Mentions:
threads_get_mentionsThreads oEmbed:
threads_get_oembedfor embedding public postsThreads Conversations:
threads_get_conversationfor flattened (nested) reply threadsFixed
threads_search_posts: now calls the correct/keyword_searchendpoint with the correctsearch_mode/search_typeparameters (previous version targeted a non-existent endpoint)Post/reply fields expanded with
is_verified,profile_picture_url,location_id,root_post,replied_to,reply_audience
What's New in v2.0.0
Graph API v25.0: Upgraded from v21.0 (expired Sep 2025) to v25.0 (current)
Fixed deprecated metrics:
impressions,video_views,engagementreplaced withviews,reach,saved,sharesThreads polls: Create posts with interactive poll attachments
Threads GIFs: Attach GIFs from GIPHY or Tenor
Threads topic tags: Categorize posts with topic tags
Threads link attachments: Attach URL preview cards to text posts
Threads post search: Search public posts by keyword or topic tag
Threads post deletion: Delete posts (rate limited to 100/day)
Threads publishing limit: Check remaining quota
Threads quote posts: Quote other posts by ID
Threads spoiler flag: Mark content as spoiler
Threads alt text: Add accessibility descriptions to all media types
Threads new reply controls:
parent_post_author_onlyandfollowers_onlyoptionsInstagram alt text: Support for photo, reel, and carousel items
Instagram collaboration invites: Query and respond to collab invites
Updated insights metrics: New
clicks,reposts,reels_skip_ratemetrics
Account Requirements
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 |
Installation
Requires Node.js 20 or later, including the MCP host's npx environment.
npx (Recommended)
{
"mcpServers": {
"meta": {
"command": "npx",
"args": ["-y", "@mikusnuz/meta-mcp"],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "your_ig_token",
"INSTAGRAM_USER_ID": "your_ig_user_id",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "your_page_access_token",
"INSTAGRAM_PAGE_ID": "your_linked_page_id",
"THREADS_ACCESS_TOKEN": "your_threads_token",
"THREADS_USER_ID": "your_threads_user_id"
}
}
}
}Manual
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",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "your_page_access_token",
"INSTAGRAM_PAGE_ID": "your_linked_page_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 Instagram DMs | Page access token for Instagram Messaging with Facebook Login |
| For Instagram DMs | Facebook Page ID linked to the Instagram professional account |
| 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 |
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.
Tools
Meta Platform (6)
Tool | Description |
| Exchange short-lived token for long-lived token (~60 days) |
| Extend an Instagram/Facebook token or refresh a Threads token ( |
| 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 (polls, GIFs, link attachments, topic tags, quote posts, spoiler flag, ghost posts, reply approvals, location tag, IG Stories cross-share) |
| Publish an image post (alt_text, topic tags, spoiler flag, reply approvals, location tag, IG Stories cross-share) |
| Publish a video post (alt_text, topic tags, spoiler flag, reply approvals, location tag, IG Stories cross-share) |
| Publish a carousel (2-20 items, alt_text per item, reply approvals, location tag, IG Stories cross-share) |
| Delete a post (max 100/day) |
| Check container processing status |
| Check remaining publishing quota (250 posts/day) |
Threads — Media & Search (4)
Tool | Description |
| List published posts (includes topic_tag, poll, GIF, location, verification fields) |
| Get post details |
| List a public profile's posts by username (Profile Discovery) |
| Search public posts via |
Threads — Replies (7)
Tool | Description |
| Get top-level replies to a post |
| Get all replies (flattened, including nested) to a post |
| Reply to a post (supports image/video attachments) |
| Hide a reply |
| Unhide a reply |
| Get replies awaiting approval on a post with reply approvals enabled |
| Approve or ignore a pending reply |
Threads — Profile & Discovery (3)
Tool | Description |
| Get Threads profile info (includes is_verified) |
| List user's threads |
| Look up a public profile by username (Profile Discovery) |
Threads — Mentions (1)
Tool | Description |
| Get posts where the user was @mentioned |
Threads — Locations (2)
Tool | Description |
| Search for locations to tag, by query or coordinates |
| Get a location object by ID |
Threads — Tools & Resources (1)
Tool | Description |
| Get embed HTML/metadata for a public post |
Threads — Insights (2)
Tool | Description |
| Get post analytics (views, likes, replies, reposts, quotes, clicks) |
| Get account-level analytics (also available to Threads profiles without a linked Instagram account) |
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
All platforms (Instagram, Threads) require 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,instagram_manage_messages,pages_show_list,pages_read_engagement,pages_manage_metadataClick "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/v26.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 — call this with your token:
GET https://graph.facebook.com/v26.0/me/accounts?fields=id,name,access_token&access_token=YOUR_TOKENThis returns your Facebook Pages. For each page, get the linked Instagram account:
GET https://graph.facebook.com/v26.0/{page-id}?fields=instagram_business_account&access_token=YOUR_TOKENThe
instagram_business_account.idis yourINSTAGRAM_USER_ID(a numeric ID like17841400123456789). For the DM tools, the matching Page'sidisINSTAGRAM_PAGE_IDand itsaccess_tokenisINSTAGRAM_MESSAGING_ACCESS_TOKEN. Do not use the IG User ID or the user token in their place.
Step 3: Threads Setup
Works with any Threads account (personal or business). Instagram account link is no longer required since September 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,threads_keyword_search,threads_manage_mentions,threads_delete,threads_location_tagging,threads_profile_discovery &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 — call this with your token:
GET https://graph.threads.net/v1.0/me?fields=id,username&access_token=YOUR_TOKENThe
idfield is yourTHREADS_USER_ID(a numeric ID like1234567890).
Step 4: Configure Environment Variables
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
INSTAGRAM_MESSAGING_ACCESS_TOKEN=EAA... # Page token from Step 2.5 (DM tools only)
INSTAGRAM_PAGE_ID=123456789012345 # Linked Facebook Page ID (DM tools only)
# 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 → BasicToken Renewal
Access tokens expire after ~60 days. Refresh before expiration:
Instagram: Use
meta_refresh_tokenwithplatform=instagram(requiresMETA_APP_IDandMETA_APP_SECRET)Threads: Use
meta_refresh_tokenwithplatform=threadsor 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.
Deprecated Metrics (v22.0+)
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 |
|
|
|
|
|
|
|
|
|
|
| Removed (no replacement) |
| Removed (no replacement) |
| Removed (no replacement) |
| Removed (no replacement) |
| Removed (no replacement) |
| Removed (no replacement) |
License
MIT
Available Tools
66 toolsig_business_discoveryA
Look up another Instagram Business/Creator account's public info by username.
Inputs: username (required), fields.
ig_delete_commentA
Delete a comment from your media post. This action is irreversible.
Inputs: comment_id (required).
ig_delete_mediaA
Delete an Instagram media post (posts, carousels, reels, stories). This action is irreversible. Requires instagram_manage_contents permission.
Inputs: media_id (required).
ig_get_account_insightsB
Get Instagram account insights. Note: 'impressions', 'email_contacts', 'phone_call_clicks', 'text_message_clicks', 'get_directions_clicks', 'website_clicks', 'profile_views' were deprecated in v22.0. Use 'views', 'reach', 'follower_count', 'reposts' instead.
Inputs: metric (required), period (required), since, until, +3 more.
ig_get_collaboration_invitesB
Get pending collaboration invites for the Instagram account. Added in December 2025.
Inputs: after, limit.
ig_get_commentB
Get details of a specific comment.
Inputs: comment_id (required).
ig_get_commentsC
Get comments on a specific Instagram media post.
Inputs: media_id (required), after, limit.
ig_get_container_statusA
Check the processing status of a media container (useful for videos).
Inputs: container_id (required).
ig_get_conversationsB
Get Instagram DM conversations using Instagram Messaging with Facebook Login. Requires a Page access token, the linked Facebook Page ID, instagram_manage_messages, and pages_manage_metadata.
Inputs: after, limit, folder.
ig_get_hashtagC
Get hashtag information by ID.
Inputs: hashtag_id (required).
ig_get_hashtag_recentC
Get recent media tagged with a specific hashtag.
Inputs: hashtag_id (required), after, limit.
ig_get_hashtag_topB
Get top (most popular) media tagged with a specific hashtag.
Inputs: hashtag_id (required), after, limit.
ig_get_mediaB
Get details of a specific Instagram media post.
Inputs: media_id (required), fields.
ig_get_media_insightsA
Get insights/analytics for a specific media post. Note: 'impressions' and 'video_views' were deprecated in v22.0 — use 'views' instead. Available metrics: views, reach, saved, shares, likes, comments, reposts, reels_skip_rate.
Inputs: media_id (required), metric.
ig_get_media_listB
Get list of media published on the Instagram account.
Inputs: after, limit, before.
ig_get_mentioned_commentsA
Get comments where the account was @mentioned. Returns the media and comment details.
Inputs: comment_id (required), fields.
ig_get_messageC
Get details of a specific DM message.
Inputs: message_id (required).
ig_get_messagesB
Get messages in a specific DM conversation.
Inputs: conversation_id (required), after, limit.
ig_get_profileB
Get Instagram Business/Creator account profile information.
Inputs: no named parameters.
ig_get_repliesB
Get replies to a specific comment.
Inputs: comment_id (required), after, limit.
ig_get_tagged_mediaA
Get media where the account is tagged (photo tags, not @mentions).
Inputs: after, limit.
ig_hide_commentB
Hide or unhide a comment on your post.
Inputs: hide (required), comment_id (required).
ig_post_commentB
Post a top-level comment on a media post.
Inputs: message (required), media_id (required).
ig_publish_carouselC
Publish a carousel (album) post with 2-10 images/videos. Each item needs an image_url or video_url.
Inputs: items (required), caption, location_id, is_ai_generated, +2 more.
ig_publish_photoB
Publish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL).
Inputs: image_url (required), caption, alt_text, user_tags, +4 more.
ig_publish_reelB
Publish a Reel (short video). Waits for video processing.
Inputs: video_url (required), caption, alt_text, cover_url, +6 more.
ig_publish_storyA
Publish a Story (image or video). Stories disappear after 24 hours.
Inputs: media_url (required), media_type (required).
ig_publish_videoB
Publish a standalone video as a Reel and share it to the feed. Waits for video processing before publishing.
Inputs: video_url (required), caption, location_id, thumb_offset, +4 more.
ig_reply_to_commentC
Reply to a specific comment.
Inputs: message (required), comment_id (required).
ig_respond_collaboration_inviteC
Accept or decline a collaboration invite. Added in December 2025.
Inputs: accept, action, media_id, invite_id.
ig_search_hashtagA
Search for a hashtag ID by name. Required before querying hashtag media. Limited to 30 unique hashtags per 7-day rolling window.
Inputs: q (required).
ig_send_messageA
Send an Instagram DM using Instagram Messaging with Facebook Login. Requires a Page access token, instagram_manage_messages, and pages_manage_metadata. The recipient must have messaged the professional account first.
Inputs: message (required), recipient_id (required).
ig_toggle_commentsA
Enable or disable comments on an Instagram media post.
Inputs: enabled (required), media_id (required).
meta_debug_tokenA
Debug/inspect an access token to check validity, expiration, scopes and associated user.
Inputs: input_token (required).
meta_exchange_tokenB
Exchange a short-lived token for a long-lived token (valid ~60 days). Requires META_APP_ID and META_APP_SECRET.
Inputs: short_lived_token (required).
meta_get_app_infoB
Get Meta App basic information (name, category, namespace, etc.).
Inputs: no named parameters.
meta_get_webhook_subscriptionsA
List current webhook subscriptions for the Meta App.
Inputs: no named parameters.
meta_refresh_tokenB
Extend an Instagram/Facebook user token through the token-exchange flow, or refresh a Threads long-lived token through the Threads refresh endpoint.
Inputs: long_lived_token (required), platform.
meta_subscribe_webhookA
Subscribe to webhook notifications for an object (e.g., 'instagram', 'page'). Requires META_APP_ID and META_APP_SECRET.
Inputs: fields (required), object (required), callback_url (required), verify_token (required).
threads_delete_postA
Delete a Threads post. This action is irreversible. Rate limited to 100 deletions per 24 hours.
Inputs: post_id (required).
threads_get_container_statusB
Check the processing status of a Threads media container.
Inputs: container_id (required).
threads_get_conversationB
Get a flattened list of all replies (top-level and nested) to a Threads post, in chronological or reverse-chronological order.
Inputs: post_id (required), after, limit, reverse.
threads_get_locationA
Get a Threads location object by ID (from threads_search_locations or a post's location_id field).
Inputs: location_id (required).
threads_get_mentionsA
Get public Threads posts where the authenticated user has been @mentioned by another profile. Requires threads_manage_mentions permission (without advanced access, only mentions by app testers are returned).
Inputs: fields.
threads_get_oembedA
Get the embed HTML and metadata for a public Threads post, for rendering a rich preview on an external site. No access token required.
Inputs: url (required), maxwidth.
threads_get_pending_repliesA
Get pending/ignored replies awaiting approval on a post that has reply approvals enabled (enable_reply_approvals).
Inputs: post_id (required), reverse, approval_status.
threads_get_postB
Get details of a specific Threads post.
Inputs: post_id (required), fields.
threads_get_post_insightsB
Get insights/analytics for a specific Threads post (views, likes, replies, reposts, quotes, clicks).
Inputs: post_id (required), metric.
threads_get_postsC
Get a list of published Threads posts.
Inputs: after, limit, since, until, +1 more.
threads_get_profileB
Get Threads user profile information including verification status.
Inputs: no named parameters.
threads_get_profile_postsA
Get a public profile's posts by username (Profile Discovery). Requires threads_profile_discovery permission; with standard access, only @meta, @threads, @instagram, and @facebook are queryable.
Inputs: username (required), after, limit, since, +1 more.
threads_get_publishing_limitA
Check how many posts you can still publish within the current 24-hour window (max 250 posts/day).
Inputs: no named parameters.
threads_get_repliesB
Get replies (conversation) for a specific Threads post.
Inputs: post_id (required), after, limit, reverse.
threads_get_user_insightsB
Get account-level Threads insights (views, likes, replies, reposts, quotes, clicks, followers, follower demographics).
Inputs: metric (required), since, until, breakdown.
threads_get_user_threadsA
Get all threads published by the user (alias for threads_get_posts with user context).
Inputs: after, limit, since, until.
threads_hide_replyA
Hide a reply on your Threads post. Hidden replies are still visible if directly accessed.
Inputs: reply_id (required).
threads_lookup_profileA
Look up a public Threads user's profile by username (Profile Discovery). Requires threads_profile_discovery permission and target must have >=100 followers; with standard access, only @meta, @threads, @instagram, and @facebook are queryable.
Inputs: username (required).
threads_manage_pending_replyA
Approve or ignore a pending reply on a post with reply approvals enabled. Ignored replies can still be approved later.
Inputs: approve (required), reply_id (required).
threads_publish_carouselC
Publish a carousel post on Threads with 2-20 images/videos.
Inputs: items (required), text, topic_tag, location_id, +5 more.
threads_publish_imageB
Publish an image post on Threads. Supports topic tag, quote post, alt text, and spoiler flag.
Inputs: image_url (required), text, alt_text, topic_tag, +7 more.
threads_publish_textB
Publish a text-only post on Threads. Supports optional link attachment, poll, GIF, topic tag, and quote post.
Inputs: text (required), gif_id, alt_text, topic_tag, +11 more.
threads_publish_videoA
Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, and spoiler flag.
Inputs: video_url (required), text, alt_text, topic_tag, +7 more.
threads_replyB
Reply to a Threads post or another reply.
Inputs: text (required), reply_to_id (required), image_url, video_url.
threads_search_locationsB
Search for locations to tag in a Threads post, by query text or by coordinates. Provide q, or latitude+longitude, or both.
Inputs: q, latitude, longitude.
threads_search_postsA
Search for public Threads posts by keyword or topic tag via the /keyword_search endpoint. Results can be filtered by media type and author.
Inputs: q (required), limit, since, until, +4 more.
threads_unhide_replyB
Unhide a previously hidden reply on your Threads post.
Inputs: reply_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 66 tools
The set has clear namespaces and many distinct actions, but several tools overlap enough to cause hesitation: e.g. threads_get_replies vs threads_get_conversation vs threads_get_pending_replies, ig_get_messages vs ig_get_conversations, and ig_get_media_list vs ig_get_media. Descriptions help differentiate most cases, but an agent can still misselect among these closely related retrieval tools.
Tools consistently use snake_case with platform prefixes (ig_, threads_, meta_) followed by an action/noun phrase. Minor deviations exist, such as ig_business_discovery lacking a clear action verb and threads_get_user_threads being described as an alias, but the overall pattern is predictable.
66 tools is very heavy for a single MCP server, even accounting for Instagram, Threads, and Meta app/token/webhook coverage. The surface feels bloated, and several near-duplicate tools could likely be consolidated or parameterized.
Coverage across Instagram and Threads is strong: publishing, comments, replies, DMs/conversations, insights, profiles, locations, search, webhooks, and token management are present. Minor gaps exist around Facebook Page management, scheduled publishing, and bulk moderation, but core lifecycle operations are well represented.
Maintenance
Related MCP Connectors
Instagram MCP for DM and comment automation, AI Agent and content publishing via Meta's official API
Meta Ads MCP server: run Facebook and Instagram campaigns, ad sets, ads and reports from AI.
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
Hosted MCP for Instagram, Facebook, X, LinkedIn, Pinterest, and Ghost. OAuth 2.1, 38 tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server providing seamless integration with Instagram's Graph API for business account management, content publishing, and analytics.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Instagram Graph API providing 25 tools for publishing photos, reels, carousels, and stories, managing comments, viewing insights, and searching hashtags.10 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for organic Instagram analytics via the Meta Graph API, providing read-only tools for profiles, media, insights, audience, and optional publishing.GPL 3.0
- FlicenseNot gradedqualityDmaintenanceMCP server for automatic Instagram publishing — single image, carousel and Reels — via the official Instagram Graph API.7 npm-