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设置(延迟、批量大小)
- 保存目录和文件路径
用法
- 安装依赖项:
npm install- 构建服务器:
npm run build- 运行服务器:
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:服务器端错误
发展
- 以开发模式启动:
npm run dev- 运行门楣:
npm run lint对原始版本的改进
- 模块化架构
- 明确区分关注点 - 更好的代码组织 - 更易于维护和扩展
- 类型安全
- 全面的TypeScript类型 - 更好地捕捉错误 - 改进的IDE支持
- 错误处理
- 标准化错误代码 - 更好的错误消息 - 正确的错误传播
- 配置
- 集中式配置 - 环境变量验证 - 类型安全配置访问
- 代码质量
- 一致的编码风格 - 更好的文档 - 改进日志记录
- 测试支持
- 模块化设计支持测试 - 依赖注入就绪 - 清晰的界面
许可证
麻省理工学院
