instagram-data-mcp
# instagram-data-mcp (local stdio package)
<!-- mcp-name: io.github.FastSocialCo/instagram-data-mcp -->
A small local MCP server for public Instagram data, published on PyPI as `instagram-data-mcp`.
It gives Claude, Cursor and any other MCP client 27 read-only tools: profiles, posts, reels,
stories, highlights, comments, likers, followers, hashtags, places, audio and search.
Most people don't need this package. The same tools are available from the remote server at
`https://data.fastsocial.co/mcp`, with sign-in in the browser and nothing to install. Setup for
that is in [FastSocialCo/instagram-data-mcp](https://github.com/FastSocialCo/instagram-data-mcp).
Use this package if your client only runs local (stdio) servers.
## Run it
Get a key at https://fastsocial.co/instagram-api (there is a free plan), then:
```json
{
"mcpServers": {
"instagram-data": {
"command": "uvx",
"args": ["instagram-data-mcp"],
"env": { "IG_DATA_API_KEY": "your_key" }
}
}
}
```
No `uvx`? `pip install instagram-data-mcp` and use `"command": "instagram-data-mcp"` instead.
## What it does and what it sends
The whole server is [`server.py`](src/instagram_data_mcp/server.py), about 150 lines. It reads the
bundled [`openapi.json`](src/instagram_data_mcp/openapi.json) (the public spec of the Instagram
Data API) and turns each `GET` endpoint into one tool.
When a tool is called, it makes one HTTPS `GET` request to `https://data.fastsocial.co/v1/<endpoint>`
with the tool's arguments as query parameters, your key in the `X-API-Key` header and
`instagram-data-mcp` as the user agent. It returns the JSON response as is. That is the only
network request it makes.
- Every tool reads. Each one is marked `readOnlyHint: true`. None can log in to Instagram, post,
follow, like or message.
- It writes no files and stores nothing. Your key stays in your client's config and is only ever
sent in that header.
- No install scripts, no telemetry.
Privacy policy: https://fastsocial.co/privacy · Terms: https://fastsocial.co/terms
## Settings
| Env var | Default | |
|---|---|---|
| `IG_DATA_API_KEY` | none | Required |
| `IG_DATA_API_BASE` | `https://data.fastsocial.co` | |
| `IG_DATA_API_TIMEOUT` | `60` | Seconds |
## Tools
The tool list and what each one costs in credits are in the
[plugin README](https://github.com/FastSocialCo/instagram-data-mcp#the-27-tools) and the
[API docs](https://fastsocial.co/instagram-api/docs).
## Security
Report a vulnerability to contact@fastsocial.co. See
[SECURITY.md](https://github.com/FastSocialCo/instagram-data-mcp/blob/main/SECURITY.md).
## License
MIT
TDQS
Scored across 27 tools
Most tools target a distinct resource, but several near-duplicate pairs invite misselection: instagram_highlights vs instagram_highlight (list vs items), instagram_posts vs instagram_post (list vs single), and instagram_reels vs instagram_reels_search. Descriptions do clarify the boundaries, and lookup tools (username/user_id/check) are distinguishable, so confusion is limited rather than pervasive.
Every tool follows the exact same instagram_ prefix plus snake_case noun pattern (instagram_profile, instagram_place_posts, instagram_audio_search). No mixed conventions or vague verbs anywhere.
27 tools is heavy and sits just past the point where each tool clearly earns its place. The domain is genuinely broad (profiles, posts, reels, comments, hashtags, places, audio, search), so the count is defensible, but it is on the bloated side for an agent to navigate.
Coverage is broad and coherent for a read-only Instagram data API: profiles, posts, reels, stories, highlights, comments, likers, followers/following, hashtags, places, audio, search and insights. Minor gaps (e.g. no comment-level or follower-delta analytics beyond what exists) are workable but keep it from a perfect score.