instagram-claude-mcp
Provides read-only access to Instagram professional account data through the official Instagram Graph API, including profile information, media listings, media details, insights, and comments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@instagram-claude-mcpshow me insights for my latest Instagram post"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
instagram-claude-mcp
Remote MCP server that connects Claude to the official Meta Instagram Graph API (read-only).
Exposes Instagram profile, media, insights, and comments as MCP tools over Streamable HTTP, so Claude can call them via an HTTPS MCP URL.
Features
Tool | Description |
| Connected Instagram professional account profile |
| Recent posts / reels / carousels |
| Details for a specific media item |
| Account-level or media-level insights |
| Comments (and replies when available) on a media item |
Not implemented (by design): publishing, deleting, messaging, comment replies, or any write operations.
Related MCP server: instagram-mcp
Requirements
Node.js 20+
An Instagram professional account (Business or Creator)
A Meta app with Instagram Graph API access
A long-lived access token with read permissions for the account
The Instagram account ID (
IG User ID)
Environment variables
Copy .env.example to .env and fill in values locally. Never commit .env.
Variable | Required | Description |
| Yes | Instagram User access token (prefer long-lived) |
| Conditional | Optional for Instagram Login ( |
| No* | Default |
| No | Default |
| No | App secret — only for short→long-lived token exchange |
| No | HTTP port (default |
| No | If set, |
Local development
npm install
cp .env.example .env
# Edit .env with INSTAGRAM_ACCESS_TOKEN and INSTAGRAM_ACCOUNT_ID
npm run dev
# or
npm run build && npm startEndpoints:
Health:
GET http://localhost:3000/healthAuth debug (safe):
GET http://localhost:3000/debug-instagram-authProfile tool debug:
GET http://localhost:3000/debug-instagram-profileMedia list debug:
GET http://localhost:3000/debug-instagram-mediaMCP (Streamable HTTP):
http://localhost:3000/mcp
Instagram Login id vs user_id
On graph.instagram.com, GET /me returns:
id— app-scoped ID (not used for/media)user_id— Instagram professional account ID (<IG_ID>) used for/{user_id}/media, insights, etc.
This server resolves user_id from /me for Instagram Login and does not blindly trust INSTAGRAM_ACCOUNT_ID (which is often mistakenly set to id).
Instagram Login tokens (short vs long-lived)
App Dashboard → Generate token: already long-lived (~60 days). Put it in
INSTAGRAM_ACCESS_TOKEN.OAuth / Business Login (authorization code → token): returns a short-lived token (~1 hour). Exchange it before production use:
Set
INSTAGRAM_ACCESS_TOKENto the short-lived token (temporarily).Set
INSTAGRAM_APP_SECRETto your Instagram app secret.POST /exchange-instagram-token(sendAuthorization: Bearer <MCP_AUTH_TOKEN>if configured).Copy
long_lived_access_tokenfrom the JSON intoINSTAGRAM_ACCESS_TOKENon Vercel.Redeploy / restart. Remove the short-lived value.
Auth is sent as Meta’s documented access_token query parameter. Tokens are trimmed (whitespace, quotes, accidental Bearer / access_token= prefixes) before use. The full token is never logged or returned by /debug-instagram-auth.
Type-check without running:
npm run typecheckTest with MCP Inspector
npx @modelcontextprotocol/inspectorConnect with transport Streamable HTTP and URL http://localhost:3000/mcp.
Deploy as a remote MCP server
Vercel (serverless Express)
This project is set up for Vercel’s Express runtime: the app is exported as a default Express handler and only calls app.listen() when not running on Vercel (VERCEL=1). That matches serverless invocation — there is no permanently running Node process in production.
Import the GitHub repo in Vercel (or run
vercel).Set Project Environment Variables (Production/Preview):
INSTAGRAM_ACCESS_TOKENINSTAGRAM_ACCOUNT_IDOptional:
MCP_AUTH_TOKEN,INSTAGRAM_GRAPH_API_BASE,INSTAGRAM_API_VERSION
Deploy. Endpoints stay the same:
https://your-app.vercel.app/healthhttps://your-app.vercel.app/mcp(Streamable HTTP)
vercel.json pins the Express framework, runs npm run build, and sets function maxDuration to 60s for Graph API calls. MCP handling is stateless (fresh transport per request), which is compatible with Vercel Functions / Fluid compute.
Claude connector URL example:
https://your-app.vercel.app/mcpOther Node hosts (Railway, Render, Fly.io, Cloud Run, etc.)
Push this repo and deploy as a normal Node service.
Set the same secret environment variables in the host dashboard.
The process runs
npm start→node dist/index.js, which listens onPORT.
npm install
npm run build
npm startConnect from Claude
Claude (web / desktop connectors)
Add a custom connector with your HTTPS MCP URL, for example:
https://your-service.example.com/mcpIf you set MCP_AUTH_TOKEN, configure the matching bearer token in the connector settings when supported.
Claude Code
claude mcp add --transport http instagram-claude-mcp https://your-service.example.com/mcpCursor
Add to .cursor/mcp.json (or your MCP config):
{
"mcpServers": {
"instagram-claude-mcp": {
"url": "https://your-service.example.com/mcp"
}
}
}Instagram API notes
Uses only the official Meta Graph API (
graph.facebook.comorgraph.instagram.com).Credentials are read from environment variables only — never hardcoded.
Insights metrics and periods depend on Meta’s current Insights API rules (metric availability differs for account vs media, and by media product type). Pass the metrics Meta documents for your use case via the
metricstool argument.Tokens expire; rotate long-lived tokens as needed in your host’s secret store.
Project layout
src/
app.ts # Express app factory (/health, /mcp) — default-exported for Vercel
index.ts # Entry: export app; listen only when not on Vercel
config.ts # Environment configuration
mcp-server.ts # MCP tool registration
instagram/client.ts # Official Graph API client (read-only)
vercel.json # Vercel Express + function limitsLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-quality-maintenanceEnables sending and receiving Instagram Direct Messages, managing conversations, downloading media, viewing user profiles and stories, and interacting with posts through natural language in Claude.
- FlicenseBqualityCmaintenanceProvides Instagram analytics, media downloads, and search capabilities through an MCP interface for use with Claude and other MCP clients.4340
- AlicenseAqualityBmaintenanceConnects Claude Desktop and other MCP clients to the Instagram Graph API for reading analytics, managing comments, and publishing photos, carousels, and reels.1119MIT
- Alicense-qualityBmaintenanceEnables Claude to fetch and analyze Meta ad accounts, campaigns, ad sets, ads, and performance insights via the Meta Marketing API.1,364MIT
Related MCP Connectors
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Social media analytics, video analysis, and competitor intel for any MCP-compatible AI agent.
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/demaAlramhe/instagram-claude-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server