Skip to main content
Glama
HasData

Instagram MCP Server

by HasData

Instagram MCP Server

Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту два инструмента Instagram только для чтения. Найдите публичный профиль по имени пользователя и просмотрите его публичную ленту постов в виде структурированного JSON.

Он читает публичные данные об аккаунтах. Он не действует как аккаунт. Подключать нечего, и ваш аккаунт нигде в процессе не участвует.

https://mcp.hasdata.com/api/mcp?apis=instagram

tool contract MCP Tools License

Содержание

Related MCP server: instagram-mcp

Что вам нужно

MCP-клиент, поддерживающий streamable HTTP с пользовательскими заголовками. Ключ API HasData из панели управления, который можно создать бесплатно без карты, а пробный период покрывает 100 вызовов. Больше ничего. Это удалённый сервер. Не нужно устанавливать пакет, запускать контейнер или поддерживать локальный процесс.

Быстрый старт

URL

https://mcp.hasdata.com/api/mcp?apis=instagram

Транспорт

HTTP, streamable

Заголовок авторизации

x-api-key: HASDATA_API_KEY

URL сервера одинаков для всех клиентов. Мы запускаем его вручную в Claude Code и Claude Desktop. Остальные блоки следуют собственному документированному формату каждого клиента для удалённого сервера.

Клиенты с поддержкой OAuth могут добавить тот же URL в качестве коннектора и войти без указания ключа в файле конфигурации.

claude mcp add --transport http instagram "https://mcp.hasdata.com/api/mcp?apis=instagram" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop загружает только локальные (stdio) серверы из своего файла конфигурации, поэтому удалённый сервер доступен через мост mcp-remote. На машине должен быть установлен Node.

claude_desktop_config.json:

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.hasdata.com/api/mcp?apis=instagram",
        "--header",
        "x-api-key:HASDATA_API_KEY"
      ]
    }
  }
}

В значении x-api-key: после двоеточия нет пробела. Claude Desktop передаёт аргумент без оболочки, а пробел разделяет заголовок. Клиент с поддержкой OAuth может вместо этого добавить URL как пользовательский коннектор и пропустить мост.

.cursor/mcp.json:

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

~/.codeium/windsurf/mcp_config.json:

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

.vscode/mcp.json:

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

~/.gemini/settings.json:

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

Примеры запросов

Каждый из них — один вызов инструмента, если не указано иное.

Получите профиль @nasa и сообщите мне количество подписчиков, категорию и все ссылки в био.

Один вызов, 10 кредитов. Для публичного аккаунта ответ профиля уже содержит двенадцать последних постов, поэтому дополнительный запрос о недавней активности не требуется.

Сравните @nasa, @natgeo и @bbcearth по подписчикам, опубликованным постам и тому, является ли каждый из них бизнес-аккаунтом.

Три вызова, 30 кредитов. По одному на каждое имя пользователя.

Просмотрите последние пятьдесят постов @nasa и перечислите каждый хэштег с частотой его появления.

Пять вызовов, 50 кредитов. Двенадцать постов приходят за вызов, а пятьдесят занимают пять страниц.

Для последних двенадцати постов @natgeo дайте мне лайки, комментарии и упомянутые аккаунты в каждой подписи.

Один вызов, 10 кредитов. Количество взаимодействий и упоминания приходят в разобранном виде в объектах постов.

Две вещи делают это возможным. Хэштеги и упоминания приходят в виде массивов, извлечённых из подписи, и агент подсчитывает их, а не выполняет регулярное выражение по тексту. А поиск профиля возвращает недавнюю ленту в том же ответе. Вот почему так много исследовательских вопросов решаются одним вызовом.

Инструменты

Два инструмента, оба только для чтения, оба работают с публичным именем пользователя аккаунта. Примеры ниже сокращены из реальных вызовов, и числа в них меняются по мере публикации аккаунтов. Воспринимайте их как структуру. Каждое имя инструмента ведёт на справочник конечной точки.

Примеры — это полезная нагрузка, а не весь ответ. Результат tools/call содержит один текстовый блок, и этот текст сам является JSON, содержащим url, status, text и json, с извлечёнными данными в json. Из необработанного JSON-RPC ответа путь — result.content[0].text, затем разбор, затем .json. Чат-клиент разворачивает это для вас, а код, обращающийся к конечной точке напрямую, — нет.

