一个全面的模型上下文协议(MCP)服务器,提供与SocialData API交互的工具。此服务器允许您获取Twitter/X数据、监控用户活动并分析社交媒体互动。
运行设置脚本,该脚本会创建虚拟环境并安装依赖项:
chmod +x setup.sh
./setup.sh
然后激活虚拟环境:
source venv/bin/activate
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
export SOCIALDATA_API_KEY="your_api_key_here"
您可以在您的SocialData仪表板中获取API密钥。
要使用此服务器与MCP客户端(如Claude Desktop、Continue或其他兼容MCP的工具),添加以下配置:
在您的MCP客户端配置文件(通常是config.json或类似文件)中添加以下内容:
{
"mcpServers": {
"socialdata": {
"type": "stdio",
"command": "/path/to/your/socialdata/venv/bin/python",
"args": ["/path/to/your/socialdata/server.py"],
"env": {
"SOCIALDATA_API_KEY": "your_actual_api_key_here"
}
}
}
}
替换路径和API密钥为您实际的值:
/path/to/your/socialdata/ - 替换为您安装此服务器的实际路径your_actual_api_key_here - 替换为您从仪表板获取的SocialData API密钥{
"mcpServers": {
"socialdata": {
"type": "stdio",
"command": "/Users/yourname/path/to/socialdata/venv/bin/python",
"args": ["/Users/yourname/path/to/socialdata/server.py"],
"env": {
"SOCIALDATA_API_KEY": "your_actual_api_key_here"
}
}
}
}
{
"mcpServers": {
"socialdata": {
"type": "stdio",
"command": "python3",
"args": ["/Users/yourname/path/to/socialdata/server.py"],
"env": {
"SOCIALDATA_API_KEY": "your_actual_api_key_here"
}
}
}
}
创建运行脚本:
#!/bin/bash
cd /path/to/your/socialdata
source venv/bin/activate
python3 server.py
然后配置:
{
"mcpServers": {
"socialdata": {
"type": "stdio",
"command": "/path/to/your/socialdata/run.sh",
"args": [],
"env": {
"SOCIALDATA_API_KEY": "your_actual_api_key_here"
}
}
}
}
要找到正确的安装路径:
# 导航到您的socialdata目录
cd /path/to/your/socialdata
# 获取完整路径
pwd
# 这将显示类似的内容:
# /Users/yourname/Agents/MCP/socialdata
在您的MCP客户端配置中使用此完整路径。
确保首先激活虚拟环境:
source venv/bin/activate
python server.py
完成之后,您可以停用虚拟环境:
deactivate
search_twitter使用高级操作符搜索Twitter。
参数:
query(必需):带有Twitter操作符的搜索查询cursor(可选):分页游标search_type(可选):"Top" 或 "Latest"示例:
# 搜索Elon Musk关于Dogecoin的推文,排除回复
search_twitter("from:elonmusk doge -filter:replies")
# 搜索最新的关于AI的推文
search_twitter("AI", search_type="Latest")
get_user_by_username通过Twitter用户名获取用户资料。
get_user_by_id通过Twitter用户ID获取用户资料。
get_multiple_users_by_usernames通过用户名获取最多100个用户资料。
get_user_complete_profile获取包括简介、最近推文和扩展信息在内的综合用户数据。
示例:
# 获取基本用户信息
user = get_user_by_username("elonmusk")
# 获取包含最近推文的完整资料
complete_profile = get_user_complete_profile("elonmusk")
get_user_followers获取用户的关注者。
get_user_verified_followers仅获取已验证的关注者。
get_user_following获取某人正在关注的用户。
示例:
# 获取Elon Musk的关注者
followers = get_user_followers("44196397") # Elon的用户ID
# 获取已验证的关注者
verified = get_user_verified_followers("44196397")
get_tweet获取完整的推文详情。
get_tweet_comments获取推文的评论/回复。
get_tweet_retweeters获取转发了某条推文的用户。
get_tweet_quotes获取引用推文。
get_twitter_thread获取线程中的所有推文。
analyze_tweet_engagement获取全面的互动数据(评论、转发、引用)。
示例:
# 获取推文详情
tweet = get_tweet("1234567890")
# 分析全部互动
engagement = analyze_tweet_engagement("1234567890")
verify_user_following检查一个用户是否关注了另一个用户。
verify_user_retweeted验证一个用户是否转发了一条特定的推文。
verify_user_commented检查一个用户是否对一条推文进行了评论。
示例:
# 检查用户A是否关注了用户B
following = verify_user_following(
source_user_id="123456",
target_user_id="789012"
)
# 验证转发
retweeted = verify_user_retweeted(
tweet_id="1234567890",
user_id="123456"
)
create_user_tweets_monitor监控用户的最新推文。
create_user_following_monitor监控用户何时关注了新的账户。
create_user_profile_monitor监控资料更改。
list_monitors列出所有活跃的监控器。
delete_monitor删除一个监控器。
示例:
# 监控Elon Musk的推文
monitor = create_user_tweets_monitor(
user_id="44196397",
webhook_url="https://your-webhook.com/notify"
)
# 列出所有监控器
monitors = list_monitors()
# 删除一个监控器
delete_monitor("monitor_123")
get_account_balance检查剩余的API信用额度。
set_global_webhook设置所有监控器的默认webhook URL。
# 获取完整的用户资料
profile = get_user_complete_profile("username")
# 获取他们的关注者和关注中
followers = get_user_followers(profile["id_str"])
following = get_user_following(profile["id_str"])
# 获取他们最近的推文及其互动
tweets = get_user_tweets(profile["id_str"])
for tweet in tweets["tweets"][:5]: # 分析前5条推文
engagement = analyze_tweet_engagement(tweet["id_str"])
# 设置竞争对手账户的监控
competitors = ["competitor1_id", "competitor2_id", "competitor3_id"]
for user_id in competitors:
# 监控他们的推文
create_user_tweets_monitor(user_id, webhook_url="https://your-app.com/competitor-tweets")
# 监控资料更改
create_user_profile_monitor(user_id, webhook_url="https://your-app.com/profile-changes")
# 验证活动参与者
campaign_tweet_id = "1234567890"
participant_ids = ["user1", "user2", "user3"]
results = {}
for user_id in participant_ids:
results[user_id] = {
"retweeted": verify_user_retweeted(campaign_tweet_id, user_id),
"commented": verify_user_commented(campaign_tweet_id, user_id),
"following": verify_user_following(user_id, "your_brand_id")
}
# 搜索趋势话题
search_results = search_twitter("#AI OR #MachineLearning", search_type="Latest")
# 分析顶级推文的互动
for tweet in search_results["tweets"][:10]:
engagement = analyze_tweet_engagement(tweet["id_str"])
print(f"推文:{tweet['text'][:100]}...")
print(f"互动:{len(engagement['comments'])}条评论,"
f"{len(engagement['retweeters'])}次转发")
要验证您的服务器是否正常工作:
测试独立服务器:
source venv/bin/activate
python server.py
使用您的MCP客户端测试:一旦配置好,尝试使用可用工具之一(如get_account_balance)来验证连接和API密钥。
检查API余额:
balance = get_account_balance()
print(f"剩余余额:${balance['balance_usd']}")
服务器包括全面的错误处理:
所有错误都以描述性的异常消息返回。
SocialData API根据使用情况收费。定期检查您的余额:
balance = get_account_balance()
print(f"剩余余额:${balance['balance']}")
SocialData自动处理速率限制。API设计为可靠且可扩展,无需代理管理。
对于监控功能,您可以设置webhook以接收实时通知:
全局webhook(适用于所有监控器):
set_global_webhook("https://your-app.com/webhook")
特定监控器的webhook(覆盖全局):
create_user_tweets_monitor(
user_id="123456",
webhook_url="https://your-app.com/specific-webhook"
)
服务器会在SOCIALDATA_API_KEY环境变量中查找API密钥。请确保:
socialdata/
├── server.py # 主MCP服务器实现
├── config.json # MCP服务器配置
├── requirements.txt # Python依赖项
├── setup.sh # 自动设置脚本
├── .env.example # 环境变量模板
├── .gitignore # Git忽略规则
├── openapi.yml # API规范参考
└── README.md # 此文件
服务器使用FastMCP构建,并遵循SocialData API规范。要添加新端点:
@mcp.tool()装饰器config.json以包含新工具如果您觉得这个项目有用,请考虑:
使用此服务器时:
此项目是开源的,并在MIT许可下提供。