Back to MCP directory
verified_userVerifieddnsLocal runtime

Twitter-MCP-Server-for-Claude

该项目是一个Twitter趋势分析MCP服务器,通过连接Twitter实时趋势与Claude的分析能力,帮助用户发现商业机会。包含环境配置、API对接、服务器实现和Claude集成等完整流程。

article

README

🚀 构建用于Claude的Twitter趋势分析MCP服务器

本教程将指导你创建一个Model Context Protocol (MCP)服务器,该服务器可连接Twitter实时热门话题与Claude的分析功能。服务器会获取实时Twitter趋势,并利用Claude进行商业机会分析。

🚀 快速开始

先决条件

  • Python 3.8或更高版本
  • 安装了Claude Desktop
  • 具有API访问权限的Twitter开发账户
  • 具备基本的Python知识

📦 安装指南

第一步:安装必要的库

确保你已经安装了所需的Python库:

pip install tweepy python-dotenv logging

第二步:创建项目结构

在你的工作目录中创建以下文件和文件夹结构:

twitter-trends-mcp/
├── src/
│   ├── twitter_trends_mcp/
│   │   ├── __init__.py
│   │   └── server.py
│   └── twitter_config.json
└── twitter_server.log

第三步:配置 Twitter API 信息

twitter_config.json 文件中填写你的Twitter开发者账号的API密钥:

{
    "twitter": {
        "api_key": "your_api_key",
        "api_secret": "your_api_secret"
    },
    "logging": {
        "level": "INFO",
        "file": "twitter_server.log"
    }
}

第四步:安装项目依赖

在项目根目录中安装包:

pip install -e .

💻 使用示例

基础用法

编写服务器代码

server.py 中实现 Twitter API 的认证和趋势获取功能:

import tweepy
from tweepy import OAuthHandler
import json
import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('twitter_server.log'),
        logging.StreamHandler()
    ]
)

logger = logging.getLogger(__name__)

class TwitterTrendMonitor:
    def __init__(self, config_file):
        self.config = self._load_config(config_file)
        self.authenticated = False

    def _load_config(self, config_file):
        with open(config_file) as f:
            return json.load(f)

    def authenticate(self):
        try:
            auth = OAuthHandler(
                self.config['twitter']['api_key'],
                self.config['twitter']['api_secret']
            )
            self.authenticated = True
            logger.info("Successfully authenticated with Twitter API.")
        except Exception as e:
            logger.error(f"Authentication failed: {e}")
            raise

    def get_trends(self):
        if not self.authenticated:
            logger.error("Not authenticated. Cannot fetch trends.")
            return []

        try:
            # 假设你已经拥有API实例api
            api = self._get_api_instance()
            trends = api.trends_place(id=1)  # 获取美国地区的趋势
            return [trend.name for trend in trends[0]['trends']]
        except Exception as e:
            logger.error(f"Failed to fetch trends: {e}")
            return []

    def _get_api_instance(self):
        # 实现获取API实例的方法,可能需要处理OAuth token等
        pass

def main():
    monitor = TwitterTrendMonitor('twitter_config.json')
    try:
        monitor.authenticate()
        trends = monitor.get_trends()
        logger.info(f"Current trending topics: {trends}")
    except Exception as e:
        logger.error(f"Main execution failed: {e}")

if __name__ == "__main__":
    main()

运行服务器

在终端或命令提示符中运行以下命令来启动服务器:

python src/twitter_trends_mcp/server.py

监控日志

查看生成的日志文件 twitter_server.log 以确保程序正常运行:

tail -f twitter_server.log  # 在Linux/MacOS中使用
# 或者在Windows PowerShell中使用 Get-Content twitter_server.log -Wait

高级用法

配置Claude Desktop

  1. 打开Claude Desktop。
  2. 点击插件图标(通常显示为一个插座符号)。
  3. 选择“添加MCP服务器”或相应选项以配置新的服务器实例。
  4. 填写以下信息:
    • 名称twitter-trends
    • 命令C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\.venv\\Scripts\\python.exe
    • 参数C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\server.py C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\twitter_config.json
    • 环境变量
      • PYTHONPATH: C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\src
      • PYTHONUNBUFFERED: 1
    • 工作目录: C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp
  5. 确保所有路径正确无误,然后保存配置。

在Claude Desktop中测试

  • 点击插件图标。
  • 查找“twitter-trends”实例。
  • 尝试输入:Analyze current Twitter trends for SaaS opportunities

🔧 技术细节

项目结构

twitter-trends-mcp/
├── pyproject.toml
├── twitter_server_run.py
├── src/
│   └── twitter_trends_mcp/
│       ├── __init__.py
│       └── server.py

配置文件

pyproject.toml

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "twitter-trends-mcp"
version = "0.1.0"
description = "Twitter Trends MCP Server"
requires-python = ">=3.8"
dependencies = [
    "tweepy",
    "mcp",
    "python-dotenv",
    "hatchling"
]

[project.urls]
Homepage = "https://github.com/yourusername/twitter-trends-mcp"