Получить профиль Instagram

hasdata_instagram_profile_getInstagramProfile

Один публичный профиль по имени пользователя.

Параметр

Тип

Обязательный

Примечания

handle

string

да

Имя пользователя без @, как оно указано в URL профиля

Возвращает id, username, fullName, biography, businessCategory, verified, isBusinessAccount и isProfessionalAccount, счётчики followersCount, followsCount, postsCount, highlightsCount и igtvVideoCount, оба profilePicUrl и profilePicUrlHD, а также массивы latestPosts, latestIgtvVideos и relatedProfiles.

Основные поля идентичности и количество подписчиков и подписок возвращаются для каждого публичного аккаунта. Поля сверх этого зависят от того, что сам аккаунт раскрывает, поэтому читайте необязательные поля со значением по умолчанию.

Ссылки находятся в двух полях, которые не одно и то же. bioLinks — это массив всех ссылок в био. externalUrls — это одна строка, несмотря на множественное число в названии, и она содержит основную ссылку, иногда с завершающим слэшем, которого нет в версии массива. Читайте bioLinks, когда нужны все.

latestPosts и latestIgtvVideos не содержат одинаковых полей. Видео-записи добавляют taggedUsers, а объекты постов здесь опускают productType, который включает инструмент постов. Код, обрабатывающий оба массива через один парсер, должен считать дополнительные ключи необязательными.

{
  "id": "528817151",
  "username": "nasa",
  "fullName": "NASA",
  "biography": "Making the seemingly impossible, possible. ✨",
  "businessCategory": "Government Agencies",
  "bioLinks": [
    "https://www.nasa.gov",
    "https://science.nasa.gov/mission/roman-space-telescope/",
    "http://intern.nasa.gov"
  ],
  "externalUrls": "https://www.nasa.gov/",
  "followersCount": 104397669,
  "followsCount": 92,
  "postsCount": 4887,
  "verified": true,
  "isBusinessAccount": true,
  "latestPosts": [ "…twelve most recent posts, same shape as the posts tool…" ],
  "relatedProfiles": [
    { "id": "…", "username": "…", "fullName": "…", "profilePicUrl": "…" }
  ]
}

relatedProfiles — это собственный список рекомендаций Instagram для аккаунта, содержащий несколько десятков записей. Это дешёвый способ расширить набор конкурентов без угадывания имён пользователей.

Получить посты Instagram

hasdata_instagram_posts_getInstagramPosts

Публичная лента постов для одного имени пользователя, постранично.

Параметр

Тип

Обязательный

Примечания

handle

string

да

Имя пользователя без @

limit

number

Приблизительный предел количества постов в одном ответе. Двенадцать — реальный максимум, большие значения не загружают больше

nextPageToken

string

pagination.nextPageToken из предыдущего ответа

limit — это приблизительный предел, а не точное количество. Двенадцать постов — это одна страница Instagram и жёсткий предел для одного вызова, а limit: 50 возвращает двенадцать. Ниже предела количество попадает рядом с запрошенным числом, но не всегда точно, и насколько близко — зависит от аккаунта. Измерено на @nasa: при limit 2 вернулось 4 поста, 6 — 6, 11 — 10, а 13 — 12. Воспринимайте это как «не более примерно столько» и читайте длину массива, а не предполагайте.

Ответ повторяет поля идентичности аккаунта вместе с постами. username, id, fullName, verified и оба URL аватара приходят на каждой странице. Удобно для маркировки строк, и стоит знать, прежде чем делать отдельный вызов профиля для их получения.

Каждый пост содержит id, shortcode, caption, type, productType, hashtags, mentions, likesCount, commentsCount, timestamp, url, displayUrl, images, dimensionsWidth, dimensionsHeight, ownerId и ownerUsername.

