meta-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| META_APP_ID | No | Meta App ID (required for token/webhook tools) | |
| META_APP_SECRET | No | Meta App Secret (required for token/webhook tools) | |
| THREADS_USER_ID | No | Threads user ID (required for Threads functionality) | |
| INSTAGRAM_USER_ID | No | Instagram Business/Creator account ID (required for Instagram functionality) | |
| THREADS_ACCESS_TOKEN | No | Threads API access token (required for Threads functionality) | |
| INSTAGRAM_ACCESS_TOKEN | No | Instagram Graph API access token (required for Instagram functionality) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| meta_exchange_tokenA | Exchange a short-lived token for a long-lived token (valid ~60 days). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Requires META_APP_SECRET. |
| meta_refresh_tokenA | Refresh a long-lived token before it expires (must be at least 24h old). Uses platform-specific endpoints: Instagram (graph.instagram.com) or Threads (graph.threads.net). Returns a new long-lived token valid for 60 days. |
| meta_debug_tokenA | Debug/inspect an access token to check validity, expiration, scopes and associated user. |
| meta_get_app_infoB | Get Meta App basic information (name, category, namespace, etc.). |
| meta_subscribe_webhookA | Subscribe to webhook notifications for an object (e.g., 'instagram', 'page'). Requires META_APP_ID and META_APP_SECRET. |
| meta_get_webhook_subscriptionsA | List current webhook subscriptions for the Meta App. |
| ig_publish_photoA | Publish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL). |
| ig_publish_videoA | Publish a video to Instagram feed. Waits for video processing before publishing. |
| ig_publish_carouselB | Publish a carousel (album) post with 2-10 images/videos. Each item needs an image_url or video_url. |
| ig_publish_reelB | Publish a Reel (short video). Waits for video processing. |
| ig_publish_storyA | Publish a Story (image or video). Stories disappear after 24 hours. |
| ig_get_container_statusB | Check the processing status of a media container (useful for videos). |
| ig_get_media_listC | Get list of media published on the Instagram account. |
| ig_get_mediaB | Get details of a specific Instagram media post. |
| ig_delete_mediaA | Delete an Instagram media post (posts, carousels, reels, stories). This action is irreversible. Requires instagram_manage_contents permission (Facebook Login only — not available with Instagram Login). |
| 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. |
| ig_toggle_commentsB | Enable or disable comments on an Instagram media post. |
| ig_get_commentsB | Get comments on a specific Instagram media post. |
| ig_get_commentB | Get details of a specific comment. |
| ig_post_commentC | Post a top-level comment on a media post. |
| ig_get_repliesB | Get replies to a specific comment. |
| ig_reply_to_commentC | Reply to a specific comment. |
| ig_hide_commentB | Hide or unhide a comment on your post. |
| ig_delete_commentB | Delete a comment from your media post. This action is irreversible. |
| ig_get_profileB | Get Instagram Business/Creator account profile information. |
| ig_get_account_insightsC | 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. |
| ig_business_discoveryA | Look up another Instagram Business/Creator account's public info by username. |
| ig_get_collaboration_invitesB | Get pending collaboration invites for the Instagram account. Added in December 2025. |
| ig_respond_collaboration_inviteB | Accept or decline a collaboration invite. Added in December 2025. |
| 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. |
| ig_get_hashtagA | Get hashtag information by ID. |
| ig_get_hashtag_recentB | Get recent media tagged with a specific hashtag. |
| ig_get_hashtag_topB | Get top (most popular) media tagged with a specific hashtag. |
| ig_get_mentioned_commentsA | Get comments where the account was @mentioned. Returns the media and comment details. |
| ig_get_tagged_mediaA | Get media where the account is tagged (photo tags, not @mentions). |
| ig_get_conversationsA | Get Instagram DM conversations list. Requires 'instagram_business_manage_messages' permission and the Instagram Messaging API. |
| ig_get_messagesC | Get messages in a specific DM conversation. |
| ig_send_messageA | Send a DM to a user. Requires 'instagram_business_manage_messages' permission. Can only message users who have messaged you first (24hr window). |
| ig_get_messageB | Get details of a specific DM message. |
| threads_publish_textA | Publish a text-only post on Threads. By default publishes in a single API call via auto_publish_text=true (faster and avoids the 4279009 'container not propagated' race condition). Supports optional link attachment, poll, GIF, topic tag, quote post, cross-share to Instagram Stories, and text_attachment for long-form content (up to 10,000 chars with optional styling and link). text_attachment cannot be combined with poll_options or link_attachment. Set auto_publish=false to fall back to the legacy two-step create-then-publish flow. |
| threads_publish_imageB | Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, and cross-share to Instagram Stories. |
| threads_publish_videoA | Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, spoiler flag, and cross-share to Instagram Stories. Note: cross-share to IG Stories may silently fail for video posts (the Threads post still publishes). |
| threads_publish_carouselA | Publish a carousel post on Threads with 2-20 images/videos. Supports cross-share to Instagram Stories. |
| threads_delete_postA | Delete a Threads post. This action is irreversible. Rate limited to 100 deletions per 24 hours. |
| threads_get_container_statusA | Check the processing status of a Threads media container. Only works with unpublished container IDs (returned from container creation endpoints) — not with published post IDs. |
| threads_get_publishing_limitA | Check how many posts you can still publish within the current 24-hour window (max 250 posts/day). |
| threads_repostA | Repost an existing Threads post to your own profile. Reposts appear under the Reposts tab on your profile. Requires the threads_content_publish permission. Note: this is a simple repost — for quote-reposts use threads_publish_text with quote_post_id. |
| threads_get_postsC | Get a list of published Threads posts. |
| threads_get_postB | Get details of a specific Threads post. |
| threads_search_postsB | Search for public Threads posts by keyword or topic tag. Requires threads_keyword_search permission. |
| threads_get_repliesA | Get replies for a specific Threads post. By default returns only top-level replies (mode='top_level', endpoint /{post}/replies). Set mode='full_tree' to get the entire conversation flattened — every reply at every nesting level (endpoint /{post}/conversation). Both modes share the same response shape; full_tree additionally populates root_post, replied_to, is_reply so the caller can reconstruct the tree. |
| threads_replyA | Reply to a Threads post or another reply. Text-only replies publish in a single API call by default (auto_publish_text=true); media replies always use the two-step create-then-publish flow. |
| threads_hide_replyA | Hide a reply on your Threads post. Hidden replies are still visible if directly accessed. |
| threads_unhide_replyA | Unhide a previously hidden reply on your Threads post. |
| threads_get_profileB | Get Threads user profile information including verification status. |
| threads_get_user_threadsA | Get all threads published by the user (alias for threads_get_posts with user context). |
| threads_get_post_insightsA | Get insights/analytics for a specific Threads post (views, likes, replies, reposts, quotes). |
| threads_get_user_insightsB | Get account-level Threads insights (views, likes, replies, reposts, quotes, clicks, followers, follower demographics). Requires period parameter. |
| threads_get_mentionsA | List Threads posts where the authenticated user has been @mentioned. Requires the threads_manage_mentions permission. Posts from private profiles are excluded by the API. Without advanced access approval, only mentions from designated app testers are returned. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| content_publish | Cross-post content to Instagram and Threads simultaneously |
| analytics_report | Generate a combined analytics report for Instagram and Threads |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| instagram-profile | Instagram Business/Creator account profile information |
| threads-profile | Threads user profile information |
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