Instagram vs Meta MCP

A side-by-side look at the Instagram and Meta MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Instagram logoInstagramSocial Media · Remote HTTP/SSEInstagram for AI agents: publish, read comments and DMs, insights, and engage from your account.57GoodAuth: not declaredMeta MCP logoMeta MCPSocial Media · Local subprocess (stdio)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.68GreatAuth: api key required

Verdict: choose Instagram for social media work over a hosted endpoint; choose Meta MCP for social media as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Instagram logoChoose Instagram when

  • You need dedicated capabilities in the Social Media domain.
  • You prefer a remote HTTP/SSE transport.
  • You want tools like instagram_actions_list_accounts, instagram_actions_like, instagram_actions_list_comments.
Explore Instagram

Meta MCP logoChoose Meta MCP when

  • You need dedicated capabilities in the Social Media domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: API key required.
  • You have the keys it needs: INSTAGRAM_ACCESS_TOKEN, INSTAGRAM_USER_ID, INSTAGRAM_MESSAGING_ACCESS_TOKEN, INSTAGRAM_PAGE_ID, THREADS_ACCESS_TOKEN, THREADS_USER_ID, META_APP_ID, META_APP_SECRET.
  • You want tools like meta_exchange_token, meta_refresh_token, meta_debug_token.
Explore Meta MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecInstagram logoInstagramMeta MCP logoMeta MCP
CategorySocial MediaSocial Media
Quality signal57/100 · Good68/100 · Great
Install commandConfirmedConfirmed
TransportRemote HTTP/SSELocal subprocess (stdio)
AuthNot declaredAPI key required
PricingNot declaredFree
Required env varsNone listedINSTAGRAM_ACCESS_TOKENINSTAGRAM_USER_IDINSTAGRAM_MESSAGING_ACCESS_TOKENINSTAGRAM_PAGE_IDTHREADS_ACCESS_TOKENTHREADS_USER_IDMETA_APP_IDMETA_APP_SECRET
Verified ownerCommunity listingCommunity listing
GitHub stars530
Directory activity 0 views 0 installs 0 upvotes 6 views 0 installs 0 upvotes
Tools3366

Tools & capabilities

Instagram tools 33

  • instagram_actions_list_accountsList the Instagram accounts connected to this install — id, username, label.
  • instagram_actions_likeLike one or more Instagram posts, addressed by post URL or shortcode (NOT the numeric media id the official API returns). Returns a job_id; poll instagram_actions_get_job_status.
  • instagram_actions_list_commentsList the comments on a post, addressed by URL or shortcode. Returns each comment_id in the form that instagram_actions_like_comment accepts. The official API returns a DIFFERENT id that is not accepted there. Returns a job_id; poll instagram_actions_get_job_status.
  • instagram_actions_like_commentLike one or more comments. Each comment_id MUST come from instagram_actions_list_comments. The id returned by the official instagram_get_ig_media_comments belongs to a different namespace and is rejected. Returns a job_id; poll instagram_actions_get_job_status.
  • instagram_actions_followFollow one or more Instagram users by @username. Returns a job_id.
  • instagram_actions_unfollowUnfollow one or more Instagram users by @username. Returns a job_id.
  • instagram_actions_list_storiesList a specific user's currently available stories (read-only, does not mark as seen). Returns a job_id (or the result inline when wait=true).
  • instagram_actions_view_storyWatch (mark as seen) the stories of one or more profiles. Omit `targets` to watch the home tray. Returns a job_id.
  • instagram_actions_send_messageSend the FIRST direct message to someone who has never messaged this account (the official API cannot do this). One recipient per call, low daily cap. Returns a job_id.
  • instagram_actions_get_job_statusGet the status/progress/result of a previously started action by its job_id. Bulk support: accepts job_ids for batched execution.
  • instagram_actions_list_jobsList recent action jobs for the connected account, optionally filtered by status.
  • instagram_get_user_infoGet Instagram Business Account info including profile details and statistics. Use "me" to query your own authenticated account, or provide the numeric Business Account ID of an account you manage. NOTE: followers_count and follows_count are returned for your own profile (ig_user_id="me"). For other accounts, follower/… Bulk support: accepts ig_user_ids for batched execution.
  • +21 more on the listing page

Meta MCP tools 66

  • meta_exchange_tokenExchange a short-lived token for a long-lived token (valid ~60 days). Requires META_APP_ID and META_APP_SECRET.
  • meta_refresh_tokenRefresh a long-lived token before it expires. Returns a new long-lived token.
  • meta_debug_tokenDebug/inspect an access token to check validity, expiration, scopes and associated user.
  • meta_get_app_infoGet Meta App basic information (name, category, namespace, etc.).
  • meta_subscribe_webhookSubscribe to webhook notifications for an object (e.g., 'instagram', 'page'). Requires META_APP_ID and META_APP_SECRET.
  • meta_get_webhook_subscriptionsList current webhook subscriptions for the Meta App.
  • ig_publish_photoPublish a photo to Instagram. Two-step process: creates container then publishes. Requires image_url (publicly accessible HTTPS URL).
  • ig_publish_videoPublish a video to Instagram feed. Waits for video processing before publishing.
  • ig_publish_carouselPublish a carousel (album) post with 2-10 images/videos. Each item needs an image_url or video_url.
  • ig_publish_reelPublish a Reel (short video). Waits for video processing.
  • ig_publish_storyPublish a Story (image or video). Stories disappear after 24 hours.
  • ig_get_container_statusCheck the processing status of a media container (useful for videos).
  • +54 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Instagram

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "instagram-2": {
      "url": "https://api.mcp.ai/p_instagram"
    }
  }
}

Meta MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mikusnuz-meta-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@mikusnuz/meta-mcp"
      ],
      "env": {
        "INSTAGRAM_ACCESS_TOKEN": "YOUR_INSTAGRAM_ACCESS_TOKEN_HERE",
        "INSTAGRAM_USER_ID": "YOUR_INSTAGRAM_USER_ID_HERE",
        "INSTAGRAM_MESSAGING_ACCESS_TOKEN": "YOUR_INSTAGRAM_MESSAGING_ACCESS_TOKEN_HERE",
        "INSTAGRAM_PAGE_ID": "YOUR_INSTAGRAM_PAGE_ID_HERE",
        "THREADS_ACCESS_TOKEN": "YOUR_THREADS_ACCESS_TOKEN_HERE",
        "THREADS_USER_ID": "YOUR_THREADS_USER_ID_HERE",
        "META_APP_ID": "YOUR_META_APP_ID_HERE",
        "META_APP_SECRET": "YOUR_META_APP_SECRET_HERE"
      }
    }
  }
}

Frequently asked questions

Instagram is categorized under Social Media and uses a remote HTTP/SSE transport. Meta MCP belongs to Social Media and uses a local stdio subprocess. Pick Instagram for social media work and Meta MCP for social media.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Instagram has no declared pricing — check the project's own site. Meta MCP is listed as free. Auth: api key required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add instagram-2 and mikusnuz-meta-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Instagram has a quality signal of 57/100 (Good) with 0 views, 0 installs and 5 GitHub stars. Meta MCP has 68/100 (Great) with 6 views, 0 installs and 30 GitHub stars.