{
  "username": "nasa",
  "id": "528817151",
  "fullName": "NASA",
  "verified": true,
  "latestPosts": [
    {
      "id": "3967213292204992434",
      "shortcode": "DcOX3hWFiey",
      "caption": "With your powers combined…\n\nThis colorful picture of the cosmos is the product of teamwork between our @NASAHubble, @NASAWebb, and @NASAChandraXray telescopes. […] \n\n#NASA #Universe #Nebula",
      "type": "Image",
      "hashtags": ["#NASA", "#Universe", "#Nebula"],
      "mentions": ["@NASAHubble", "@NASAWebb", "@NASAChandraXray"],
      "likesCount": 78412,
      "commentsCount": 402,
      "timestamp": "2026-08-18T16:02:11.000Z",
      "url": "https://www.instagram.com/p/DcOX3hWFiey/"
    }
  ],
  "pagination": {
    "morePostsAvailable": true,
    "nextPageToken": "3968050822236429248_528817151",
    "hasdataLink": "https://api.hasdata.com/scrape/instagram/posts?handle=nasa&nextPageToken=3968050822236429248_528817151"
  }
}

Хэштеги и упоминания сохраняют префиксы # и @, что важно, если вы объединяете их со списком, который создали сами. morePostsAvailable — это флаг для ветвления при постраничном просмотре, а hasdataLink — та же следующая страница, выраженная как REST URL, полезная, когда нужно воспроизвести вызов агента вручную.

Ошибки и сбои

Ваш клиент почти никогда не видит код ошибки HTTP от вызова инструмента. Слой MCP отвечает 200 и помещает сбой внутрь результата, с isError, установленным в true, и причиной в виде текста. Агент читает сообщение там, где вы могли бы ожидать строку состояния.

Неправильный ключ проявляется как вывод инструмента, а не как неудачное соединение. Список инструментов принимает любой непустой ключ, и клиент завершает рукопожатие и показывает зелёный индикатор. Затем первый вызов инструмента возвращается с isError: true и текстом HasData API error: 401 Unauthorized. Следите за этой строкой, потому что ничто ранее в процессе не сообщает о проблеме.

Отсутствующий ключ — единственная настоящая ошибка HTTP. Авторизация выполняется до любого инструмента, и само соединение завершается с ошибкой 401.

Аргумент, нарушающий схему, отклоняется до того, как станет запросом. Сервер отвечает с isError: true и текстом MCP error -32602: Input validation error, указывая поле. Ничего не извлекается и не списывается.

Имя пользователя, которое не разрешается, — это чистая ошибка, а не пустые данные. Возвращается isError: true с HasData API error: 400 Bad Request и requestMetadata.status, установленным в error. Это хороший случай, потому что сбой однозначен. Проверяйте флаг, а не длину массива.

Аккаунт, данные которого не являются публичными, не возвращает ленту постов. Инструменты охватывают публичные аккаунты, и читать нечего, если аккаунт не публичный. Отсутствие latestPosts считайте вне области действия, а не пустой лентой.

Результаты, содержащие данные, также содержат requestMetadata.id, который стоит указать в поддержке, а также ссылки html и json на сохранённый артефакт этого конкретного вызова.

Цены, бесплатный тариф и лимиты

Каждый инструмент Instagram стоит 10 кредитов за успешный вызов. Размер ответа не меняет цену. Профиль с двенадцатью постами стоит столько же, сколько и без них.

Бесплатная пробная версия — 1 000 кредитов на 30 дней без карты, или 100 вызовов Instagram. После этого активный аккаунт продолжает получать 100 кредитов ежедневно, когда его баланс опускается ниже 100, так что агент с низким объёмом работает на бесплатном тарифе бессрочно.

Платные планы начинаются с 49 долларов в месяц за 200 000 кредитов, или 20 000 вызовов. Цена за единицу снижается с объёмом: от 2,45 доллара за 1 000 вызовов на начальном плане до 0,99 доллара на Business, 0,83 доллара на Growth и 0,75 доллара на крупнейших планах с высоким объёмом.

Ваш план также задаёт параллельность. Рекомендуемый тариф допускает 1 запрос одновременно, Startup — 15, Business — 30, Growth — 50, а высоконагруженные тарифы — от 200 до 1 500. В любом автоматическом сценарии защитно обрабатывайте случай переполнения: агент, который расходоится по множеству аккаунтов, упрётся в потолок раньше вас.

Паджинация стоит вызова каждый раз. Промпт, который проходит по сотне постов в двух аккаунтах, — это восемнадцать вызовов и 180 кредитов. Пробной версии хватит на большее при сравнении профилей, чем при глубоком обходе лент.

Выбор инструмента

