Instagram-MCP服务器
一个通过模型上下文协议(MCP),允许使用Chrome现有的登录会话来获取Instagram帖子的服务器。
服务介绍
Instagram MCP 服务器
一个使用 Chrome 现有登录会话获取 Instagram 帖子的 Model Context Protocol (MCP) 服务器。
特性
- 模块化架构,职责分离清晰
- 使用 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 设置(延迟、批量大小)
- 保存目录和文件路径
使用方法
-
安装依赖项:
npm install -
构建服务器:
npm run build -
运行服务器:
CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start
可用工具
get_instagram_posts
从 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 -
运行 linter:
npm run lint
相对于原始版本的改进
-
模块化架构
- 职责分离清晰
- 更好的代码组织
- 更容易维护和扩展
-
类型安全
- 全面的 TypeScript 类型
- 更好的错误捕获
- 改进的 IDE 支持
-
错误处理
- 标准化的错误代码
- 更好的错误消息
- 正确的错误传播
-
配置
- 集中的配置
- 环境变量验证
- 类型安全的配置访问
-
代码质量
- 一致的编码风格
- 更好的文档
- 改进的日志记录
-
测试支持
- 模块化设计便于测试
- 准备好依赖注入
- 清晰的接口
许可证
MIT