Instagram帖子获取服务

一个基于Chrome登录会话的Instagram帖子获取服务,采用模块化架构和TypeScript实现,支持JSON-RPC 2.0通信和自动媒体下载。

  • by duhlink
  • TypeScript
  • 本地部署
  • 51 星标
  • 更新于
在 GitHub 查看 duhlink/instagram-server-next-mcp

使用说明

Instagram MCP服务器

一个模型上下文协议(MCP)服务器,用于使用Chrome现有的登录会话获取Instagram帖子。

特性

  • 模块化架构,关注点明确分离
  • 使用TypeScript实现类型安全
  • 改进了错误处理和日志记录
  • 可通过环境变量进行配置
  • 符合JSON-RPC 2.0的通信
  • 自动媒体下载和元数据生成
  • SEO友好描述生成

建筑

服务器采用模块化架构,结构如下:

src/
├── core/                      # Core MCP functionality
│   ├── mcp/                  # MCP server implementation
│   │   ├── server.ts        # Server class
│   │   ├── stdio.ts         # StdioServerTransport
│   │   └── index.ts         # Barrel exports
│   ├── types/               # Core type definitions
│   │   └── mcp.ts          # MCP types
│   └── utils/               # Utility functions
│       ├── config.ts        # Configuration management
│       └── errors.ts        # Error handling
├── features/                 # Feature modules
│   └── instagram/           # Instagram feature
│       ├── types.ts         # Instagram types
│       ├── utils/           # Feature utilities
│       │   ├── media.ts     # Media handling
│       │   ├── post.ts      # Post processing
│       │   └── seo.ts       # SEO generation
│       └── instagram.service.ts # Instagram service
├── services/                 # Shared services
│   └── browser/             # Browser service
│       ├── types.ts         # Browser types
│       └── browser.service.ts # Browser service
├── index.ts                 # Entry point
└── server.ts                # Main server class

配置

服务器需要以下环境变量:

  • CHROME_USER_DATA_DIR:包含登录会话的Chrome用户数据目录的路径

其他配置选项可通过配置管理器获得:

  • 浏览器设置(视口、超时)
  • Instagram设置(延迟、批量大小)
  • 保存目录和文件路径

用法

  1. 安装依赖项:

    npm install
    
  2. 构建服务器:

    npm run build
    
  3. 运行服务器:

    CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start
    

可用工具

get_stagram_post

从Instagram个人资料中获取最近的帖子。

参数:

  • username (必填):用于获取帖子的Instagram用户名
  • limit (可选):要获取的帖子数量(1-50)或“全部”
  • saveDir (可选):保存媒体文件和元数据的目录
  • delayBetweenPosts (可选):在处理帖子之间等待毫秒

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "call_tool",
  "params": {
    "name": "get_instagram_posts",
    "arguments": {
      "username": "example",
      "limit": 10
    }
  }
}

错误处理

服务器使用标准化的错误代码和消息:

  • INVALID_REQUEST:请求格式或参数无效
  • INVALID_PARAMS:参数缺失或无效
  • METHOD_NOT_FOUND:未知的方法或工具
  • INTERNAL_ERROR:服务器端错误

发展

  1. 以开发模式启动:

    npm run dev
    
  2. 运行门楣:

    npm run lint
    

对原始版本的改进

  1. 模块化架构

    • 明确区分关注点
    • 更好的代码组织
    • 更易于维护和扩展
  2. 类型安全

    • 全面的TypeScript类型
    • 更好地捕捉错误
    • 改进的IDE支持
  3. 错误处理

    • 标准化错误代码
    • 更好的错误消息
    • 正确的错误传播
  4. 配置

    • 集中式配置
    • 环境变量验证
    • 类型安全配置访问
  5. 代码质量

    • 一致的编码风格
    • 更好的文档
    • 改进日志记录
  6. 测试支持

    • 模块化设计支持测试
    • 依赖注入就绪
    • 清晰的界面

许可证

麻省理工学院