?apis=instagram открывает ровно два этих инструмента. Параметр принимает список, и ?apis=instagram,tiktok,youtube даёт вашему агенту сразу три соцсети. Если убрать параметр, вы получите всё, что отдаёт HasData: на данный момент это 57 инструментов.

Узкий список обычно правильный вариант по умолчанию. Модель, которая выбирает из двух инструментов, чаще поступает верно, чем та, которой предложили пятьдесят семь, а описания инструментов расходуют контекст на каждом шаге.

Обычная причина расширить список — сравнение платформ. Нужно задать один и тот же вопрос про аккаунт в Instagram и аккаунт в TikTok — и, когда открыты оба, это один промпт.

Как он смотрится в сравнении

Почти каждый Instagram MCP-сервер делает что-то другое, чем этот, и поэтому выбор необычно очевиден.

Популярные серверы управляют аккаунтом. Некоторые оборачивают Instagram Graph API, чтобы публиковать посты, читать комментарии и управлять аккаунтами, которые вы администрируете. Другие занимаются личными сообщениями. Серверы анализа вовлечённости просят INSTAGRAM_USERNAME и INSTAGRAM_PASSWORD в env-блоке, как указано в их инструкциях по настройке, потому что они входят в систему и просматривают контент от вашего имени. Все они — подходящий инструмент, когда задача заключается в управлении вашим аккаунтом.

Этот сервер никогда не входит в систему под чьим-либо именем — это другая работа. Каждый вопрос, на который он отвечает, касается аккаунта, который вам не принадлежит, и вызов идентичен независимо от того, какой аккаунт вы запрашиваете.

Сервер для управления аккаунтом

Этот сервер

Чем фактически является

Ваш аккаунт через токен или сессию

Ничем, он читает публичные данные

Что вы настраиваете

Учётные данные или приложение Graph API под каждый аккаунт

Один API-ключ, один раз

Какие аккаунты охватывает

Аккаунты, которыми вы управляете

Любой публичный аккаунт

Публикация и переписка

Да, в этом весь смысл

Не предусмотрено

Результат

Только по аккаунту, которым вы управляете

JSON по любому публичному аккаунту, хэштеги и упоминания разобраны

Что вы запускаете

Локальный процесс Python или Node.js

URL и заголовок

Стоимость

Бесплатно

10 кредитов за вызов

Решают две строки таблицы. Если вам нужно публиковаться, комментировать или отвечать — этот сервер не поможет совсем. Если нужны одни и те же поля по сотне аккаунтов, с которыми вас связывают отношения, универсальный сервер, построенный на ваших собственных учётных данных, тоже не поможет.

Решающая ось — охват, а не качество. Сервер, построенный вокруг вашего входа, каким бы хорошим ни был его результат, достанет только те аккаунты, которыми вы управляете. Этот сервер даёт ответ на один и тот же вопрос для любого публичного аккаунта, а поля отдаются уже разобранными массивами, которые ничего не стоят при агрегации.

Что этот сервер не делает. Никаких комментариев, сторис, роликов, кроме тех, что показывает лента, никаких личных сообщений, никакого поиска по хэштегам или гео — или и ничего записывающего. Он хорошо умеет читать два типа данных.

Частые вопросы

Что такое Instagram MCP-сервер?

Сервер, который отдаёт данные Instagram инструменты для ИИ-клиента. Клиент по протоколу Model Context Protocol отправляет вызов, сервер загружает данные и возвращает структурированный JSON, а модель работает с результатом и не видит HTML-страницу. Конкретно этот сервер предоставляет два инструмента только на чтение и работает удалённо. Клиент подключается по URL — никакой локальный процесс не запускается.

Есть ли официальный Instagram MCP-сервер?

Meta не публикует универсального такого сервера. Есть официальный MCP для рекламы соцсети Meta, но он покрывает рекламные аккаунты и кампании, а не данные профилей и постов. Всё остальное в этой области сделали другие.

Каков перечень данных?

Публичные поля профиля и публичная лента записей, для публичных аккаунтов — по handle. Приватный аккаунт всё равно отдаёт заголовок, числа подписчиков и подписок и флаг private: true, но без описания и без постов, потому что читать публичную ленту в этом случае нечего. Ответственность за то, как вы используете результаты, включая соблюдение условий Instagram и применимого закона, лежит на вас.

Нужно ли мне что-то хостить или запускать?

