README.md

Building a Twitter Trends Analysis MCP Server for Claude

This tutorial will guide you through creating a Model Context Protocol (MCP) server that connects Twitter's trending topics with Claude's analysis capabilities. The server will fetch real-time Twitter trends and use Claude to analyze them for business opportunities.

Prerequisites

  • Python 3.8 or higher
  • Claude Desktop installed
  • Twitter Developer Account with API access
  • Basic understanding of Python

Part 1: Setting Up the Environment

  1. Create a new project directory:
mkdir twitter-trends-mcp
cd twitter-trends-mcp
  1. Set up a virtual environment:
python -m venv .venv
.venv\Scripts\activate  # On Windows
  1. Install required packages:
pip install tweepy mcp python-dotenv hatchling

Part 2: Project Structure

Create the following directory structure:

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

Part 3: Configuration Files

  1. Create pyproject.toml in the root directory:
[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"
]

[tool.hatch.build]
packages = ["src/twitter_trends_mcp"]
include = ["src/twitter_trends_mcp/*"]

[project.scripts]
twitter-trends-server = "twitter_trends_mcp:main"
  1. Create src/twitter_trends_mcp/__init__.py:
"""Twitter Trends MCP Server package."""
import asyncio
from . import server

def main():
    """Main entry point for the package."""
    asyncio.run(server.main())

__all__ = ['main', 'server']
  1. Create entry point file twitter_server_run.py:
#!/usr/bin/env python
import os
import sys
import logging
from pathlib import Path

# Configure logging
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('twitter_server.log'),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger('twitter-trends-mcp')

# Add the src directory to the Python path
src_path = str(Path(__file__).parent / "src")
sys.path.insert(0, src_path)
logger.info(f"Python path: {sys.path}")

try:
    from twitter_trends_mcp.server import main
    logger.info("Successfully imported server module")
except Exception as e:
    logger.error(f"Error importing server module: {e}")
    raise

if __name__ == "__main__":
    try:
        logger.info("Starting server...")
        import asyncio
        asyncio.run(main())
    except KeyboardInterrupt:
        logger.info("Server stopped by user")
    except Exception as e:
        logger.error(f"Server error: {e}")
        raise

Part 4: Twitter API Setup

  1. Go to Twitter Developer Portal
  2. Create a new project and app
  3. Get your API credentials:
    • API Key
    • API Secret
    • Access Token
    • Access Token Secret
    • Bearer Token

Part 5: MCP Server Implementation

Create src/twitter_trends_mcp/server.py with the complete server code, including:

  • API client initialization
  • Trend fetching logic
  • Resource and tool handlers
  • Analysis integration with Claude

Key components:

# Initialize Twitter clients
client_v2 = tweepy.Client(...)
auth = tweepy.OAuthHandler(...)
api_v1 = tweepy.API(auth)

# Define server capabilities
app = Server("twitter-trends-server")

# Implement handlers
@app.list_resources()
async def list_resources() -> list[Resource]: ...

@app.read_resource()
async def read_resource(uri: AnyUrl) -> str: ...

@app.list_tools()
async def list_tools() -> list[Tool]: ...

@app.call_tool()
async def call_tool(name: str, arguments: Any) -> Sequence[TextContent]: ...

Part 6: Claude Desktop Configuration

  1. Locate your Claude Desktop config file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. Update the configuration:

{
  "mcpServers": {
    "twitter-trends": {
      "command": "C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\.venv\\Scripts\\python.exe",
      "args": ["C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\twitter_server_run.py"],
      "env": {
        "PYTHONPATH": "C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp\\src",
        "PYTHONUNBUFFERED": "1"
      },
      "cwd": "C:\\Users\\YOUR_USERNAME\\twitter-trends-mcp"
    }
  }
}

Part 7: Running and Testing

  1. Install the package:
pip install -e .
  1. Run server:
python twitter_server_run.py
  1. In Claude Desktop:

    • Click the 🔌 icon
    • Look for "twitter-trends"
    • Try: "Analyze current Twitter trends for SaaS opportunities"
  2. Monitor logs:

Get-Content twitter_server.log -Wait

Troubleshooting Tips

  1. Common Issues:

    • Module not found: Check PYTHONPATH
    • Connection errors: Verify paths in config
    • API errors: Validate credentials
    • Server not responding: Check logs
  2. Log Locations:

    • Server: twitter_server.log
    • Claude: %APPDATA%\Claude\Logs\mcp*.log

Features

  • Real-time trend fetching
  • Category-based analysis
  • Business opportunity identification
  • AI-powered insights
  • Detailed logging

Best Practices

  1. Use absolute paths
  2. Keep credentials secure
  3. Monitor logs
  4. Test incrementally
  5. Use virtual environments

Next Steps

  • Add trend history
  • Implement sentiment analysis
  • Support more regions
  • Add business metrics
  • Enhance analysis categories

twitter-trends-mcp

Building a Twitter Trends Analysis MCP Server for Claude This tutorial will guide you through creating a Model Context Protocol (MCP) server that connects Twitter's trending topics with Claude's analysis capabilities. The server will fetch real-time Twitter trends and use Claude to analyze them for business opportunities.

Contributors