Instagram MCP Server
Instagram MCP 服务器
一个托管的模型上下文协议(MCP)服务器,为 Claude、Cursor、Windsurf 以及任何其他 MCP 客户端提供两个只读的 Instagram 工具。按用户名查找公开资料,并以结构化 JSON 的形式浏览其公开帖子流。
它读取的是账户的公开数据。它不会以账户身份行事。整个流程中没有任何需要连接的内容,也不涉及你的任何账户。
https://mcp.hasdata.com/api/mcp?apis=instagram
目录
Related MCP server: instagram-mcp
你需要什么
一个支持带自定义请求头的流式 HTTP 的 MCP 客户端。从控制台获取 HasData API 密钥,免费创建、无需银行卡,试用额度覆盖 100 次调用。仅此而已。这是一个远程服务器。无需安装任何软件包,无需运行任何容器,也没有需要保持运行的本地进程。
快速开始
URL |
|
传输方式 | HTTP,流式 |
认证请求头 |
|
服务器 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 在传递参数时不经过 shell,而空格会拆分请求头。支持 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 的结果包含一个文本块,该文本本身是包含 url、status、text 和 json 的 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 两个头像 URL,以及数组 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 个积分。响应大小不改变价格。附带十二条帖子的资料与没有帖子的资料价格相同。
免费试用是30 天内 1,000 个积分,无需银行卡,即 100 次 Instagram 调用。之后,活跃账户在余额低于 100 时每天会获得 100 个积分的补充,因此低流量智能体可以无限期地在免费额度上运行。
付费套餐每月 49 美元起,包含 200,000 个积分,即 20,000 次调用。单价随用量下降,从入门套餐的每 1,000 次调用 2.45 美元降至 Business 的 0.99 美元、Growth 的 0.83 美元,以及最大的高用量套餐的 0.75 美元。
你的方案还设置了并发。免费试用允许每次 1 个请求,Startup 是 50 个、Growth 是 50 个、Startup 是 15 个、Business 是 30 个、Growth 是 50 个,高流量套餐从 200 到 1,500 不等。在任何无人值守的场景中,都要防御性地处理超出上限的情况,因为同时扩散到多个句柄的代理会先于你触顶。
每次翻页都要消耗一次调用。一个提示词在两个账号间遍历一百条帖子,就是 18 次调用、180 个积分。免费试用在画像对比上比深度抓取信息流更划算。
工具选择
?apis=instagram 正好暴露这两个工具。该参数接受列表形式,?apis=instagram,tiktok,youtube 能让你的代理同时获得三个社交平台。省略该参数,你就获得 HasData 暴露的全部内容,目前是 57 个工具。
通常,更精简的列表是更好的选择。一个在两个工具之间做选择的模型,比在五十七个之间做选择的模型更容易选对,而且工具描述本身在每一轮都会消耗上下文。
跨平台对比是扩大列表的常见原因。只要同时暴露 Instagram 和 TikTok 的句柄,同一个提示词就能同时问两个平台。
工具选择
?apis=instagram 恰好暴露这两个工具。该参数接受列表,?apis=instagram,tiktok,youtube 能一次为你的智能体提供三个社交平台。去掉该参数,你会得到 HasData 暴露的全部工具,目前是 57 个。
通常,精简的列表是更好的默认选择。模型在两个工具之间做选择时,比在五十七个之间选择时选对的概率更高,而且工具描述本身每一轮都会消耗上下文。
跨平台对比通常是扩大列表的理由。同时向 Instagram 账号和 TikTok 账号提问同一个问题,只要两者都已暴露,就只需要一次提示词。
工具选择对比
几乎每个 Instagram MCP 服务器都与这个服务器有所区别,这使得选择变得异常清晰。
流行的那些都是在操作账号。有些封装了 Instagram Graph API,用于发布帖子、读取评论并管理你管理的账号。其他的处理直接消息。那些互动分析服务器会按照它们自己的安装说明,在 env 块中要求提供 INSTAGRAM_USERNAME 和 INSTAGRAM_PASSWORD,因为它们会以你的身份登录并浏览。当任务是运行你自己拥有的账号时,这些工具都适用。
这个服务器从不以任何人的身份登录,这是另一回事。它回答的每个问题都关于你不拥有的账号,而且无论哪个账号,调用都是相同的。
账号运营型服务器 | 本服务器 | |
充当的角色 | 通过 token 或 session 以你的账号身份运行 | 无身份,只读取公开数据 |
你需要配置的内容 | 每账号的凭据或 Graph API 应用 | 一个 API 密钥,只需一次 |
覆盖的句柄 | 你管理的账号 | 任何公开句柄 |
发布与消息 | 是的,这正是它的用途 | 不支持 |
输出 | 仅限于你运行的账号 | 任何公开句柄的 JSON,解析出话题标签和提及 |
运行方式 | 本地运行 Python 或 Node 进程 | 一个 URL 和一个请求头 |
成本 | 免费 | 每次调用 10 积分 |
两行就决定了取舍。如果你需要发布、评论或回复,这个服务器完全帮不上忙。如果你需要对一百个与你毫无关系的句柄获取相同的字段,一个围绕你自己的凭据构建的服务器同样帮不了你。
决定性的轴是范围,而不是完善度。围绕你自己的登录信息构建的服务器,无论其输出多么出色,也只能覆盖你管理的账号。这个服务器能对任意公开句柄回答相同的问题,并且返回的字段是解析好的数组,聚合起来不花任何成本。
这个服务器不做什么。 没有评论、没有动态、没有信息流报告中未包含的 Reels,没有私信,也没有任何写入操作。它只读取两样东西。
常见问题
什么是 Instagram MCP 服务器?
一个将 Instagram 数据以 AI 客户端可调用的工具形式暴露出来的服务器。客户端通过 Model Context Protocol(模型上下文协议)发送工具调用,服务器获取数据并返回结构化 JSON,模型处理结果,永远看不到 HTML 页面。这个服务器暴露两个只读工具,并且远程运行。客户端连接到 URL,不启动任何本地进程。
有官方的 Instagram MCP 服务器吗?
Meta 没有发布通用型的。Meta 广告有一个官方 MCP,它涵盖广告账户和广告系列,不涉及画像和帖子数据。其他一切都是别人构建的。
哪些数据在范围内?
公开画像字段和公开帖子信息流,针对公开账号,按句柄查询。私有账号仍会返回其头图、关注者和关注数,以及一个 private: true 标志,但没有简介,也没有帖子,因为没有公开信息流可读。你需要对自己使用结果的方式负责,包括遵守 Instagram 的条款以及适用于你的法律。
我需要自行托管或运行什么吗?
不需要。这是一个基于流式 HTTP 的远程 MCP 服务器。无需安装任何东西,无需 Python 环境,也无需重启进程。
数据是实时的还是缓存的?
实时的。每次调用都在请求时抓取数据,并带有自己的 requestMetadata.id。两次相同的调用是两次独立的抓取,而不是对已存副本的回放。粉丝数和点赞数等计数器会跟随账号实时变动。
我能获取多少条帖子?
每次调用最多 12 条,即一个 Instagram 页面,后续页面通过 pagination.nextPageToken 获取。对于公开账号,主页信息查询会免费附带同样的 12 条帖子,所以简单的信息流问题通常连帖子调用都不需要。
Instagram 更改其页面标记时会发生什么?
你这边无需做任何事。我们会跟进并保持响应结构稳定,字段名和字段类型保持不变。无值的字段会从条目中缺席而不是以空值出现,因此可选字段请务必用默认值来读取。
我能获取多少条帖子?
每次调用 12 条,一个 Instagram 页面,更多页面通过 pagination.nextPageToken 获取。对于公开账号,账号信息查询已包含这 12 条而无需额外费用,所以简短的动态问题通常根本不需要单独的帖子调用。
这些工具需要我自行托管或运行吗?
不需要。这是一个基于流式 HTTP 的远程 MCP 服务器。无需安装任何东西,无需 Python 环境,无需重启任何进程。
数据是实时的还是缓存的?
实时。每次调用都在请求时抓取,并带有自己的 requestMetadata.id。两次相同的调用是两次独立的抓取,而不是对已存副本的重放。粉丝数和点赞数等计数会随账号实时变动。
FAQ
有官方的 Instagram MCP 服务器吗?
Meta 没有发布通用型的。有一个面向广告的官方 MCP,覆盖广告账号和广告系列,而不是主页信息和帖子数据。这个领域里的其他一切都是别人构建的。
数据范围是什么?
公开账号的公开主页字段,以及按句柄访问的公开帖子流。对于私密账号,仍然会返回其主页头部、关注/粉丝数以及 private: true 标志,但没有简介,也没有帖子,因为并没有公开的信息流可读。你对自己如何使用这些结果负责,包括遵守适用的法律。
我需要自行托管吗?
不需要。这是一个远程 MCP 服务器,基于流式 HTTP。无需安装,没有 Python 环境,没有需要重启的进程。
数据是实时的还是缓存的?
实时的。每次调用都在请求时抓取,并带有自己的 ID。两次相同的调用是两次独立的抓取,而不是一次抓取的回放。粉丝数和点赞数等计数反映的是请求时刻的数值。
我能获取多少帖子?
每次调用 12 条,一个 Instagram 页面,更多页面通过 pagination.nextMaxId 获取。对于公开账号,主页查询已包含同样这 12 条帖子且不额外收费。
当 Instagram 改变其标记时会怎样?
我们跟踪变化并保持响应结构稳定,字段名和字段类型不变。没有值的字段会从条目中缺席,而不是以 null 形式存在,这就是为什么用默认值读取这些字段很重要。
我能用一个服务器处理多个平台吗?
可以。apis 参数接受列表,?apis=instagram,tiktok,youtube 会一次性暴露所有平台。去掉参数则暴露全部 57 个工具。
哪些客户端可用?
任何支持带自定义请求头的流式 HTTP 的 MCP 客户端都可以。上面配置都是经过测试的。支持 OAuth 的客户端可以改为把 URL 添加为连接器。
HasData 链接
产品页面和请求构建器 | |
服务器文档 | |
一个服务器内的全部 57 个工具 | |
客户端演练 | |
我们解析的其他平台 | |
套餐与积分费用 | |
密钥与管理 |
开发
这个仓库是配置和文档,没有构建步骤,也没有需要容器化的东西。
README 承诺了两个带特定参数的工具,但上游工具列表可能会在此处没有提交的情况下发生变化,那会让这个文件悄悄过时。测试会断言该承诺,并在每次推送及每周运行。
HASDATA_API_KEY=your_key_here npm testGXP12 最后一项检查会发起一次真实调用,花费 10 个积分——这是值得为正确原因而失败的探针价格。只要密钥非空,列出工具就能成功,而没有密钥的测试就会跳过实时检查而不是失败。
贡献
对工具表和响应示例的纠错是最有价值的贡献,因为这些部分最容易漂移。请附上你发出的调用和收到的响应。来自 fork 的拉取请求在无密钥的情况下运行整个套件,实时检查会跳过而不是失败。
许可证
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