这是一个使用 Chrome 现有登录会话抓取 Instagram 帖子的 Model Context Protocol (MCP) 服务器。
服务器遵循模块化架构,结构如下:
src/
├── core/ # 核心 MCP 功能
│ ├── mcp/ # MCP 服务器实现
│ │ ├── server.ts # 服务器类
│ │ ├── stdio.ts # StdioServerTransport
│ │ └── index.ts # Barrel 导出
│ ├── 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 用户数据目录路径通过配置管理器可获得其他配置选项:
安装依赖:
npm install
构建服务器:
npm run build
运行服务器:
CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start
从 Instagram 账户获取最近的帖子。
参数:
username(必需):要获取帖子的 Instagram 用户名limit(可选):要获取的帖子数量(1-50)或 "all"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: 服务器端错误启动开发模式:
npm run dev
运行代码检查器:
npm run lint
模块化架构
类型安全性
错误处理
配置
代码质量
测试支持
MIT