Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

HasData Instagram

by HasDataversion 1.0.8i★ –iComputer or cloud
Registry namecom.hasdata/instagram

Install

Overview

Description from the maker (original English)

Public Instagram profiles and post feeds by handle, with hashtags and mentions parsed.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Computer or cloud
  • Transport: stdio, Streamable HTTP
  • Category: Marketing & social media
  • You need to fill in: HASDATA_API_KEY, x-api-key

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • You fill in yourself: HASDATA_API_KEY, x-api-key

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/instagram-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add --transport http instagram 'https://mcp.hasdata.com/mcp?apis=instagram' --header 'x-api-key: your-value'

Or run it on your computer

claude mcp add instagram --env HASDATA_API_KEY=your-value -- npx -y @hasdata/instagram-mcp

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "instagram": {
      "url": "https://mcp.hasdata.com/mcp?apis=instagram",
      "headers": {
        "x-api-key": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/instagram-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "instagram": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=instagram",
      "headers": {
        "x-api-key": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "instagram": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/instagram-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • HASDATA_API_KEY secret required env
    HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card.
  • x-api-key secret required HTTP header
    HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified against the domain hasdata.com (the registry checks domain ownership)

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Marketing & social mediai

  • More stars than 0% of the other 2953 servers in this category
  • Published to the registry more recently than 40% of the other 2953 servers in this category
  • Basic checks equal to or better than 100% of the other 2953 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is HasData Instagram safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: HASDATA_API_KEY, x-api-key

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.0.8) reached the registry 43 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

An MCP server retrieving transcripts of YouTube videos

Runs on your computer★ 495MITUpdated 9 days ago
Install

GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.

Runs on your computer★ 244MITUpdated 9 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Instagram MCP Server

A hosted Instagram MCP server that gives Claude, Cursor, Windsurf and any other MCP client read-only Instagram tools. Look up a public profile by handle, walk its public post feed and read the comments on a public post or reel, as structured JSON.

It reads public data about accounts. It does not act as an account. There is nothing to connect and no account of yours involved anywhere in the flow.

1,000 free credits every month, no card required, which is 100 Instagram calls.

https://mcp.hasdata.com/mcp?apis=instagram
  • Prompts and resources

Contents

  • What you need
  • Quick start
  • Example prompts
  • Tools
  • Errors and failure paths
  • Pricing, free tier and limits
  • Tool selection
  • How it compares
  • FAQ
  • HasData links
  • Development
  • Contributing
  • License

What you need

An MCP client that speaks streamable HTTP with custom headers. A HasData API key from the dashboard, free to create with no card, and the free tier covers 100 calls a month. Nothing else. This is a remote server, so the simplest path is a URL and a header, with no container to run. A stdio-only client can use the @hasdata/instagram-mcp (npm) or hasdata-instagram-mcp (PyPI) launcher instead.

Quick start

URLhttps://mcp.hasdata.com/mcp?apis=instagram
TransportHTTP, streamable
Auth headerx-api-key: HASDATA_API_KEY

The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.

Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.

Claude Code

claude mcp add --transport http instagram "https://mcp.hasdata.com/mcp?apis=instagram" \

--header "x-api-key: HASDATA_API_KEY"

Claude Desktop

Claude Desktop loads only local (stdio) servers from its config file, so it reaches a remote server through a stdio launcher. The @hasdata/instagram-mcp package is that launcher, and it reads the key from the environment.

claude_desktop_config.json:

{

"mcpServers": { "instagram": { "command": "npx", "args": ["-y", "@hasdata/instagram-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }

Python instead of Node? Swap the launcher for the PyPI package, which uvx runs without a manual install:

{

"mcpServers": { "instagram": { "command": "uvx", "args": ["hasdata-instagram-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }

A client with OAuth support can instead add the URL as a custom connector and skip the launcher.

Cursor

.cursor/mcp.json:

{

"mcpServers": { "instagram": { "url": "https://mcp.hasdata.com/mcp?apis=instagram", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Windsurf

~/.codeium/windsurf/mcp_config.json:

{

"mcpServers": { "instagram": { "serverUrl": "https://mcp.hasdata.com/mcp?apis=instagram", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Cline

{

"mcpServers": { "instagram": { "url": "https://mcp.hasdata.com/mcp?apis=instagram", "type": "streamableHttp", "headers": { "x-api-key": "HASDATA_API_KEY" }, "disabled": false } } }

VS Code

.vscode/mcp.json:

{

"servers": { "instagram": { "type": "http", "url": "https://mcp.hasdata.com/mcp?apis=instagram", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Gemini CLI

~/.gemini/settings.json:

{

"mcpServers": { "instagram": { "httpUrl": "https://mcp.hasdata.com/mcp?apis=instagram", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Example prompts

Each of these is one tool call unless the count says otherwise.

Pull the profile for @nasa and tell me the follower count, whether it is verified, and every link in the bio.

*One call, 10 credits. For a public account the profile response already carries the twelve most recent posts, so a follow-up about recent activity needs no second call.*

Compare @nasa, @natgeo and @bbcearth on followers, accounts followed and whether each is verified.

*Three calls, 30 credits. One per handle.*

Walk the last fifty posts from @nasa and list every hashtag with how often it appears.

*Five calls, 50 credits. Twelve posts arrive per call, and fifty takes five pages.*

For the last twelve posts on @natgeo, list the accounts mentioned in each caption and the type of each post.

*One call, 10 credits. Mentions and hashtags arrive parsed out of the caption in the post objects.*

Two things make these work. Hashtags and mentions arrive as arrays parsed out of the caption, and an agent counts them instead of running a regex over prose. And a profile lookup returns the recent feed in the same response. That is why so many research questions land in a single call.

Tools

ToolWhat it returns
hasdata_instagram_comments_getInstagramCommentsFetches the comments on a public post or reel by its URL and returns the post itself with its caption, media, likesCount, commentsCount and timestamp, then each comment with its text, like count, timestamp and author. 10 credits a call
hasdata_instagram_posts_getInstagramPostsFetches the latest posts of a public Instagram account by username (handle) and returns each post with its id, shortcode, caption, type, productType, permalink, media URLs and pixel size, like and comment counts, the posting time, plus hashtags, mentions, tagged users and carousel members. 10 credits a call
hasdata_instagram_profile_getInstagramProfileFetches a public Instagram profile by username (handle) and returns id, full name, biography, bio links, profile picture URL, followers and following counts, the verified flag and the twelve most recent posts. 10 credits a call

Three tools, all read-only. Two are keyed on a public account handle, the third on the URL of a single post. Samples below are trimmed from real calls, and the numbers in them move as accounts post. Read them as shapes. Each tool name links to its endpoint reference.

The samples are the payload, not the whole response. A tools/call result carries one text block, and that text is itself JSON holding url, status, text and json, with the scraped data under json. From a raw JSON-RPC response the path is result.content[0].text, parsed, then .json. A chat client unwraps that for you and code talking to the endpoint directly does not.

Get an Instagram profile

hasdata_instagram_profile_getInstagramProfile

One public profile by handle.

ParameterTypeRequiredNotes
handlestringyesUsername without the @, as it appears in the profile URL

Returns id, username, fullName, biography, verified, the counters followersCount and followsCount, profilePicUrl, the internal fbid, the bioLinks array and latestPosts.

What is guaranteed and what is not, measured across twenty accounts: id, username, followersCount, followsCount, profilePicUrl and fbid came back every time. fullName, biography, verified, bioLinks and latestPosts came back for every public account and are the ones to read with a default.

A private account answers with private: true and little else. No bio, no counters beyond the follower numbers, no posts. Branch on that flag before you touch the rest of the payload.

bioLinks is an array of objects, not strings. Each entry carries url, title, Instagram's own redirectUrl wrapper and linkType. Read .url when you want the destination.

{

"id": "528817151", "username": "nasa", "fullName": "NASA", "biography": "Making the seemingly impossible, possible. ✨", "verified": true, "followersCount": 104345698, "followsCount": 91, "profilePicUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/…", "fbid": "17841401474538262", "bioLinks": [ { "url": "https://www.nasa.gov", "title": "NASA.gov Homepage", "redirectUrl": "https://l.instagram.com/?u=https%3A%2F%2Fwww.nasa.gov%2F&e=…", "linkType": "external" } ], "latestPosts": [ "…the most recent posts, same shape as the posts tool…" ] }

Get Instagram posts

hasdata_instagram_posts_getInstagramPosts

The public post feed for one handle, page by page.

ParameterTypeRequiredNotes
handlestringyesUsername without the @
limitnumberApproximate ceiling on posts in one response. Twelve is the real maximum, and larger values do not fetch more
nextPageTokenstringThe pagination.nextPageToken from the previous response

limit is a rough cap rather than an exact count. Twelve posts is one Instagram page and the hard ceiling for a single call, and limit: 50 returns twelve. Below the ceiling the count lands near the number you asked for without always matching it, and how near depends on the account. Measured on @nasa, a limit of 2 returned 4 posts, 6 returned 6, 11 returned 10 and 13 returned 12. Treat it as "no more than roughly this many" and read the array length rather than assuming it.

The response carries posts and pagination, and nothing else. Earlier versions repeated the account's identity fields alongside the feed, so code written against that shape needs a profile call for the name and avatar.

Each post carries id, shortcode, caption, type, productType, url, ownerUsername, ownerId, displayUrl and images, the pixel size as dimensionsWidth and dimensionsHeight, and hasdataLink, a ready-made link to the comments endpoint for that post. hashtags and mentions appear only when the captio

Only the beginning is shown; read the rest in the repo

Ask PopNx