Instagram MCP Server
Instagram MCP Server
Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту два инструмента Instagram только для чтения. Найдите публичный профиль по имени пользователя и просмотрите его публичную ленту постов в виде структурированного JSON.
Он читает публичные данные об аккаунтах. Он не действует как аккаунт. Подключать нечего, и ваш аккаунт нигде в процессе не участвует.
https://mcp.hasdata.com/api/mcp?apis=instagram
Содержание
Related MCP server: instagram-mcp
Что вам нужно
MCP-клиент, поддерживающий streamable HTTP с пользовательскими заголовками. Ключ API HasData из панели управления, который можно создать бесплатно без карты, а пробный период покрывает 100 вызовов. Больше ничего. Это удалённый сервер. Не нужно устанавливать пакет, запускать контейнер или поддерживать локальный процесс.
Быстрый старт
URL |
|
Транспорт | HTTP, streamable |
Заголовок авторизации |
|
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
Один публичный профиль по имени пользователя.
Параметр | Тип | Обязательный | Примечания |
| string | да | Имя пользователя без |
Возвращает 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
Публичная лента постов для одного имени пользователя, постранично.
Параметр | Тип | Обязательный | Примечания |
| string | да | Имя пользователя без |
| number | Приблизительный предел количества постов в одном ответе. Двенадцать — реальный максимум, большие значения не загружают больше | |
| string |
|
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
Страницы продуктов и конструктор запросов | |
Документация по серверу | |
Все 57 инструментов на один сервер deserving | |
Пройти по клиентам и живые разборы | |
Другие платформы, которые которые мы забираем | |
Тарифы и стоимость кредитов | |
Ключи и использование |
Разработка
Этот репозиторий — конфигурация и документация для удалённого сервера. Никакой сборки нет и ничего контейнеризировать не нужно.
В нём есть контрактный тест. 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.
This server cannot be installed
Maintenance
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
- FlicenseAqualityNot gradedmaintenanceEnables 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
- FlicenseBqualityCmaintenanceProvides Instagram analytics, media downloads, and search capabilities through an MCP interface for use with Claude and other MCP clients.4340
- FlicenseNot gradedqualityCmaintenanceA 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.
- FlicenseNot gradedqualityCmaintenanceProvides 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.
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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