Skip to main content
Glama
pedroantonnio

Instagram Public MCP

Instagram Public MCP для Vercel

Удалённый MCP-сервер на Python, который запрашивает только публичные данные Instagram без логина, cookies, паролей или сохранённых сессий аккаунта.

Важно: патч мобильной ленты Instaloader

Эта сборка не использует стандартный пакет Instaloader 4.15.3.

В ней закреплён фикс анонимного профиля/постов из pull request #2722 Instaloader по адресу:

3f72b47466cc505b92c6e9b0ca2f5689e93a6a89

Зависимость:

instaloader @ https://github.com/alimony/instaloader/archive/3f72b47466cc505b92c6e9b0ca2f5689e93a6a89.zip

Патч меняет анонимное поведение так, что:

  • разрешение профиля может переключаться на api/v1/users/web_profile_info/ с api/v1/feed/user/{username}/username/;

  • анонимная пагинация постов использует api/v1/feed/user/{id}/;

  • страницы постов используют пагинацию max_id;

  • элементы преобразуются через iPhone/мобильную модель ответов Instaloader;

  • сбои web_profile_info могут сразу переходить к резервной ленте, не дожидаясь долгого цикла повторов/backoff.

Аутентифицированный аккаунт Instagram не используется.

Related MCP server: instagram

Архитектура

MCP Client
    |
    v
Vercel /api/mcp
    |
    v
Patched Instaloader (PR #2722)
    |
    v
Instagram mobile feed endpoint

MCP-инструменты

get_instagram_profile

Возвращает публичные метаданные профиля Instagram.

{
  "username": "instagram"
}

get_instagram_posts

Возвращает последние публичные посты.

{
  "username": "instagram",
  "count": 3
}

debug_instagram_connection

Проверяет исходный HTTP-ответ web_profile_info. Этот инструмент остаётся доступным для диагностики, но пропатченный Instaloader может переключаться на мобильную конечную точку ленты, когда эта конечная точка отклоняется.

{
  "username": "instagram"
}

MCP-ресурсы

instagram://profile/{username}
instagram://profile/{username}/posts

Кэш

Кэш в памяти по умолчанию:

CACHE_TTL_SECONDS=600
DEFAULT_POST_COUNT=12
MAX_POST_COUNT=30

Установите CACHE_TTL_SECONDS=0, чтобы отключить его.

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

Развёртывание на Vercel

npm install -g vercel
vercel --prod

Прилагаемый vercel.json разворачивает функцию в Сан-Паулу:

{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "regions": ["gru1"]
}

Конечная точка MCP:

https://YOUR-PROJECT.vercel.app/api/mcp

Конечная точка health:

https://YOUR-PROJECT.vercel.app/api/health

Локальная разработка

python -m venv .venv
pip install -r requirements.txt
uvicorn api.index:app --reload

Конечная точка MCP:

http://127.0.0.1:8000/api/mcp

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "instagram-public": {
      "url": "https://YOUR-PROJECT.vercel.app/api/mcp"
    }
  }
}

Безопасность

Этот репозиторий не содержит учётных данных аккаунта Instagram.

В нём нет и не требуется:

  • имя пользователя/пароль Instagram

  • sessionid

  • csrftoken

  • fb_dtsg

  • сохранённые сессии Instaloader

  • cookies Instagram

Ограничения

Сервер запрашивает только публичные данные и не пытается обойти приватные профили.

Instagram может по-прежнему ограничивать скорость или блокировать анонимный трафик в зависимости от IP-адреса развёртывания. Патч мобильной ленты исправляет известный сломанный анонимный путь web_profile_info/ленты, но он не может гарантировать, что Instagram примет трафик с любого хостинг-провайдера или диапазона IP.

Исправление совместимости профиля v2.1.1

Анонимный резервный вариант мобильной ленты может опускать необязательные поля профиля, которые обычно присутствуют в web_profile_info.

Версия 2.1.1 читает свойства профиля защитно. Отсутствующие значения, такие как biography, external_url или метаданные бизнес-аккаунта, возвращаются как null вместо того, чтобы вызывать сбой get_instagram_profile.

Путь получения постов не изменился по сравнению с v2.1.0.

Related MCP Connectors

Related MCP Servers