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 开发,提供类型安全保障,减少运行时错误。
  • 错误处理: 具备完善的错误处理机制,能够返回标准化的错误信息。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm (Node 包管理器)。
  2. 克隆仓库: 使用 Git 克隆仓库到本地:
    git clone https://github.com/MCP-Mirror/duhlink_instagram-server-next-mcp.git
    cd duhlink_instagram-server-next-mcp
  3. 安装依赖: 在仓库根目录下运行以下命令安装项目依赖:
    npm install
  4. 构建项目: 运行以下命令编译 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 浏览器。

基本使用方法

  1. 启动 MCP 服务器: 在配置好 'CHROME_USER_DATA_DIR' 环境变量后,通过 MCP 客户端启动服务器。

  2. 客户端发送 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"
        }
      }
    }
  3. 服务器返回 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