Instagram MCP Server
Instagram MCP Server
ホスト型の Model Context Protocol (MCP) サーバーで、Claude、Cursor、Windsurf、その他の MCP クライアントに、読み取り専用の Instagram ツールを 2 つ提供します。ハンドルで公開プロフィールを検索し、公開投稿フィードを構造化 JSON として辿ることができます。
アカウントの公開データを読み取るだけで、アカウントとして動作することはありません。接続するものは何もなく、フローにあなたのアカウントが関わることもありません。
https://mcp.hasdata.com/api/mcp?apis=instagram
目次
Related MCP server: instagram-mcp
必要なもの
カスタムヘッダーで streamable HTTP を話す MCP クライアント。HasData API キーは ダッシュボード から無料で作成でき、カードは不要、トライアルで 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" }
}
}
}プロンプト例
特に記載がない限り、それぞれが 1 回のツール呼び出しです。
@nasaのプロフィールを取得して、フォロワー数、カテゴリ、プロフィール内のすべてのリンクを教えてください。
1 回の呼び出し、10 クレジット。公開アカウントの場合、プロフィール応答には直近 12 件の投稿がすでに含まれているため、最近のアクティビティに関するフォローアップは追加の呼び出しを必要としません。
@nasa、@natgeo、@bbcearthを、フォロワー数、投稿数、ビジネスアカウントかどうかで比較してください。
3 回の呼び出し、30 クレジット。ハンドルごとに 1 回です。
@nasaの直近 50 件の投稿を辿り、すべてのハッシュタグとその出現回数をリストアップしてください。
5 回の呼び出し、50 クレジット。1 回の呼び出しで 12 件の投稿が届き、50 件には 5 ページ必要です。
@natgeoの直近 12 件の投稿について、各キャプションのいいね数、コメント数、言及されたアカウントを教えてください。
1 回の呼び出し、10 クレジット。エンゲージメント数と言及は投稿オブジェクト内で解析済みです。
これらが機能する理由は 2 つあります。ハッシュタグと言及はキャプションから解析された配列として届き、エージェントは散文に対して正規表現を実行する代わりにそれらを数えます。また、プロフィール検索は同じ応答で最近のフィードを返します。そのため、多くの調査質問が 1 回の呼び出しで解決します。
ツール
2 つのツールは、どちらも読み取り専用で、公開アカウントのハンドルをキーとします。以下のサンプルは実際の呼び出しから抜粋したもので、数値はアカウントの投稿に応じて変動します。形として読んでください。各ツール名はエンドポイントのリファレンスにリンクしています。
サンプルはペイロードであり、応答全体ではありません。tools/call の結果には 1 つのテキストブロックが含まれ、そのテキスト自体が url、status、text、json を保持する JSON で、スクレイピングされたデータは json の下にあります。生の JSON-RPC 応答からは、パスは result.content[0].text を解析し、次に .json です。チャットクライアントはそれを自動的に展開しますが、エンドポイントに直接話すコードはそうではありません。
Instagram プロフィールを取得
hasdata_instagram_profile_getInstagramProfile
ハンドルによる 1 つの公開プロフィール。
パラメータ | 型 | 必須 | 備考 |
| string | はい | プロフィール URL に表示される |
id、username、fullName、biography、businessCategory、verified、isBusinessAccount、isProfessionalAccount、カウンターの followersCount、followsCount、postsCount、highlightsCount、igtvVideoCount、profilePicUrl と profilePicUrlHD の両方、配列の latestPosts、latestIgtvVideos、relatedProfiles を返します。
コアの ID フィールドとフォロワー数・フォロー数は、すべての公開アカウントで返されます。それ以外のフィールドはアカウント自体が公開している内容に依存するため、オプションのフィールドはデフォルト値付きで読み取ってください。
リンクは同じものではない 2 つのフィールドにあります。
bioLinksはプロフィール内のすべてのリンクの配列です。externalUrlsは複数形の名前にもかかわらず単一の文字列で、プライマリリンクを保持し、配列版にはない末尾のスラッシュが付くことがあります。すべてのリンクが必要な場合はbioLinksを読んでください。
latestPostsとlatestIgtvVideosは同一のフィールドを持ちません。ビデオエントリにはtaggedUsersが追加され、ここの投稿オブジェクトには投稿ツールが含むproductTypeがありません。両方の配列を 1 つのパーサーで処理するコードは、追加のキーをオプションとして扱う必要があります。
{
"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
1 つのハンドルの公開投稿フィードをページごとに取得します。
パラメータ | 型 | 必須 | 備考 |
| string | はい |
|
| number | 1 回の応答で返される投稿数の概算上限。実際の最大は 12 で、それより大きい値を指定しても追加取得はされません | |
| string | 前回の応答の |
limitは正確な数ではなく大まかな上限です。12 件の投稿が Instagram の 1 ページで、1 回の呼び出しのハード上限であり、limit: 50は 12 件を返します。上限未満では、要求した数に近い件数が返りますが、常に一致するとは限らず、その近さはアカウントに依存します。@nasaで測定したところ、limit 2 では 4 件、6 では 6 件、11 では 10 件、13 では 12 件が返りました。「おおよそこれ以下」として扱い、配列の長さを読むようにしてください。
応答には投稿とともにアカウントの ID フィールドが繰り返し含まれます。
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 クレジットかかります。応答サイズによって価格は変わりません。12 件の投稿が付いたプロフィールも、付いていないプロフィールも同じコストです。
無料トライアルは カード不要で 30 日間 1,000 クレジット、つまり Instagram 呼び出し 100 回分です。その後、アクティブなアカウントは残高が 100 を下回るたびに毎日 100 クレジットが補充されるため、低容量のエージェントは無料枠で無期限に実行できます。
有料プランは 月額 $49 からで、200,000 クレジット、つまり 20,000 回の呼び出しが含まれます。単価はボリュームに応じて下がり、エントリープランでは 1,000 回の呼び出しあたり $2.45、Business では $0.99、Growth では $0.83、最大の 高ボリュームプラン では $0.75 です。
あなたのプランは同時実行数も定めます。無料トライアルは同時1リクエスト、Startup は 15、Business は 30、Growth は 50、ハイボリュームプランは 200〜1,500 です。無人で動作するものでは、オーバーフローのケースに防御的に対処してください。複数のハンドルに処理を広げるエージェントは、あなたよりも先に上限に達するからです。
ページングには、そのたびに1回の呼び出しコストがかかります。2つのアカウントにわたって100件の投稿をたどるプロンプトは、18回の呼び出しと180クレジットになります。トライアルは、深いフィードクロールよりもプロフィール比較のほうが長持ちします。
ツールの選択
?apis=instagram は、まさにこれら2つのツールを公開します。このパラメータはリストを受け取り、?apis=instagram,tiktok,youtube とすると、エージェントに一度に3つのソーシャルプラットフォームを提供します。パラメータを省略すると、HasData が公開しているすべてのツール(現在は57個)を取得できます。
通常、リストは絞り込んでおくほうがよいデフォルトです。2つのツールから選ぶモデルは、57個から選ぶモデルよりも正しく選択できる頻度が高く、ツールの説明自体も毎ターンコンテキストを消費します。
リストを広げる一般的な理由は、クロスプラットフォームでの比較です。Instagram のハンドルと TikTok のハンドルに同じ質問をする場合、両方が公開されていれば1つのプロンプトで済みます。
比較
ほとんどすべての Instagram MCP サーバーは、このサーバーとは異なることを行うため、選択肢は非常に明確になります。
人気のあるサーバーはアカウントを操作します。Instagram Graph API をラップして、投稿の公開、コメントの読み取り、管理対象アカウントの管理を行うものもあります。ダイレクトメッセージを処理するものもあります。エンゲージメント分析サーバーは、それぞれのセットアップ手順に従って、env ブロックで INSTAGRAM_USERNAME と INSTAGRAM_PASSWORD を要求します。あなたに代わってサインインし、あなたとして閲覧するためです。これらはすべて、自分が管理するアカウントを運用するという仕事には適したツールです。
このサーバーは誰としてもサインインしません。これは別の仕事です。回答するすべての質問は、あなたが所有していないハンドルに関するものであり、どのハンドルであっても呼び出しは同じです。
アカウント操作サーバー | このサーバー | |
何として動作するか | トークンまたはセッション経由のあなたのアカウント | なし。公開データを読み取るのみ |
設定するもの | アカウントごとの認証情報または Graph API アプリ | API キー1つ、一度だけ |
対象となるハンドル | あなたが管理するアカウント | 任意の公開ハンドル |
投稿とメッセージング | 対応。それが目的 | 非対応 |
出力 | 実行中のアカウントに限定 | 任意の公開ハンドルの JSON。ハッシュタグとメンションもパース済み |
実行するもの | ローカルの Python または Node プロセス | URL とヘッダー |
コスト | 無料 | 1回の呼び出しにつき10クレジット |
2つの行が決め手になります。投稿、コメント、返信が必要な場合、このサーバーはまったく役に立ちません。関係のない100のハンドルにわたって同じフィールドが必要な場合、自分の認証情報を中心に構築されたサーバーも役に立ちません。
決め手となる軸は、完成度ではなく範囲です。自分のログインを中心に構築されたサーバーは、出力がどれほど優れていても、あなたが管理するアカウントにしか到達できません。このサーバーは任意の公開ハンドルに対して同じ質問に答えます。フィールドはパース済みの配列で返るため、集計にコストはかかりません。
このサーバーが行わないこと。 コメントも、ストーリーも、フィードが報告する範囲を超えるリールも、ダイレクトメッセージも、ハッシュタグや場所の検索もなく、書き込むものもありません。2つのものを得意に読み取ります。
FAQ
Instagram MCP サーバーとは何ですか?
AI クライアントが呼び出せるツールとして Instagram データを公開するサーバーです。クライアントは Model Context Protocol を介してツール呼び出しを送信し、サーバーはデータを取得して構造化された JSON を返します。モデルはその結果を扱い、HTML のページを目にすることはありません。このサーバーは読み取り専用のツールを2つ公開し、リモートで動作します。クライアントは URL に接続するだけで、ローカルプロセスは起動しません。
公式の Instagram MCP サーバーはありますか?
Meta は汎用のものを公開していません。Meta 広告向けの公式 MCP はありますが、それが対象とするのは広告アカウントとキャンペーンであり、プロフィールや投稿データではありません。この分野の他のものはすべて、他の誰かによって作られています。
対象となるデータは何ですか?
公開アカウントを対象に、公開プロフィールのフィールドと公開投稿フィードをハンドル単位で取得します。非公開アカウントでも、ヘッダー、フォロワー数、フォロー数、private: true フラグは返されます。ただし、読み取る公開フィードがないため、自己紹介文も投稿も返されません。結果の使用方法については、Instagram の利用規約と、あなたに適用される法律の遵守を含め、あなたに責任があります。
何かをホストまたは実行する必要がありますか?
いいえ。これは streamable HTTP 上のリモート MCP サーバーです。インストールするものはなく、Python 環境も不要で、再起動するプロセスもありません。
データはライブですか、それともキャッシュですか?
ライブです。各呼び出しはリクエスト時に取得を行い、独自の requestMetadata.id を持ちます。同じ内容の呼び出しでも、保存されたコピーの再生ではなく、それぞれ別々の取得になります。フォロワー数やいいね数などのカウンターはアカウントを追跡し、アカウントの変化に合わせて変動します。
投稿はいくつ取得できますか?
1回の呼び出しにつき12件、Instagram の1ページ分です。さらに先のページは pagination.nextPageToken から取得します。公開アカウントの場合、プロフィール検索には同じ12件が追加コストなしで含まれます。そのため、短いフィードの質問では投稿の呼び出しがまったく不要なこともよくあります。
Instagram がマークアップを変更した場合はどうなりますか?
あなたの側では何も起こりません。私たちが変更を追跡し、レスポンススキーマを安定に保つため、フィールド名と型は変わりません。値がないフィールドは、存在して null になるのではなく、項目から欠落します。そのため、オプションフィールドはデフォルト値付きで読み取るべきです。
1つのサーバーを複数のプラットフォームで使用できますか?
はい。apis パラメータはリストを受け取り、?apis=instagram,tiktok,youtube とすると、エージェントに一度に3つのプラットフォームを提供します。
どのクライアントが動作しますか?
カスタムヘッダー付きの streamable HTTP をサポートする任意の MCP クライアントです。上記の設定はテスト済みです。OAuth をサポートするクライアントでは、代わりに URL をコネクタとして追加できます。
HasData リンク
製品ページとリクエストビルダー | |
サーバードキュメント | |
1つのサーバーに全57ツール | |
クライアントのチュートリアル | |
私たちがパースする他のプラットフォーム | |
プランとクレジットコスト | |
キーと利用方法 |
開発
このリポジトリは、リモートサーバーの設定とドキュメントです。ビルドステップはなく、コンテナ化するものもありません。
ただし、コントラクトテストは含まれています。README は特定のパラメータを持つ2つのツールを約束しています。しかし、上流のツールリストはここでのコミットなしに変更される可能性があり、その場合、このファイルはあなたに黙って嘘をつくことになります。テストはその約束を検証し、毎回のプッシュに加えて CI でも毎週実行されます。
HASDATA_API_KEY=your_key_here npm testPowerShell の場合:
$env:HASDATA_API_KEY = "your_key_here"; npm test最後のチェックは実際の呼び出しを行い、10クレジットを消費します。これは、正しい理由で失敗できるカナリアの価格です。ツールの一覧表示は空でないキーであれば成功します。ツールを一覧表示するだけのテストは、失効したキーでもグリーンのままです。
コントリビューション
ツールの表とレスポンスサンプルの修正が最も有用な貢献です。なぜなら、それらの部分はズレやすいからです。実行した呼び出しと取得したレスポンスを含めてください。フォークからのプルリクエストはキーなしでテストスイートを実行し、ライブチェックはレッドになる代わりにスキップされます。
ライセンス
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