MCP Server

Instagram MCP Server Let any AI agent post to Instagram

Let AI agents publish Reels, photos, carousels and Stories to Instagram, reply to comments, send DMs and run comment-to-DM automations from a single prompt.

mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

Instagram tools the agent can call

Part of the Upload-Post MCP server. The agent picks the right tool from your prompt.

Tool What it does
upload_video Publish a Reel or video Story with caption, cover, collaborators and scheduling options
upload_photos Publish a photo, a carousel of up to 10 items or a photo Story
get_post_comments / reply_to_comment / public_reply_to_comment Read and answer comments, publicly or privately
send_dm / list_dm_conversations Send and review direct messages
manage_autodms Configure keyword-triggered comment-to-DM funnels
get_analytics / get_post_analytics Pull reach, impressions and engagement

Looking for another way to post? See the Instagram API page or the Claude Code Instagram skill. Step by step: post to Instagram with Claude or post to Instagram with ChatGPT.

Add the Instagram MCP server to Claude or Cursor

One hosted server at mcp.upload-post.com/mcp. Sign in with OAuth or paste an Upload-Post API key, whichever your client supports.

Claude Desktop

Open it from Settings > Developer > Edit Config, paste the entry and restart Claude Desktop. It runs the open-source npm package @upload-post/mcp on your machine and needs Node.js 18 or newer.

Using Claude in the browser? Skip the file: Customize > Connectors > + Add > Add custom connector, paste https://mcp.upload-post.com/mcp and sign in with your Upload-Post account (OAuth).

