内容
# 📸 Instagram MCP 服务器
**从 Claude 控制你的 Instagram - 发布,分析,回复私信,管理评论。所有操作都通过聊天完成。**
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/jlowin/fastmcp)
[](https://render.com/deploy?repo=https://github.com/drashrafsaiyed-cyber/instagram-mcp)
---
<!-- 添加你的演示GIF:录制Claude Desktop控制Instagram并在屏幕上发布内容 -->
> 🎬 **演示GIF即将到来** — Claude 发布短视频,阅读分析数据,实时回复评论。
---
## 你可以做什么
用简单的英文询问Claude。它会处理API。
```
"显示我最近10条帖子,哪些帖子的影响力最大"
"发布这张图片,附上标题:星期一的激励 💪 #AI #Health"
"阅读今天的私信,为问题草拟回复"
"隐藏我最新短视频上的所有垃圾评论"
"我的账户本周的分析数据是什么?"
"哪个短视频的观看时间最长?"
```
---
## 用例
### 📊 内容创作者
- 早晨简报: *"查看昨天帖子的表现 — 影响力,保存,分享"*
- 策略: *"比较我最近5条短视频的影响力,告诉我哪些有效"*
- 发布准备: *"为这个健身帖子草拟3个标题选项"*
### 🏥 医生 / 专业人士
- 互动: *"专业地回复我最近帖子上的所有评论"*
- 增长跟踪: *"这个星期我增加了多少粉丝?"*
- 内容审核: *"列出这个月所有帖子及其互动率"*
### 🛍️ 小型企业
- 客户服务: *"显示过去24小时的私信,回复订单问题"*
- 发布: *"发布这个产品照片,附上标题和标签"*
- 分析: *"哪种类型的帖子(短视频/轮播图/照片)给我带来的影响力最大?"*
---
## 工具(共14个)
| 类别 | 工具 | 功能 |
|----------|------|-------------|
| **账户** | `get_account_info` | 粉丝数,简介,帖子数量 |
| | `update_profile` | 更新简介文本和/或网站URL |
| | `list_recent_media` | 最近N条帖子,附带互动统计 |
| | `get_account_insights` | 影响力,个人主页浏览量,粉丝增长 |
| **分析** | `get_media_insights` | 每篇帖子的影响力,保存数,观看数,互动数 |
| **发布** | `publish_photo` | 发布照片,附上标题和标签 |
| | `publish_reel` | 发布短视频 |
| | `publish_carousel` | 发布2-10张图片作为轮播图 |
| **评论** | `get_comments` | 读取帖子上的所有评论 |
| | `reply_to_comment` | 回复评论 |
| | `hide_comment` | 隐藏垃圾/不想要的评论 |
| | `delete_comment` | 永久删除评论 |
| **互动** | `like_media` | 点赞帖子或短视频 |
| | `unlike_media` | 取消点赞帖子或短视频 |
| | `like_comment` | 点赞评论 |
| **内容** | `delete_post` | 永久删除帖子 |
| **标签** | `search_hashtag` | 搜索公共帖子标签 |
| **事件** | `list_events` | 列出即将到来的事件 |
| | `create_event` | 创建新事件(健康讲座,工作坊) |
| **广告** | `get_ad_accounts` | 列出关联的广告账户 |
| | `get_ad_insights` | 获取广告花费,影响力,点击率 |
| **私信** | `list_conversations` | 列出活跃的私信线程 |
| | `get_messages` | 读取线程中的消息 |
| | `send_dm` | 回复私信(24小时窗口) |
| | `send_human_agent_dm` | 在7天的人机交互窗口内回复 |
---
## 快速开始
### 选项A — Claude 网页 + 移动端(推荐)
**1. 部署服务器(免费,2分钟):**
[](https://render.com/deploy?repo=https://github.com/drashrafsaiyed-cyber/instagram-mcp)
填写 `META_ACCESS_TOKEN` 和 `IG_USER_ID`。([如何获取这些 ↓](#获取你的token))
**2. 连接到Claude网页:**
- [claude.ai](https://claude.ai) → 设置 → 集成 → 添加集成
- 粘贴: `https://your-app-name.onrender.com/mcp`
**3. 完成。** 打开新的聊天窗口,尝试: *"显示我最近的Instagram帖子"*
---
### 选项B — Claude 桌面端(本地)
```bash
git clone https://github.com/drashrafsaiyed-cyber/instagram-mcp
cd instagram-mcp
uv sync
cp .env.example .env
# 用你的token和用户ID填充.env
uv run server.py
```
添加到 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"instagram": {
"command": "uv",
"args": ["--directory", "/path/to/instagram-mcp", "run", "server.py"],
"env": {
"META_ACCESS_TOKEN": "你的token",
"IG_USER_ID": "你的IG用户ID",
"ACCOUNT_NAME": "我的Instagram"
}
}
}
}
```
---
### 选项C — 多个Instagram账户(Claude 桌面端)
多次运行 **相同的服务器文件夹**,使用不同的环境变量。Claude会将每个账户视为独立的MCP服务器。
```json
{
"mcpServers": {
"instagram-personal": {
"command": "uv",
"args": ["--directory", "/path/to/instagram-mcp", "run", "server.py"],
"env": {
"META_ACCESS_TOKEN": "账户1的TOKEN",
"IG_USER_ID": "账户1的IG用户ID",
"ACCOUNT_NAME": "个人"
}
},
"instagram-business": {
"command": "uv",
"args": ["--directory", "/path/to/instagram-mcp", "run", "server.py"],
"env": {
"META_ACCESS_TOKEN": "账户2的TOKEN",
"IG_USER_ID": "账户2的IG用户ID",
"ACCOUNT_NAME": "我的商业账户"
}
}
}
}
```
Claude会显示每个账户的独立工具 — *"发布内容到我的商业账户"* 会自动选择正确的账户。
> 每个账户必须是 **商业或创作者** Instagram账户,并且必须作为测试者添加到你的Meta应用 → 用例 → 步骤2:生成访问令牌 → 添加账户。
---
## 获取你的Token
此服务器使用 **Instagram 登录 API** (`graph.instagram.com`) — 现代Meta方法,用于Instagram商业/创作者账户。
**步骤1 — 创建或打开你的Meta应用**
1. 前往 [developers.facebook.com](https://developers.facebook.com) → 我的应用
2. 创建新应用或打开现有应用
3. 添加用例: **"在Instagram上管理消息和内容"**
**步骤2 — 生成你的访问令牌**
1. 用例 → 自定义 → **Instagram登录API设置**
2. 步骤2: **生成访问令牌** → 点击生成,位于你的账户旁边
3. 复制令牌 → 这是你的 `META_ACCESS_TOKEN`
4. 你的数字 **IG用户ID** 显示在个人资料图片下方,位于同一页面
**步骤3 — 在令牌过期前刷新(60天)**
```bash
curl "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=YOUR_TOKEN"
```
或在项目文件夹中运行:
```bash
uv run python -c "
import httpx, re
from pathlib import Path
env = Path('.env').read_text()
token = re.search(r'META_ACCESS_TOKEN=(.+)', env).group(1).strip()
r = httpx.get('https://graph.instagram.com/refresh_access_token', params={'grant_type':'ig_refresh_token','access_token':token})
new = r.json()['access_token']
Path('.env').write_text(env.replace(token, new))
print('刷新。有效期:', r.json()['expires_in']//86400, '天')
"
```
---
## 要求
- Instagram **商业** 或 **创作者** 账户
- Meta开发者应用,包含 **"在Instagram上管理消息和内容"** 用例
- Python 3.11+
> **发布说明:** 图片和视频必须位于公开的HTTPS网址 — Instagram从您的网址获取内容。使用 [Cloudinary](https://cloudinary.com)(免费),S3或公开的GitHub原始网址。本地文件路径无效。
---
## 架构
```
Claude(网页/桌面端)
│ MCP协议
▼
instagram-mcp服务器(FastMCP 3.x,streamable-http或stdio)
│ HTTPS REST
▼
graph.instagram.com(Instagram登录API v21.0)
│
▼
你的Instagram账户
```
**为什么使用 `graph.instagram.com` 而不是 `graph.facebook.com`?**
此服务器使用较新的Instagram登录API,该API颁发 `IGAA...` 令牌,并通过 `graph.instagram.com` 路由。较旧的Facebook Graph API方法需要关联的Facebook页面和 `EAA...` 令牌。新流程更简单 — 只需您的Instagram账户,不需要Facebook页面。
---
## 故障排除
| 错误 | 修复方法 |
|-------|-----|
| `无法解析访问令牌` | 令牌过期或类型错误。按照上面的步骤重新生成。 |
| `insights` 代码100 | 无效的指标名称。指标在账户和媒体端点之间有所不同。 |
| `代码190` | 令牌过期。运行刷新命令。 |
| 容器处理失败 | 视频太长(>90秒),编解码器错误,或URL在首次获取后返回404。 |
| 空的私信列表 | 没有活跃的24小时消息窗口。有人需要先给你发送私信。 |
| Claude看不到工具 | 完全重启Claude桌面端(托盘图标 → 退出)。检查日志位于 `%APPDATA%\Claude\logs\`。 |
---
## 贡献
欢迎PR。如果你添加了新工具或修复了指标名称不匹配,请:
1. 在真实的Instagram账户上测试
2. 更新此README中的工具表格
3. 说明新工具需要哪种API权限
---
## 许可证
MIT — 免费使用,分叉和商业部署。
---
*使用 [FastMCP](https://github.com/jlowin/fastmcp) 构建 · 由 [Instagram Graph API](https://developers.facebook.com/docs/instagram-api) 提供支持*