使用说明
X/推特MCP服务器
一种模型上下文协议(MCP)服务器,通过使用Playwright的浏览器自动化提供非官方X/Twitter API访问。该服务器使AI代理和应用程序能够以编程方式与X/Twitter交互,以实现内容创建、抓取和社交媒体自动化。
🚀 特性
内容创作与互动
- 推特和帖子:在媒体支持下发布单条推文或多条推文
- 帖子互动:喜欢,不喜欢,转发,取消推特,书签,引用推特,回复帖子
- 评论管理:喜欢、不喜欢、回复和编辑评论
- 媒体支持:上传图片、视频和GIF并将其附加到推文中
内容抓取与分析
- 时间线报废:从“For You”和“Follower”时间线中提取帖子
- 轮廓报废:获取全面的用户资料数据和最近的帖子
- 搜索功能:高级搜索,可过滤病毒内容、特定用户和日期范围
- 评论删除:从特定帖子中提取评论和回复
- 热门话题:检索当前热门话题和标签
MCP集成
- 双重运输支持:适用于stdio和HTTP/SSE传输
- 基于工具的界面:20多种工具可供AI代理与X/Twitter交互
- 结构化响应:JSON格式的响应,包含全面的元数据
- 错误处理:具有描述性错误消息的稳健错误处理
📋 先决条件
- Node.js 18+
- 有效的X/Twitter帐户凭据
- Docker(可选,用于容器化部署)
快速开始
- 将此配置添加到您的Claude Desktop配置文件中:
视窗: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"x-mcp": {
"command": "npx",
"args": ["-y", "@barresider/x-mcp"],
"env": {
"TWITTER_USERNAME": "your_twitter_username",
"TWITTER_PASSWORD": "your_twitter_password"
}
}
}
}
使用代理(可选):
{
"mcpServers": {
"x-mcp": {
"command": "npx",
"args": ["-y", "@barresider/x-mcp"],
"env": {
"TWITTER_USERNAME": "your_twitter_username",
"TWITTER_PASSWORD": "your_twitter_password",
"PROXY_URL": "http://proxy-server:port"
}
}
}
}
- 重新启动克劳德桌面
就是这样!Claude现在可以通过25多种强大的工具与X/Twitter进行交互,包括:
tweet:发布带有可选媒体的新推文thread:发布多条推文search_twitter:使用高级过滤器搜索推文scrape_profile:获取全面的用户资料数据scrape_timeline:从时间线中提取帖子like_post,retweet_post,bookmark_post:与帖子互动- 还有更多用于全面的X/Twitter自动化
示例用法
试着问克劳德:
- “你能发一条推特说‘克劳德你好!’吗?”
- “你能搜索关于Claude AI的推文吗?”
- “你能抓取埃隆·马斯克的个人资料,并向我展示他最近的5条推文吗?”
- “你能发布一条关于人工智能好处的帖子吗?”
🛠️ 安装
本地开发安装
- 克隆存储库:
git clone <repository-url>
cd x-mcp
- 安装依赖项:
npm install
- 构建项目:
npm run build
Docker安装
- 构建Docker镜像:
docker build -t x-mcp .
- 或者使用Docker Compose:
docker-compose --profile mcp up --build
⚙️ 配置
环境变量
创建一个 .env 项目根目录中的文件:
# Required: X/Twitter credentials
TWITTER_USERNAME=your_username
TWITTER_PASSWORD=your_password
# Optional: Proxy configuration
PROXY_URL=http://proxy-server:port # Full proxy URL (supports http/https)
# or with authentication
PROXY_URL=http://username:password@proxy-server:port
# or separately
PROXY_URL=http://proxy-server:port
PROXY_USERNAME=proxy_username # Optional: separate username
PROXY_PASSWORD=proxy_password # Optional: separate password
# Optional: MCP server configuration
MCP_TRANSPORT=stdio # Options: stdio, sse, http
MCP_PORT=3000 # Port for HTTP/SSE transport
# Optional: Directory for authentication state (default: playwright/.auth)
AUTH_DIR=playwright/.auth
身份验证设置
- (可选)创建身份验证目录或设置
AUTH_DIR环境变量:
export AUTH_DIR=/path/to/auth/dir
mkdir -p "${AUTH_DIR:-playwright/.auth}"
- 登录X/Twitter(存储会话以供重用):
npm run cli login
# or
node dist/cli.js login
🔧 可用的MCP工具
该服务器提供25多种工具,用于全面的X/Twitter交互:
身份验证和设置
login-使用X/Twitter进行身份验证
内容创建
tweet-发布一条带有可选媒体的推文thread-发布多条推文reply_to_post-对特定帖子的回复quote_tweet-引用带有附加文本的推文
帖子互动
like_post/unlike_post-喜欢/不喜欢的帖子retweet_post/unretweet_post-转发/取消转发帖子bookmark_post/unbookmark_post-书签管理
评论互动
like_comment_by_id/unlike_comment_by_id-喜欢/不喜欢评论reply_to_comment_by_id-对评论的回复replace_comment_by_id-编辑评论(如果支持)
内容刮擦
scrape_posts-从当前页面删除帖子scrape_profile-获取用户资料和最近的帖子scrape_comments-从帖子中提取评论scrape_timeline-为你刮胡子/遵循时间表scrape_trending-获取热门话题search_twitter-一般搜索功能search_viral-以最低参与度搜索病毒式传播的内容
📊 数据结构
推特帖子
interface TwitterPost {
postId: string;
author: TwitterUser;
content: string;
timestamp: Date;
media: TwitterMedia[];
metrics: PostMetrics;
engagementRate: number;
isRetweet?: boolean;
retweetedFrom?: TwitterUser;
quotedPost?: TwitterPost;
url: string;
}
推特个人资料
interface TwitterProfile extends TwitterUser {
bannerUrl?: string;
bio?: string;
location?: string;
website?: string;
joinedDate?: Date;
followingCount: number;
followersCount: number;
postsCount: number;
isFollowing?: boolean;
isFollowedBy?: boolean;
latestPosts?: TwitterPost[];
}
PostMetrics
interface PostMetrics {
likesCount: number;
retweetsCount: number;
quotesCount: number;
repliesCount: number;
impressionsCount: number;
bookmarksCount: number;
}
🔒 安全与最佳实践
速率限制
- 实现请求之间的延迟,以避免速率限制
- 对刮擦操作使用合理的限制
- 监控速率限制响应
认证
- 将凭据安全地存储在环境变量中
- 会话数据存储在由指定的目录中
AUTH_DIR环境变量(默认值playwright/.auth/) - 可能需要定期重新验证
错误处理
- 所有操作都包括全面的错误处理
- 用于故障排除的描述性错误消息
- 缺失元素的优雅退化
代理配置
- 支持所有浏览器连接的HTTP/HTTPS代理
- 通过配置
PROXY_URL环境变量 - 支持使用用户名/密码进行身份验证
- 适用于:
- 旋转IP地址以避免速率限制
- 从受限网络访问X/Twitter
- 添加额外的匿名层
- 示例格式:
- 基础:
http://proxy-server:port - 使用auth:
http://username:password@proxy-server:port - 单独身份验证:使用
PROXY_USERNAME和PROXY_PASSWORD
- 基础:
🐳 Docker部署
使用Docker Compose
# Start the MCP server
docker-compose --profile mcp up
# With environment variables
TWITTER_USERNAME=your_username TWITTER_PASSWORD=your_password docker-compose --profile mcp up
自定义Docker运行
docker run -d \
--name x-mcp \
-e TWITTER_USERNAME=your_username \
-e TWITTER_PASSWORD=your_password \
-e PROXY_URL=http://proxy-server:port \
-e MCP_TRANSPORT=sse \
-e MCP_PORT=3000 \
-p 3000:3000 \
x-mcp
🛠️ 发展
项目结构
src/
├── mcp.ts # Main MCP server implementation
├── cli.ts # Command line interface
├── types.ts # TypeScript type definitions
├── utils.ts # Utility functions
├── behaviors/ # User interaction behaviors
│ ├── login.ts # Authentication logic
│ ├── interact-with-post.ts # Post interaction functions
│ ├── interact-with-comment.ts # Comment interaction functions
│ └── upload-media.ts # Media upload functionality
└── scrapers/ # Data scraping modules
├── index.ts # Scraper exports
├── post-scraper.ts # Post scraping logic
├── profile-scraper.ts # Profile scraping logic
├── comment-scraper.ts # Comment scraping logic
├── search-scraper.ts # Search functionality
├── timeline-scraper.ts # Timeline scraping
└── utils.ts # Scraping utilities
建造和测试
# Build TypeScript
npm run build
# Run MCP server
npm run mcp
# Run CLI commands
npm run cli <command>
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
指南
- 遵循TypeScript的最佳实践
- 添加全面的错误处理
- 更新新功能的类型定义
- 使用真实的X/Twitter交互进行测试
- 记录新功能
⚠️ 免责声明
- 这是一个使用浏览器自动化的非官方工具
- X/Twitter的服务条款适用
- 负责任地使用并遵守费率限制
- UI更改可能需要更新选择器
- 不隶属于X/Twitter
📄 许可证
[此处为许可证信息]
🐛 故障排除
常见问题
身份验证失败
- 验证中的凭据
.env文件 - 请尝试使用重新登录
npm run cli login - 检查2FA要求
找不到元素错误
- X/Twitter可能已更新其用户界面
- 清除浏览器缓存并重新进行身份验证
- 检查元素选择器是否更新
速率限制
- 降低请求频率
- 增加操作之间的延迟
- 使用较小的批量
集装箱问题
- 确保环境变量正确
- 检查端口可用性
- 验证Docker网络配置
如需更多帮助,请在项目存储库上打开一个问题。