项目简介
Instagram MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,专门用于从 Instagram 平台抓取公开的用户帖子数据。它利用已登录 Chrome 浏览器的会话信息,无需用户提供 Instagram 账号密码,即可安全地获取数据。此服务器实现了 MCP 协议,可以作为 LLM 应用的上下文信息提供者,使 LLM 能够调用工具获取 Instagram 数据,从而扩展 LLM 在社交媒体分析和内容创作方面的能力。
主要功能点
- Instagram 数据抓取: 能够抓取指定 Instagram 用户公开的帖子内容,包括图片和视频。
- 工具化接口: 通过 MCP 协议提供 'get_instagram_posts' 工具,方便 LLM 客户端调用。
- 模块化架构: 代码结构清晰,易于维护和扩展,核心 MCP 功能和 Instagram 特性模块分离。
- 类型安全: 使用 TypeScript 开发,提高代码质量和可维护性。
- 错误处理: 具备完善的错误处理机制,返回标准化的错误代码和消息。
- 配置灵活: 通过环境变量和配置文件进行服务器参数设置,例如 Chrome 用户数据目录等。
- 媒体下载: 自动下载帖子中的媒体文件(图片、视频)及其元数据。
- JSON-RPC 通信: 采用 JSON-RPC 2.0 协议与客户端进行通信。
- Stdio 传输: 支持 Stdio 作为传输协议,方便集成和部署。
安装步骤
- 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm (Node Package Manager)。
- 克隆仓库: 使用 Git 克隆 GitHub 仓库到本地:
git clone https://github.com/duhlink/instagram-server-next-mcp.git cd instagram-server-next-mcp - 安装依赖: 在仓库根目录下运行 npm 命令安装项目依赖:
npm install - 构建项目: 运行 npm 命令构建项目,将 TypeScript 代码编译为 JavaScript 代码:
npm run build
服务器配置
MCP 客户端需要配置以下信息才能连接到 Instagram MCP Server。请将以下 JSON 配置添加到你的 MCP 客户端配置中。
{ "serverName": "instagram-server", "command": "node", "args": [ "dist/index.js" ], "env": { "CHROME_USER_DATA_DIR": "/path/to/your/chrome/user-data-dir" }, "description": "Instagram 数据抓取 MCP 服务器" }
参数注释:
- 'serverName': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。 例如 '"instagram-server"'。
- 'command': 启动服务器的命令,通常为 'node',表示使用 Node.js 运行时环境。
- 'args': 启动服务器命令的参数数组。
- '"dist/index.js"': 指向编译后的服务器入口文件路径。
- 'env': 环境变量配置,用于服务器运行时环境。
- '"CHROME_USER_DATA_DIR"': 重要参数,Chrome 用户数据目录的路径。请务必替换为你的 Chrome 用户数据目录的实际路径。该目录包含了 Chrome 浏览器的用户配置、书签、历史记录、登录会话等信息。服务器需要访问此目录以利用已登录的 Instagram 会话。你可以在 Chrome 浏览器地址栏输入 'chrome://version/' 查找 "Profile Path",其父目录即为 User Data Dir。
- 'description': 服务器描述,用于在 MCP 客户端界面显示服务器的用途说明。例如 '"Instagram 数据抓取 MCP 服务器"'。
注意:
- 请确保 Chrome 浏览器已登录 Instagram 账号,并且指定的 'CHROME_USER_DATA_DIR' 路径正确。
- 首次运行服务器前,请先手动启动 Chrome 浏览器并登录 Instagram 账号,确保会话信息已保存到用户数据目录中。
基本使用方法
-
启动服务器: 在配置好 'CHROME_USER_DATA_DIR' 环境变量后,在仓库根目录下运行以下命令启动服务器:
CHROME_USER_DATA_DIR=/path/to/your/chrome/user-data-dir npm start请将 '/path/to/your/chrome/user-data-dir' 替换为你的 Chrome 用户数据目录的实际路径。 或者,你也可以直接在 MCP 客户端中使用上面提供的 JSON 配置来启动服务器。
-
MCP 客户端请求: 使用 MCP 客户端,通过 JSON-RPC 协议向服务器发送请求。例如,调用 'get_instagram_posts' 工具获取 Instagram 帖子。
示例请求 (JSON-RPC 格式):
{ "jsonrpc": "2.0", "id": 1, "method": "call_tool", "params": { "name": "get_instagram_posts", "arguments": { "username": "instagram", "limit": 5 } } }这个请求会调用 'get_instagram_posts' 工具,抓取 Instagram 官方账号('username: "instagram"')的最近 5 个帖子('limit: 5')。
-
查看响应: 服务器会返回 JSON-RPC 响应,包含抓取到的 Instagram 帖子数据。响应内容会根据工具的定义和执行结果而有所不同。
示例响应 (JSON 格式):
{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "json", "json": { "posts": [ /* ... 抓取到的帖子数据 ... */ ], "pagination": { /* ... 分页信息 ... */ } } } ] } }响应中的 'content' 字段包含了服务器返回的内容,通常是 JSON 格式的帖子数据。
可用工具
-
get_instagram_posts: 获取指定 Instagram 用户最近的帖子。
参数:
- 'username' (必填): 要抓取帖子的 Instagram 用户名。
- 'limit' (可选): 要抓取的帖子数量,可以是数字 (1-50) 或 '"all"' (抓取所有帖子,但实际受代码限制)。 默认为 3。
- 'startFrom' (可选): 起始索引,用于分页抓取。默认为 0。
示例请求:
{ "jsonrpc": "2.0", "id": 1, "method": "call_tool", "params": { "name": "get_instagram_posts", "arguments": { "username": "example_username", "limit": 10 } } }
错误处理
服务器使用标准化的错误代码和消息,例如:
- 'INVALID_REQUEST': 无效的请求格式或参数。
- 'INVALID_PARAMS': 缺少或无效的参数。
- 'METHOD_NOT_FOUND': 未知的方法或工具。
- 'INTERNAL_ERROR': 服务器内部错误。
当发生错误时,服务器会返回 JSON-RPC 错误响应,客户端可以根据错误代码和消息进行相应的处理。
信息
分类
网页与API