Preference Analytics MCP Server
Model Context Protocol server for cross-platform preference analytics via BigQuery.
Quick Start
1. Install
cd preference-analytics-mcp
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt2. Configure
cp env.example .env
# Edit .env - set GCP_PROJECT_ID3. Test
python test_connection.py4. Start Server
# Easy way
./start_server.sh
# Or manual
python server.py --transport sse --port 8000Server runs on http://localhost:8000/messages
5. Configure Cursor
In Cursor Settings → Features → Model Context Protocol:
{
"mcpServers": {
"preference-analytics": {
"url": "http://localhost:8000/messages"
}
}
}Restart Cursor and start querying!
Available Tools
- get_platform_synergy - Platform reach, overlap, media mix recommendations
- get_category_correlation - Cross-platform category correlations
- get_user_coherence - Individual user cross-platform behavior
- get_segment_analysis - Audience segment insights
- get_category_preferences - Top categories per platform
Example Queries (in Cursor)
- "Show me platform synergy analysis"
- "Find category correlations between Spotify and Amazon"
- "Analyze the gaming segment"
- "What are top Spotify categories?"
Predefined Segments
all_users- All usersmulti_platform- Users on 2+ platformshigh_engagement- Highly engaged usersindian_entertainment- Indian content fansgaming- Gaming enthusiastsfitness- Fitness & wellness users
Command Options
# Default port
python server.py --transport sse
# Custom port
python server.py --transport sse --port 8080
# Localhost only
python server.py --transport sse --host 127.0.0.1 --port 8000Troubleshooting
Port in use:
python server.py --transport sse --port 8001Can't connect to BigQuery:
python test_connection.pyCursor can't connect:
- Verify server is running
- Check URL in Cursor config
- Restart Cursor
Extending
Add New Segment
Edit analytics/segment_analysis.py:
elif segment_name == "new_segment":
query = f"""
SELECT DISTINCT user_id
FROM `{self.config.get_table_id('table_name')}`
WHERE condition = 'value'
"""Add New Analytics Tool
- Create module in
analytics/ - Register in
server.pylist_tools() - Add handler method
See existing modules for examples.
Requirements
- Python 3.10+
- BigQuery dataset with tables:
- preference_summary - category_preferences - user_platform_presence - unified_interest_matrix - category_mapping
License
Part of the Preference Analytics project.
