Instagram MCP

instagram-mcp

An MCP server for the Instagram Graph API: the agent publishes posts, carousels and reels, replies to comments and reads business account analytics

  • 54 ★ on the repository
  • Last commit
  • MIT
MCP server

Broad access

Why this level

  • Publishes posts and reels on behalf of your account
  • Posts and deletes comments and sends direct messages
  • The token opens the business account and the linked Facebook page
All reasons and checks
Needs a VPN

mcpware/instagram-mcp

Meta, the owner of Facebook, Instagram and WhatsApp, is designated an extremist organization in Russia and its activities are banned there.

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/instagram-mcp

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • Publishes posts and reels on behalf of your account
  • Posts and deletes comments and sends direct messages
  • The token opens the business account and the linked Facebook page

This is third-party code. Review the repository files before installing.

What it does

The server works with your Instagram business account through the official Graph API. The README lists 23 tools. Profile and account: profile, pages, account analytics and a token check. Media: post list, post analytics, publishing photos and video, a carousel of 2–10 items, reels and the remaining publishing limit. Comments: read, post, reply, delete and hide. Direct messages: conversation list, reading and sending. Search: hashtag, posts by hashtag, active stories, mentions and a look at another business account.

Who it is for. For SMM specialists and owners of Instagram business accounts who run publishing, comments and analytics and want to hand part of the routine to an agent.

Good fit when

  • You need to publish a carousel or a reel from the chat and check how many posts are left for today
  • You need to go through fresh comments and draft replies
  • You need an analytics summary of the account and posts without opening the app

Not a fit when

  • You have a personal Instagram account: the server works only with Business and Creator
  • You have no Facebook page and no app in Meta for Developers: without them there is no token
  • You are not ready to let an agent publish, delete comments and write direct messages

Example request

Publish a carousel from these three photos with a caption and show how many posts are left for today

MCP

Transport
stdio
Authentication
API key

Environment variables

INSTAGRAM_ACCESS_TOKEN required, secret
Meta long-lived access token, valid for 60 days
INSTAGRAM_ACCOUNT_ID required
Instagram business account ID
INSTAGRAM_API_VERSION
Graph API version, v19.0 by default

Limitations

An Instagram Business or Creator account, a connected Facebook page and an app in Meta for Developers with the right permissions are required. Direct messages need extended access after Meta review. The token is long-lived and lasts 60 days, then it must be refreshed. Graph API limits per the README: 200 requests an hour, 25 posts a day, 30 unique hashtags in 7 days. The TypeScript source is not in the repository's main branch: main holds the old Python version of the fork, so we checked the code of the published npm package 1.0.4. It talks only to graph.facebook.com. Meta services are restricted in Russia.

How to disable. Remove the instagram entry from the .mcp.json file and revoke the token in the app settings in Meta for Developers.

FAQ

What do I need to connect?

An Instagram Business or Creator account, a Facebook page, an app in Meta for Developers and a long-lived token. The token and account ID are passed as INSTAGRAM_ACCESS_TOKEN and INSTAGRAM_ACCOUNT_ID.

Does the server work with a personal account?

No. Per the README personal accounts are not supported; Business or Creator is required.

How many posts can I publish a day?

25: that is the Graph API limit. A separate server tool shows the remaining limit.

How long does the token last?

A Meta long-lived token is valid for 60 days, then it must be refreshed.

Discussion

No questions or reviews yet.

Official

Postmypost MCP is the official server of the Postmypost auto-posting service: an agent schedules and publishes social posts, edits publications and reads analyt

MCP serverBroad access
Official

MCP server for Facebook and Instagram ads: campaigns, creatives, budgets and analytics through a conversation with the agent

MCP serverBroad access1.3KRepository stars
Official

The official remote MCP server of Metricool: the agent publishes posts, reads social analytics and runs ad campaigns

MCP serverBroad access
Russian stack

MCP server for the VK API: profiles, walls, communities, photos, likes and stats, with confirmable post publishing

MCP serverBroad access15Repository stars
Russian stack

An MCP server publishes one text at once to Telegram, VKontakte (group and personal wall) and TenChat with a single publish_all call

MCP serverBroad access

Comparison with similar tools

Entries that share the main search query, and how they differ.

EntryOfficialAuthenticationRepository starsMain difference
Instagram MCP (this entry)noAPI key54
Meta Ads MCPyesOAuth1,298advertising in Facebook and Instagram: campaigns, budgets, analytics
Facebook MCPnoAPI key11reading public Facebook pages through the paid HasData API
WhatsApp MCP Servernonot required6,548a personal WhatsApp account: chats, contacts, sending messages

README in short

The npm package README describes a TypeScript rewrite of the jlbadano/ig-mcp server: 23 tools for profile, publishing, comments, direct messages and search through the Instagram Graph API. Installation is npx -y @mcpware/instagram-mcp with the token and account ID in environment variables. The required Meta app permissions and the Graph API limits are listed. MIT license.

README badge

Report a problem

Foxx AIInstagram MCP
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.