Get Profile InfoLABSCO SUMMARY
The DM half needs Meta's permission, and the README says so before you build on it.
Reading posts, pulling insights and publishing all work on Standard Access, which you get immediately. Direct messaging needs instagram_manage_messages, and that means going through Meta App Review — so decide which half you need before setting anything up. The credential path is the usual Facebook maze, but the README walks it step by step, including how to get the Business Account ID out of the page response.
What it is
An MCP server over Instagram's Graph API for Business accounts, built with FastMCP. It ships all three MCP surfaces: tools the model calls, resources the application reads, and prompts you invoke for analysis work.
What you get
- Business profile details, including follower counts and bio —
get_profile_info - Recent posts and the engagement metrics for a specific one
- Image and video upload and publishing to the account
- The Facebook pages connected to the account
- Instagram DM handling — list conversations, read messages in one, and reply — all three gated behind Meta's Advanced Access
- Resources for profile data, the media feed with engagement metrics, and insights
- Three prompts: engagement analysis of post performance, content strategy recommendations, and hashtag performance evaluation
Requirements
- An Instagram Business account connected to a Facebook Page you own, a Facebook developer account with an app, and a long-lived access token.
- Python 3.10 or higher: clone the repository, run
pip install -r requirements.txt, then copyenv.exampleto.envand fill in four values —INSTAGRAM_ACCESS_TOKEN,FACEBOOK_APP_ID,FACEBOOK_APP_SECRETandINSTAGRAM_BUSINESS_ACCOUNT_ID. - Standard Access covers
instagram_basic,instagram_content_publish,instagram_manage_insights,pages_show_listand the rest and is available immediately;instagram_manage_messages, which every DM feature needs, requires Meta App Review. - Long-lived tokens expire after 60 days, so plan the refresh. Instagram's own limits apply: 200 calls per hour for profile, media and insights requests, and 25 posts per day for publishing.
- With Claude, an open bug stops it working: the
publish_mediatool's definition uses a schema form Claude's API refuses, so Claude returns an error instead of answering. The bug report on the project gives a one-line fix tosrc/instagram_mcp_server.py; apply it to your clone until the author ships it. - Licensed MIT.
Setup effort
Build from source — git clone https://github.com/jlbadano/ig-mcp
USE CASES
Reviewing how recent posts performed
Pull the last several posts with their engagement metrics and run the engagement analysis prompt over the result.
Publishing without opening the app
Upload the image with its caption through the publishing tool, inside the 25-posts-per-day limit.
Working out which hashtags are earning their place
Use the hashtag analysis prompt against the media feed's engagement data rather than eyeballing it.
Handling the inbox from an assistant
List conversations, read the messages and reply — available only once Meta grants Advanced Access for messaging.
Checking your credentials are actually valid
Run the setup validation script, or call the profile tool as a first request to confirm the token and account ID line up.
8 tools
Listed in project docs. Your client may show a different list.
Get Media PostsGet Media InsightsPublish MediaGet Account PagesGet ConversationsGet Conversation MessagesSend DMBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
- Python 3.10+
- FACEBOOK_APP_ID in the .env file in your clone
- FACEBOOK_APP_SECRET in the .env file in your clone
- INSTAGRAM_ACCESS_TOKEN in the .env file in your clone
- INSTAGRAM_BUSINESS_ACCOUNT_ID in the .env file in your clone
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/jlbadano/ig-mcp
cd ig-mcp
pip install -r requirements.txt
cp env.example .env
# Edit .env with your Instagram API credentials
python -m src.instagram_mcp_serverThere is no ready-made client entry. To connect a client, have it run python -m src.instagram_mcp_server from the clone's folder — the server reads its .env from the folder it starts in.