DEV Community

Cover image for I Let My AI Agent Run My Instagram. It Didn't Go Horribly Wrong.
Alan West
Alan West

Posted on • Originally published at blog.authon.dev

I Let My AI Agent Run My Instagram. It Didn't Go Horribly Wrong.

I manage three Instagram accounts. Product shots on Monday, reels on Wednesday, stories on Friday. And honestly? I'm terrible at keeping the schedule. By Thursday I've forgotten Wednesday's reel, and by Friday I'm batch-uploading stories at 11 PM like a college student turning in a paper.

I've tried the usual suspects -- Buffer, Later, Hootsuite. They work fine for scheduling. But scheduling is the easy part. The hard part is everything else: replying to comments before they go stale, checking which content actually performed, cross-posting to Threads without it feeling like an afterthought, and managing DMs from potential clients who expect a reply within the hour.

So when I heard about an MCP server that gives AI agents full programmatic access to Instagram and Threads, I had to try it. Not because I wanted to automate everything blindly, but because I was curious how far you could push the "agent as social media manager" idea before it fell apart.

What meta-mcp actually is

meta-mcp is not another scheduling dashboard. It's a Model Context Protocol server that exposes the Instagram Graph API and Threads API as tool calls your AI agent can invoke directly. Think of it as giving Claude (or any MCP-compatible agent) hands to actually do things on your social accounts.

The numbers are worth mentioning: 33 Instagram tools, 18 Threads tools, and 6 Meta Platform utilities for token management and webhooks. That covers publishing (photos, videos, reels, stories, carousels), comment management, insights/analytics, hashtag research, and DM handling. On the Threads side, you get text and media posts with polls and GIFs, reply management, and analytics.

It's a lot of surface area. And unlike wrapper apps that hide the API behind a GUI, this thing just hands the raw capabilities to your agent and lets it figure out the workflow.

Setting it up

Installation is the standard MCP one-liner. Add this to your Claude Desktop config (or whatever MCP client you're using):

{
  "mcpServers": {
    "meta": {
      "command": "npx",
      "args": ["-y", "@mikusnuz/meta-mcp"],
      "env": {
        "INSTAGRAM_ACCESS_TOKEN": "your-token",
        "INSTAGRAM_USER_ID": "your-user-id",
        "THREADS_ACCESS_TOKEN": "your-token",
        "THREADS_USER_ID": "your-user-id"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

You'll need a Meta developer account and a long-lived access token. If you've ever wrestled with the Instagram Graph API, you know the token dance is the worst part. meta-mcp includes token management tools to refresh and validate tokens, which saves you from the "why did my integration break at 3 AM" mystery.

Fair warning: getting the initial token set up still requires going through Meta's app review process if you want to manage accounts you don't own. For your own accounts, you can get started with a basic test token in about fifteen minutes.

The fun part: actually using it

Here's where it gets interesting. Once the MCP server is running, you can just talk to your agent in natural language and it translates that into API calls. But let me show you what's happening under the hood.

Say I want to post a carousel of product shots. The agent calls something like this:

// What the agent actually invokes behind the scenes
await instagram_publish_carousel({
  image_urls: [
    "https://cdn.example.com/product-front.jpg",
    "https://cdn.example.com/product-side.jpg",
    "https://cdn.example.com/product-detail.jpg"
  ],
  caption: "New colorway dropping Friday. Which angle is your favorite? #productdesign #newrelease",
  share_to_feed: true
});
Enter fullscreen mode Exit fullscreen mode

Nothing revolutionary on its own. But combine it with the insights tools, and now your agent can make decisions. I set up a simple workflow: before posting, the agent checks the last two weeks of post performance, identifies which content types and posting times got the most engagement, and adjusts accordingly.

// Agent checks recent performance before deciding what to post
const insights = await instagram_get_user_insights({
  metric: ["impressions", "reach", "accounts_engaged"],
  period: "day",
  since: "2026-03-09",
  until: "2026-03-23"
});

const mediaInsights = await instagram_get_media_insights({
  media_id: recentPosts[0].id,
  metric: ["engagement", "impressions", "saved"]
});

// Agent reasons: "Carousels outperformed single images by 3x
// on reach last week. Posting at 6 PM PT got 40% more
// engagement than morning posts. Adjusting strategy."
Enter fullscreen mode Exit fullscreen mode

The comment management is where I was most nervous. Letting an AI reply to real people on a brand account feels risky. But the tooling is granular enough that you can set up guardrails. The agent can read comments, flag ones that need human review, and only auto-reply to straightforward ones (like "What size is this?" or "When does this ship?").

Cross-posting to Threads without the cringe

Here's the thing about Threads: most people either ignore it completely or cross-post their Instagram captions verbatim, which reads terribly on a text-first platform. With meta-mcp handling both APIs, your agent can actually adapt the content.

I tell it: "Post today's product announcement to both Instagram and Threads." On Instagram, it publishes the carousel with hashtags and a visual-first caption. On Threads, it writes a conversational text post about the same topic, maybe with a single image, and skips the hashtag spam. Same message, different packaging. That's the kind of thing that takes me twenty minutes manually but the agent handles in seconds.

The Threads tools also support polls and GIF attachments, which is a nice touch for engagement posts that would feel out of place on Instagram's grid.

Two weeks in: the honest take

I've been running this setup for about two weeks across one of my three accounts (I'm not brave enough to do all three yet). Here's what I've found.

What works well:

  • Scheduling and publishing is rock solid. No failed posts, no weird formatting issues.
  • Analytics summaries are genuinely useful. The agent gives me a weekly digest that's more actionable than anything I got from paid tools.
  • Comment triage saves me the most time. Flagging spam, highlighting questions that need personal replies, auto-responding to FAQs.

What's still rough:

  • Story publishing requires externally hosted media URLs. If your workflow involves creating stories on-the-fly from local files, you'll need a CDN or hosting step in between.
  • The agent occasionally misjudges tone in comment replies. I've caught a couple that were technically correct but too formal for the account's voice. You need clear system prompts about brand voice.
  • Rate limits are real. Meta's API has strict rate limiting, and if your agent gets enthusiastic about pulling insights, you'll hit walls.

Who should actually use this:

Developers who manage brand accounts, indie hackers running their own marketing, or agencies that want to build custom social media workflows. If you're a casual Instagram user who posts sunset photos, this is overkill. If you're managing multiple accounts and spending hours a week on repetitive social media tasks, it's worth the setup time.

This is not a "set it and forget it" tool. It's a "set it, watch it for a week, tune your prompts, then trust it with increasing autonomy" tool. Which, honestly, is how every good automation should work.

The repo is at github.com/mikusnuz/meta-mcp and the package is @mikusnuz/meta-mcp on npm if you want to kick the tires yourself.

Top comments (0)