Instagram MCP 服务器是一个借助 Chrome 现有登录会话来抓取 Instagram 帖子的模型上下文协议(MCP)服务器。它能有效利用 Chrome 的登录状态,实现对 Instagram 帖子的抓取操作,为相关数据获取提供了便利。
npm install
npm run build
CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start
{
"jsonrpc": "2.0",
"id": 1,
"method": "call_tool",
"params": {
"name": "get_instagram_posts",
"arguments": {
"username": "example",
"limit": 10
}
}
}
$ npm start -- get_instagram_posts --username example --limit 10
{
"status": "success",
"result": {
"posts": [
{
"id": "post_id_1",
"url": "https://www.instagram.com/post/1234567890/",
"username": "example",
"caption": "这是一个示例帖子。",
"likes": 123,
"comments": 45
}
// 其他帖子...
]
}
}
服务器采用模块化架构,具体结构如下:
src/
├── core/ # 核心 MCP 功能
│ ├── mcp/ # MCP 服务器实现
│ │ ├── server.ts # 服务器类
│ │ ├── stdio.ts # StdioServerTransport
│ │ └── index.ts # 导出桶
│ ├── types/ # 核心类型定义
│ │ └── mcp.ts # MCP 类型
│ └── utils/ # 工具函数
│ ├── config.ts # 配置管理
│ └── errors.ts # 错误处理
├── features/ # 功能模块
│ └── instagram/ # Instagram 功能
│ ├── types.ts # Instagram 类型
│ ├── utils/ # 功能工具
│ │ ├── media.ts # 媒体处理
│ │ ├── post.ts # 帖子处理
│ │ └── seo.ts # SEO 生成
│ └── instagram.service.ts # Instagram 服务
├── services/ # 共享服务
│ └── browser/ # 浏览器服务
│ ├── types.ts # 浏览器类型
│ └── browser.service.ts # 浏览器服务
├── index.ts # 入口点
└── server.ts # 主服务器类
服务器需要以下环境变量:
CHROME_USER_DATA_DIR
:包含登录会话的 Chrome 用户数据目录路径此外,通过配置管理器还有其他可用的配置选项:
从 Instagram 个人资料中抓取最近的帖子。 参数:
username
(必填):要抓取的 Instagram 用户名limit
(可选):要抓取的帖子数量(1 - 50)或 "all"saveDir
(可选):保存媒体文件和元数据的目录delayBetweenPosts
(可选):处理帖子之间的等待时间(以毫秒为单位)服务器使用标准化的错误代码和消息:
ERR_NO_API_KEY
:未设置 API 密钥ERR_INVALID_ARGUMENT
:无效参数ERR_DATABASE_ERROR
:数据库错误ERR_AUTHENTICATION_FAILED
:身份验证失败ERR_NETWORK
:网络问题服务器返回以下退出状态:
0
:成功1
:一般错误2
:配置错误3
:认证错误4
:数据库错误5
:网络错误服务器的模块化架构使得各个功能模块相互独立,便于开发和维护。核心 MCP 功能、Instagram 功能以及共享服务都被封装在不同的模块中,通过明确的接口进行交互。
使用 TypeScript 为代码添加了类型检查,确保了代码的正确性和可维护性。在不同的模块中,都定义了明确的类型,避免了因类型不匹配而导致的错误。
服务器对错误进行了统一的处理,使用标准化的错误代码和消息,方便开发者快速定位和解决问题。同时,详细的日志记录也为调试和监控提供了有力的支持。
通过环境变量和配置管理器,服务器可以灵活地进行配置。不同的环境可以使用不同的配置,提高了服务器的适应性。
服务器遵循 JSON - RPC 2.0 通信协议,使得与其他系统的交互变得更加简单和规范。客户端可以通过发送符合该协议的请求来调用服务器的功能。
服务器能够自动下载媒体文件并生成元数据,这一功能通过专门的工具函数实现,确保了数据的完整性和可用性。
服务器可以生成 SEO 友好的描述,这有助于提高搜索引擎的收录和排名。通过对帖子内容的分析和处理,生成符合 SEO 规则的描述信息。
⚠️ 重要提示
- 请确保安装了 Node.js 和 npm,这是服务器运行的基础环境。
- 配置文件可能包含敏感信息,如 API 密钥等,应妥善保管,避免信息泄露。
- 处理大量数据时,建议启用分页功能,以提高性能和稳定性。