Нет. Это удалённый MCP-сервер на streamable HTTP. Ничего устанавливать не нужно, никакого окружения Python или процесса для перезапуска.

Данные живые или кэшируются?

Живые. Каждый вызов запрашивает находящихся моментами выполнения и несёт собственный requestMetadata.id. Ри того два одинаковых вызова — это две отдельные загрузки, а не повторение сохранённой копии. Счётчики, вроде подписчиков и лайков, отслеживают аккаунт и меняются вместе с ним.

Сколько постов можно получить?

Двенадцать за один вызов — одна страница Instagram, а дальнейшие страницы возвращаются через pagination.nextPageToken. Для публичного аккаунта запрос профиля включает эти же двенадцать без дополнительной платы, поэтому коротко лента накоротко часто можно задать без отдельного запроса постов.

Что происходит, когда Instagram меняет разметку?

С вашей стороны — ничего. Мы отслеживаем изменения и держим стабиляем схему ответа; имена и типы полей остаются как были. Поле без значения отсутствует в элементе, а не присутствует со null, поэтому необязательные параметры читаются со значением по умолчанию.

Можно ли использовать один сервер для нескольких платформ?

Да. Параметр chars="apis" принимает список, и ?apis=instagram,tiktok,youtube даёт вашему агенту сразу три платформы.

Какие клиенты работают?

Подходит любой MCP-клиент, который поддерживает streamable HTTP и кастомные заголовки. Конфиги выше протестированы выводы. В клиентах с поддержкой OAuth можно подключить URL как коннектор вместо этого.

Ссылки HasData

Страницы продуктов и конструктор запросов

Instagram Profile API and Instagram Posts API

Документация по серверу

MCP server docs

Все 57 инструментов на один сервер deserving

HasData/hasdata-mcp

Пройти по клиентам и живые разборы

MCP clients and integrations

Другие платформы, которые которые мы забираем

53 more scraper APIs

Тарифы и стоимость кредитов

Планы и стоимость кредитов

Ключи и использование

HasData dashboard

Разработка

Этот репозиторий — конфигурация и документация для удалённого сервера. Никакой сборки нет и ничего контейнеризировать не нужно.

В нём есть контрактный тест. README обещает два инструмента с конкретными параметрами, а список инструментов вышестоящего сервера может измениться без коммита здесь, и тогда этот файл перестанет быть честным с вами. Тест проверяет это обещание и запускается еженедельно в CI и при каждом push.

HASDATA_API_KEY=your_key_here npm test

В PowerShell:

$env:HASDATA_API_KEY = "your_key_here"; npm test

Последняя проверка совершает настоящий запрос и тратит 10 кредитов — это цена канарейки, которая может упасть по правильная причина. Перечень инструментов успешно проходит даже с некетом непустым ключом, а тест, который только списки инструментов, останется зелёным и при отозванном ключе.

Участие

Исправления таблиц инструментов и примеров ответов — самый полезный вклад, потому что именно эти части устало расходятся. Будет ли вызов, который вы сделали, и ответ, который получили. Pull request из форков проходит все тесты без ключа, а живые проверки просто пропускаются, а не краснеют.

Лицензия

MIT. См. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables access to Instagram data through EnsembleData API, allowing retrieval of user information, posts, reels, follower counts, and search functionality for users, hashtags, and locations.
    9
  • F
    license
    B
    quality
    C
    maintenance
    Provides Instagram analytics, media downloads, and search capabilities through an MCP interface for use with Claude and other MCP clients.
    43
    40
  • F
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server that provides tools to query live Meta (Facebook+Instagram) and TikTok organic social data, such as follower counts, insights, recent posts, and aggregated overviews.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides unified access to social media data across nine networks (Instagram, TikTok, YouTube, etc.) through a set of MCP tools for profiles, posts, search, and comments, backed by the SocialBridge API.

View all related MCP servers

Related MCP Connectors

  • Unified social-media data across 10 networks: profiles, posts, search, comments, cross-search.

  • Social media analytics, video analysis, and competitor intel for any MCP-compatible AI agent.

  • Social media MCP: publish, schedule & analyze posts on TikTok, Instagram, YouTube, LinkedIn & X

View all MCP Connectors

Latest Blog Posts

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/HasData/instagram-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server