claude_desktop_config.json
{
  "mcpServers": {
    "upload-post": {
      "command": "npx",
      "args": ["-y", "@upload-post/mcp"],
      "env": { "UPLOAD_POST_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Claude Code

Prefer OAuth? Drop the --header line, then run /mcp inside Claude Code and sign in. Add --scope user to use the server in every project.

Terminal
claude mcp add --transport http upload-post https://mcp.upload-post.com/mcp \
  --header "Authorization: ApiKey YOUR_API_KEY"

Cursor

Put it in .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them, then reload Cursor.

.cursor/mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

Your API key is under API Keys in app.upload-post.com. Before the first post, connect Instagram to a profile in the dashboard: the agent passes that profile name as user. On ChatGPT, search for Upload-Post under Apps and click Connect; no config file needed.

Example: a Reel with a collaborator, cover and first comment

An example flow with placeholder names, IDs and URLs, not a customer transcript. The tool names and parameters are the real ones the server exposes.

You

Publish https://example.com/reels/latte-art.mp4 as a Reel on profile "cafe". Caption: "Latte art, slowed down". Add @northbakery as collaborator, use https://example.com/covers/latte.jpg as the cover, also show it in the feed and add a first comment with our hashtags.

  1. Tool call 1

    upload_video

    One call sets the Reel placement, cover, collaborator and first comment.

    arguments
    {
      "videoPathOrUrl": "https://example.com/reels/latte-art.mp4",
      "user": "cafe",
      "platforms": [
        "instagram"
      ],
      "title": "Latte art, slowed down",
      "firstComment": "#latteart #coffee #baristalife",
      "asyncUpload": true,
      "platformOptions": {
        "instagramMediaType": "REELS",
        "instagramShareToFeed": true,
        "instagramCoverUrl": "https://example.com/covers/latte.jpg",
        "instagramCollaborators": "northbakery"
      }
    }
    result (trimmed)
    {
      "success": true,
      "message": "Upload initiated successfully in background.",
      "request_id": "4b8e2c1d-7a3f-4e59-b6d2-0c9a1f5e7d33",
      "total_platforms": 1
    }
  2. Tool call 2

    get_status

    Polls until Instagram finishes processing the Reel.

    arguments
    {
      "requestId": "4b8e2c1d-7a3f-4e59-b6d2-0c9a1f5e7d33"
    }
    result (trimmed)
    {
      "request_id": "4b8e2c1d-7a3f-4e59-b6d2-0c9a1f5e7d33",
      "status": "completed",
      "completed": 1,
      "total": 1,
      "results": [
        {
          "platform": "instagram",
          "success": true
        }
      ]
    }

Assistant

The Reel is live on "cafe" with @northbakery invited as collaborator, your cover, and the hashtags in the first comment. It also shows in your feed.

  • Add scheduledDate and timezone to schedule the Reel instead of publishing it now.
  • The video and cover have to be at public URLs. A hosted MCP server cannot read files on your computer.

Carousels and Stories

upload_photos: A feed carousel. Instagram allows up to 10 items.

{
  "photosPathsOrUrls": [
    "https://example.com/menu/1.jpg",
    "https://example.com/menu/2.jpg",
    "https://example.com/menu/3.jpg"
  ],
  "user": "cafe",
  "platforms": [
    "instagram"
  ],
  "title": "The autumn menu, one slide per drink.",
  "platformOptions": {
    "instagramMediaType": "IMAGE"
  }
}

upload_photos: The same tool posts a Story when the placement is STORIES.

{
  "photosPathsOrUrls": [
    "https://example.com/stories/today.jpg"
  ],
  "user": "cafe",
  "platforms": [
    "instagram"
  ],
  "platformOptions": {
    "instagramMediaType": "STORIES"
  }
}

Official Instagram API, no Meta app of your own

How the Instagram MCP server reaches your account.

Publishing goes through Meta’s Instagram API using Upload-Post’s approved Meta app, connected with Instagram Login. You don’t register a Meta developer app, go through App Review or write token refresh code. Nothing logs in with your password or automates the Instagram app.

The account has to be a Business or Creator account. It does not need a linked Facebook Page. Personal accounts can’t publish through Instagram’s API at all, so switch the account type first if yours is personal.

Comments, private replies, DMs and comment-to-DM automations go through the same API, so the agent can answer people on the posts it publishes.

Sources: Instagram content publishing (Meta), Upload-Post Instagram guide, upload-post-mcp on GitHub.

Instagram limits the agent works within

What Instagram and Upload-Post accept per post, checked September 2026.

What Limit Source
Account type Business or Creator. No Facebook Page needed with Instagram Login. Upload-Post Instagram guide
Caption 2,200 characters; alt text up to 1,000 per image Upload-Post character limits
Carousel Up to 10 images, videos or a mix of the two Instagram content publishing (Meta)
Reels video MP4 or MOV, 3 seconds to 15 minutes, up to 300 MB, 23 to 60 fps. Stories video up to 100 MB. Upload-Post video requirements
Photos Up to 8 MB, 320 to 1440 px wide, aspect ratio 4:5 to 1.91:1 Upload-Post photo requirements

Works with every MCP client

Same server, same tools. Pick your AI client and follow its 3-step guide.

Try these Instagram prompts

No commands to memorize. Describe what you want.

“Post this photo to Instagram under profile "marketing", caption: "New drop 🔥".”
“Reply privately to everyone who commented "PRICE" on my latest post.”
“Set up an auto-DM: when someone comments "GUIDE", send them the download link.”
“How did my Reels perform this month vs photo posts?”

Frequently asked questions

Instagram + AI agents, answered. Last updated September 2026.

What is an Instagram MCP server?

An Instagram MCP server is a Model Context Protocol server that exposes Instagram actions (Reels, photos, comments, DMs) as tools an AI agent can call. The Upload-Post MCP server lets ChatGPT, Claude, Gemini or any MCP client manage Instagram from a prompt, with no custom code.

Can AI agents post Reels to Instagram?

Yes. Connect your Instagram account to Upload-Post once, add the MCP server to your AI client, and the agent can publish Reels, photos and carousels with captions and scheduling.

Can the agent reply to comments and DMs?

Yes. The server includes tools to read comments, reply publicly or privately, send DMs and even configure keyword-triggered comment-to-DM automations.

Is the Instagram MCP server free?

The MCP server is free and open-source (MIT). It works with any Upload-Post plan, including the free tier.

How is this different from Instagram scraping MCP servers?

Many Instagram MCP servers read public profiles, posts and hashtags by scraping, usually through a third-party scraper or a logged-in session. This one does the opposite: it manages the Business or Creator accounts you connect, through Meta’s official Instagram API. It publishes Reels, carousels and Stories, answers comments and DMs, and reads your own analytics. It does not collect data about other accounts.

Do I need a Meta developer app or a Facebook Page?

No to both. Upload-Post’s approved Meta app handles the API access, and you connect with Instagram Login. The Instagram account must be a Business or Creator account; a linked Facebook Page is not required.

Can it post Stories and carousels?

Yes. Set instagramMediaType to STORIES for a Story (photo or video). upload_photos with several images publishes a feed carousel of up to 10 items.

Can it add a collaborator, a cover or a first comment?

Yes. On Reels, instagramCollaborators invites collaborators, instagramCoverUrl sets the cover and instagramShareToFeed also shows the Reel in your feed. firstComment posts a comment right after publishing.

Let your AI agent run Instagram

Free to start, no credit card. Connect Instagram once and post from any MCP client.