[project.scripts]
console_scripts = [
    "twitter-trends-mcp=twitter_trends_mcp.server:main"
]

src/twitter_trends_mcp/server.py

import tweepy
from tweepy import OAuthHandler
import json
import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    filename='twitter_server.log'
)
logger = logging.getLogger(__name__)

class TwitterTrendServer:
    def __init__(self, config_path):
        self.config = self.load_config(config_path)
        self.authenticated_api = None

    def load_config(self, config_path):
        with open(config_path, 'r') as f:
            return json.load(f)

    def authenticate_twitter_api(self):
        try:
            auth = OAuthHandler(
                self.config['twitter']['api_key'],
                self.config['twitter']['api_secret']
            )
            api = tweepy.API(auth)
            logger.info("Twitter API 已成功认证")
            return api
        except Exception as e:
            logger.error(f"Twitter API 认证失败: {str(e)}")
            raise

    def get_trending_topics(self, woe_id=1):
        try:
            if self.authenticated_api is None:
                self.authenticate_twitter_api()
            trends = self.authenticated_api.trends_place(woe_id)
            return [trend['name'] for trend in trends[0]['trends']]
        except Exception as e:
            logger.error(f"获取趋势失败: {str(e)}")
            return []

    def run_server(self):
        while True:
            try:
                # 示例:实时获取并打印趋势
                trends = self.get_trending_topics()
                if trends:
                    logger.info("当前Twitter热门话题:")
                    for trend in trends:
                        logger.info(f"- {trend}")
                else:
                    logger.warning("未能获取到任何趋势。请检查日志文件以获取更多信息。")
            except KeyboardInterrupt:
                logger.info("服务器已停止。")
                break
            except Exception as e:
                logger.error(f"发生错误: {str(e)}")
                continue

if __name__ == "__main__":
    import sys
    if len(sys.argv) < 2:
        print("使用方式:python server.py <配置文件路径>")
        sys.exit(1)
    config_path = sys.argv[1]
    server = TwitterTrendServer(config_path)
    server.run_server()

src/twitter_trends_mcp/init.py

from .server import TwitterTrendServer

__version__ = "0.1.0"

twitter_config.json

{
    "twitter": {
        "api_key": "your_api_key",
        "api_secret": "your_api_secret"
    },
    "logging": {
        "level": "INFO",
        "file": "twitter_server.log"
    }
}

📚 详细文档

高级功能和扩展

1. 数据存储

可以将获取的趋势数据存储到数据库中,以便后续分析。 步骤:

  • 使用如SQLite、MySQL或PostgreSQL等数据库。
  • 修改 server.py 中的 get_trending_topics 方法以记录数据。
  • 添加定期备份机制以防数据丢失。

2. 数据可视化

集成可视化工具(如Plotly或Matplotlib)来实时显示趋势变化。 步骤:

  • server.py 中添加绘图功能。
  • 定期生成图表并保存为图片文件,或者通过Web界面展示。

3. 自动化分析

使用自然语言处理库(如spaCy或nltk)对趋势文本进行情感分析或其他类型分析。 步骤:

  • 导入必要的NLP库。
  • 在获取的趋势数据上应用分析模型。
  • 记录并可视化分析结果。

4. 可扩展性和性能优化

如果需要处理大量数据,可以考虑以下优化措施:

  • 异步请求:使用 asynchronous libraries like aiohttptweepy 来提高数据获取速度。
  • 分布式计算:将任务分担到多个节点上以提升处理能力。
  • 队列系统:使用如 RabbitMQ 或 Redis 来管理任务队列,确保系统的可扩展性。

错误排查和调试

1. 认证问题

如果 Twitter API 认证失败:

  • 检查 api_keyapi_secret 是否正确。
  • 确保你的开发者账号和应用权限允许访问实时趋势数据。
  • 查看Twitter Developer Console以获取最新API密钥。

2. 网络问题

如果无法连接到 Twitter API:

  • 检查网络连接。
  • 使用代理服务器(如需要)。
  • 查看是否有IP被封禁的情况。

3. 日志分析

仔细查看 twitter_server.log 文件中的错误信息,获取具体的报错原因和位置。

4. 配置问题

确保所有路径和配置参数正确无误。特别是在 Windows 环境下,路径分隔符可能需要调整为反斜杠或使用原始字符串。

安全注意事项

  • API密钥的安全性:不要在版本控制系统中明文存储 API 密钥。可以使用环境变量或加密配置文件来管理敏感信息。
  • 日志监控:及时审查日志文件,防止潜在的安全事件如未授权访问等。
  • 定期更新依赖库:保持项目的第三方库为最新版本,以避免已知的安全漏洞。

📄 参考文献和扩展阅读

📚 项目总结

通过以上步骤,你已经成功搭建了一个基于 Twitter API 的实时趋势监控服务器,并在 Claude Desktop 中进行了配置。你可以根据具体需求扩展功能,如数据存储、可视化分析等,同时注意系统的安全性和性能优化。

如果有任何问题或需要进一步的帮助,请参考相关文档或寻求社区支持。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client