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) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| 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. On success the new token is also applied in-memory to the running server, so subsequent tool calls use it immediately — no restart required (#65). |
| 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. On success the new token is also applied in-memory to the running server, so subsequent tool calls use it immediately — no restart required (#65). |
| meta_debug_tokenA | Debug/inspect an access token to check validity, expiration, scopes and associated user. |
| meta_get_app_infoA | 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 | [DEPRECATED] Use ig_publish_reel instead. Publishes via media_type=REELS under the hood; the legacy VIDEO media_type was deprecated by Meta on Nov 9, 2023. Kept for backward compatibility — new integrations should use ig_publish_reel which exposes Reels-specific options (cover_url, share_to_feed). |
| ig_publish_carouselA | Publish a carousel (album) post with 2-10 images/videos. Each item needs a |
| 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_statusA | Check the processing status of a media container (useful for videos). |
| ig_get_media_listB | Get list of media published on the Instagram account. |
| ig_get_mediaA | 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. Default metrics 'views,reach' are safe for every media type. Metric availability differs by media type — request more selectively to avoid (#100) errors:
|
| 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_commentA | Get details of a specific comment. |
| ig_post_commentB | 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_commentA | Hide or unhide a comment on your post. |
| ig_delete_commentA | Delete a comment from your media post. This action is irreversible. |
| ig_get_profileA | Get Instagram Business/Creator account profile information. |
| ig_get_account_insightsA | Get Instagram account insights. Use the optional |
| 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_inviteA | Accept or decline a collaboration invite by media_id (the IG Media ID of the tagged post; available via the |
| 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 — meta-mcp caches results in-process to maximize quota utilization on repeated lookups. |
| ig_get_hashtagB | Get hashtag information by ID. |
| ig_get_hashtag_recentB | Get recent media tagged with a specific hashtag. |
| ig_get_hashtag_topA | Get top (most popular) media tagged with a specific hashtag. |
| ig_get_mentioned_commentA | Get details of a specific comment where the account was @mentioned. Requires the comment_id from a mention webhook notification. Returns a single comment with its associated media. |
| ig_get_tagged_mediaA | Get media where the account is tagged (photo tags, not @mentions). |
| ig_get_conversationsB | Get Instagram DM conversations list. Requires 'instagram_business_manage_messages' permission and the Instagram Messaging API. |
| ig_get_messagesB | Get messages in a specific DM conversation. |
| ig_send_messageA | Send a DM to a user. Requires 'instagram_business_manage_messages' permission. The recipient must have messaged the account first. Messaging window depends on messaging_type: RESPONSE/UPDATE allow replies within 24 hours of the user's last message; MESSAGE_TAG with tag=HUMAN_AGENT extends the window to 7 days (human-sent support replies only — the HUMAN_AGENT feature requires App Review and forbids automated use, per https://developers.facebook.com/docs/features-reference/human-agent). Other tag values are Messenger-oriented; HUMAN_AGENT is the documented reliable choice on Instagram. |
| ig_get_messageA | 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, geo-gating via allowlisted_country_codes, location tagging via location_id, and text_attachment for long-form content (up to 10,000 chars with optional styling and link). Only one attachment type per post — text_attachment, poll_options, link_attachment, and gif_id+gif_provider are mutually exclusive. Set auto_publish=false to fall back to the legacy two-step create-then-publish flow. |
| threads_publish_imageA | Publish an image post on Threads. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id. |
| threads_publish_videoA | Publish a video post on Threads. Waits for video processing. Supports topic tag, quote post, alt text, spoiler flag, cross-share to Instagram Stories, geo-gating via allowlisted_country_codes, and location tagging via location_id. 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, geo-gating via allowlisted_country_codes, and location tagging via location_id (parent container only). |
| 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_search_locationsA | Search Threads-supported locations by keyword or coordinates. Returns a list of location objects (id, name, address, city, country, latitude, longitude, postal_code) whose id can be passed as location_id to the four threads_publish_* tools to tag a post. Either q or both latitude+longitude must be provided. Requires the threads_location_tagging permission; without app approval, the endpoint restricts results to the literal query 'Menlo Park' for testing. |
| threads_get_postsA | Get a list of Threads posts published by the authenticated user. |
| threads_get_postB | Get details of a specific Threads post. |
| threads_search_postsA | 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. The default fields differ by mode: top_level requests is_verified and profile_picture_url (always populated for direct replies); full_tree drops them since they are 'Only available on direct replies' per the Threads Replies/Conversations docs and would be undefined for every nested entry. Pass an explicit fields override to re-request them in full_tree if needed. |
| 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. image_url and video_url are mutually exclusive — provide at most one. |
| 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_profileA | Get Threads user profile information including verification status and geo-gating eligibility (is_eligible_for_geo_gating). |
| threads_get_post_insightsA | Get insights/analytics for a specific Threads post (views, likes, replies, reposts, quotes, shares). |
| threads_get_user_insightsA | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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