Instagram MCP Server 使用说明
项目简介
本项目 'duhlink_instagram-server-next-mcp' 是一个基于 Model Context Protocol (MCP) 构建的服务器端应用,旨在为大型语言模型(LLM)客户端提供访问 Instagram 公开用户资料帖子的能力。它利用已登录 Chrome 浏览器的会话来抓取数据,避免了复杂的身份验证流程。
主要功能点
- 抓取 Instagram 帖子: 能够根据 Instagram 用户名抓取最新的帖子,包括图片和视频内容。
- 数据保存: 支持将抓取的媒体文件(图片、视频)和元数据保存到本地目录,方便后续使用和分析。
- JSON-RPC 通信: 遵循 MCP 协议,使用标准的 JSON-RPC 2.0 协议与客户端进行通信。
- 工具化调用: 提供 'get_instagram_posts' 工具,客户端可以通过调用该工具来触发 Instagram 帖子抓取任务。
- 模块化架构: 采用模块化设计,代码结构清晰,易于维护和扩展。
- 类型安全: 使用 TypeScript 开发,提供类型安全保障,减少运行时错误。
- 错误处理: 具备完善的错误处理机制,能够返回标准化的错误信息。
安装步骤
- 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm (Node 包管理器)。
- 克隆仓库: 使用 Git 克隆仓库到本地:
git clone https://github.com/MCP-Mirror/duhlink_instagram-server-next-mcp.git cd duhlink_instagram-server-next-mcp - 安装依赖: 在仓库根目录下运行以下命令安装项目依赖:
npm install - 构建项目: 运行以下命令编译 TypeScript 代码:
npm run build
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下 JSON 格式信息以连接到此 MCP 服务器。请注意,MCP客户端无需配置服务器的启动命令,而是直接配置连接信息。以下是一个 MCP 客户端配置示例,你需要根据实际情况调整 'args' 字段中的参数。
{ "serverName": "instagram-server", // 服务器名称,与仓库配置一致 "command": "node", // 启动服务器的命令,通常为 node "args": [ // 启动参数 "build/index.js" // 服务器入口文件路径 ], "env": { // 环境变量 "CHROME_USER_DATA_DIR": "/path/to/your/chrome/profile" // Chrome 用户数据目录,包含已登录的 Instagram 会话 } }
参数说明:
- '"serverName"': MCP 服务器的名称,客户端用此名称标识服务器。
- '"command"': 运行服务器端程序的命令,对于 Node.js 项目通常是 '"node"'。
- '"args"': 传递给 'command' 的参数列表,指向服务器的入口文件。
- '"env"': 环境变量配置,'CHROME_USER_DATA_DIR' 是必需的环境变量,需要设置为你的 Chrome 浏览器用户数据目录的路径。
- 如何找到 Chrome 用户数据目录: 这取决于你的操作系统。通常可以在 Chrome 地址栏输入 'chrome://version/' 查看 "Profile Path"。
重要提示:
- Chrome 用户数据目录: 'CHROME_USER_DATA_DIR' 必须指向包含已登录 Instagram 账号的 Chrome 用户数据目录。服务器会利用这个目录中的会话信息来访问 Instagram,无需重新登录。
- Playwright 依赖: 项目使用了 Playwright 进行浏览器自动化,可能需要预先安装 Playwright 依赖的浏览器。如果遇到问题,可以尝试运行 'npx playwright install chrome' 安装 Chromium 浏览器。
基本使用方法
-
启动 MCP 服务器: 在配置好 'CHROME_USER_DATA_DIR' 环境变量后,通过 MCP 客户端启动服务器。
-
客户端发送 JSON-RPC 请求: MCP 客户端发送 JSON-RPC 请求到服务器,调用 'call_tool' 方法,并指定工具名称为 'get_instagram_posts',同时提供必要的参数,例如:
{ "jsonrpc": "2.0", "id": 1, "method": "call_tool", "params": { "name": "get_instagram_posts", "arguments": { "username": "instagram_username", // 要抓取的 Instagram 用户名 "limit": 10 // (可选) 抓取帖子数量限制,可以是数字 (1-50) 或 "all" } } } -
服务器返回 JSON-RPC 响应: 服务器处理请求后,会返回包含抓取结果的 JSON-RPC 响应。响应内容会包含抓取的帖子数据,通常以 JSON 字符串形式封装在 'content' 字段中。
可用工具 (Tools):
-
'get_instagram_posts': 抓取 Instagram 用户最新的帖子。
参数:
- 'username' (required): Instagram 用户名 (字符串)。
- 'limit' (optional): 抓取的帖子数量限制 (数字 1-50 或字符串 "all")。如果为数字,则抓取指定数量的帖子;如果为 "all",则抓取所有可加载的帖子 (受服务器配置限制,可能分批次返回)。
- 'saveDir' (optional): 本地保存媒体文件和元数据的目录路径 (字符串)。
- 'delayBetweenPosts' (optional): 抓取帖子之间的时间间隔,单位毫秒 (数字)。
错误处理:
服务器使用标准化的错误代码和消息,客户端可以根据错误代码进行相应的处理。常见的错误代码包括:
- 'INVALID_REQUEST': 无效的请求格式或参数。
- 'INVALID_PARAMS': 缺少或无效的参数。
- 'METHOD_NOT_FOUND': 未知的方法或工具名称。
- 'INTERNAL_ERROR': 服务器内部错误。
信息
分类
网页与API