PersonalizationMCP
Retrieve user profile, search videos, and access personal watch history, favorites, liked videos, coin history, following list, and uploaded videos.
Authenticate via OAuth2 to access user account info, karma breakdown, submitted posts, comments, saved content, hidden posts, voting history, subscribed communities, moderation permissions, and messages.
Authenticate via OAuth2 to manage user profile, music library, top artists/tracks, recently played, follow/unfollow artists and playlists, and manage saved tracks, albums, shows, episodes, audiobooks.
Access your Steam game library with detailed statistics, playtime, recent activity, achievements, friend comparisons, and gaming habit analysis.
Search videos, get channel info, trending videos, and access personal data (subscriptions, playlists, liked videos) via OAuth2 with automatic token management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PersonalizationMCPShow me my top 5 artists on Spotify this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ðŊ PersonalizationMCP
A unified personal data hub built on MCP (Model Context Protocol) that allows AI assistants to access your digital life from multiple platforms, providing truly personalized and contextual interactions.
ð äļæææĄĢ: README_zh.md
ð Quick Start (Current Recommended Flow)
Clone and install
git clone https://github.com/YangLiangwei/PersonalizationMCP.git cd PersonalizationMCP # choose one uv venv && uv sync # or python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txtRun onboarding (interactive)
personalhub onboarding --allOr run onboarding (non-interactive / scriptable)
personalhub onboarding --platform steam --set STEAM_API_KEY=xxx --set STEAM_USER_ID=7656119xxx personalhub onboarding --platform youtube --set YOUTUBE_API_KEY=xxxVerify and run
personalhub status personalhub serve --profile safe
ð§ How the Project Works Now
Unified entry for setup:
personalhub onboardingUnified entry for operations:
personalhub-managerskillPlatform-specific flows: independent skills for Steam / YouTube / Bilibili / Spotify / Reddit
No nested skill execution: one skill leads a task at a time
ð Features
ðŪ Steam Integration
Get your game library with detailed statistics and playtime
View recent gaming activity and currently playing games
Get detailed game information and achievements
Compare games with friends and get recommendations
Analyze gaming habits and preferences
ðĨ YouTube Integration
Search YouTube videos and get detailed video information
Get channel information and trending videos
Access personal data with OAuth2 (subscriptions, playlists, liked videos)
Get personalized recommendations based on your viewing history
ð Smart Token Management - Automatically detect and refresh expired OAuth2 tokens
ðĄïļ Maintenance-Free Configuration - Prioritize token files, no need to manually update MCP configuration
ðš Bilibili Integration
Get user profile information and statistics
Search videos and get detailed video information
Access personal data (watch history, favorites, liked videos, coin history)
Get following list and user-uploaded videos
Browse "to view later" list and personal collections
ðĩ Spotify Integration
Complete OAuth2 authentication with automatic token management
Get user profile and music library data
Access top artists, tracks, and recently played music
Social features: follow/unfollow artists and playlists
Library management: saved tracks, albums, shows, episodes, audiobooks
Playlist operations: view and manage personal playlists
ðŽ Reddit Integration
Complete OAuth2 authentication with automatic token management
Access user account information, karma breakdown, and preferences
Get submitted posts, comments, and user activity overview
View saved content, hidden posts, and voting history
Explore subscribed communities and moderation permissions
Message system access (inbox, unread, sent messages)
ðĶ Installation and Setup
1. Install Dependencies
Due to the complexity of bilibili-api dependencies (especially lxml compilation issues), installation requires specific steps. Choose one of the methods below:
Option A: Using conda (Recommended)
# 1. Create conda environment
conda create -n personalhub python=3.12
conda activate personalhub
# 2. Install lxml via conda (avoids compilation issues)
conda install lxml
# 3. Install remaining packages
pip install bilibili-api --no-deps
pip install -r requirements.txtOption B: Using uv
# 1. Install uv if not already installed
# Visit: https://docs.astral.sh/uv/getting-started/installation/
# 2. Create environment and install core dependencies
uv venv
uv sync
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# 3. Install bilibili-api and its dependencies separately (due to version conflicts)
uv pip install lxml # Install lxml first (uses precompiled wheel)
uv pip install bilibili-api --no-deps # Install bilibili-api without dependencies
uv pip install aiohttp beautifulsoup4 colorama PyYAML brotli urllib3 # Install required dependenciesOption C: Using pip (Manual Multi-Step Installation)
# 1. Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 2. Install packages in specific order to avoid compilation issues
pip install lxml # Install lxml first (uses precompiled wheel)
pip install bilibili-api --no-deps # Install bilibili-api without dependencies
pip install -r requirements.txt # Install all other dependenciesâ ïļ Important: The bilibili-api package has complex dependency requirements that can cause compilation failures on some systems. The multi-step installation approach ensures compatibility by installing lxml first, then bilibili-api without its conflicting dependencies, and finally all other required packages.
2. Configuration Setup
Copy the example configuration file and fill in your credentials:
cp config.example configThen edit the config file with your actual API keys and tokens.
ð§ Platform Configuration
ðŪ Steam API Setup
ð Detailed setup guide: platforms/steam/README.md | äļææå
Quick summary: Get Steam API key and User ID, then configure:
STEAM_API_KEY=your_steam_api_key_here
STEAM_USER_ID=your_steam_user_id_hereðĨ YouTube API Setup
ð Detailed setup guide: platforms/youtube/README.md | äļææå
Quick summary:
Get YouTube API key from Google Cloud Console
For personal data access, set up OAuth2 with "TV and Limited Input device" type
Use MCP tools for easy authentication
Configuration:
YOUTUBE_API_KEY=your_youtube_api_key_here
# OAuth2 tokens are managed automatically after setupðš Bilibili Setup
ð Detailed setup guide: platforms/bilibili/README.md | äļææå
Quick summary: Extract cookies from your browser after logging into Bilibili
Configuration:
BILIBILI_SESSDATA=your_bilibili_sessdata_cookie
BILIBILI_BILI_JCT=your_bilibili_bili_jct_cookie
BILIBILI_BUVID3=your_bilibili_buvid3_cookieðĩ Spotify API Setup
ð Detailed setup guide: platforms/spotify/README.md | äļææå
Quick summary:
Create a Spotify app in Spotify Developer Dashboard
Configure redirect URIs in your app settings
Use MCP tools for OAuth2 authentication with automatic token management
Configuration:
SPOTIFY_CLIENT_ID=your_spotify_client_id_here
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here
SPOTIFY_REDIRECT_URI=https://example.com/callback
# OAuth2 tokens are managed automatically after authenticationðŽ Reddit API Setup
ð Detailed setup guide: platforms/reddit/README.md | äļææå
Quick summary:
Create a Reddit app in Reddit Apps
Configure as "web app" with redirect URI
Use MCP tools for OAuth2 authentication with automatic token management
Configuration:
REDDIT_CLIENT_ID=your_reddit_client_id_here
REDDIT_CLIENT_SECRET=your_reddit_client_secret_here
REDDIT_REDIRECT_URI=http://localhost:8888/callback
# OAuth2 tokens are managed automatically after authenticationðĨïļ Cursor Configuration
Add the MCP server to your Cursor settings:
If using conda:
{
"mcpServers": {
"personalhub": {
"command": "/path/to/your/conda/envs/personalhub/bin/python",
"args": ["/absolute/path/to/your/project/server.py"],
"env": {
"STEAM_API_KEY": "your_steam_api_key",
"STEAM_USER_ID": "your_steam_user_id",
"YOUTUBE_API_KEY": "your_youtube_api_key",
"BILIBILI_SESSDATA": "your_bilibili_sessdata",
"BILIBILI_BILI_JCT": "your_bilibili_bili_jct",
"BILIBILI_BUVID3": "your_bilibili_buvid3",
"REDDIT_CLIENT_ID": "your_reddit_client_id",
"REDDIT_CLIENT_SECRET": "your_reddit_client_secret"
}
}
}
}If using uv:
{
"mcpServers": {
"personalhub": {
"command": "uv",
"args": ["run", "python", "/absolute/path/to/your/project/server.py"],
"env": {
"STEAM_API_KEY": "your_steam_api_key",
"STEAM_USER_ID": "your_steam_user_id",
"YOUTUBE_API_KEY": "your_youtube_api_key",
"BILIBILI_SESSDATA": "your_bilibili_sessdata",
"BILIBILI_BILI_JCT": "your_bilibili_bili_jct",
"BILIBILI_BUVID3": "your_bilibili_buvid3",
"REDDIT_CLIENT_ID": "your_reddit_client_id",
"REDDIT_CLIENT_SECRET": "your_reddit_client_secret"
}
}
}
}If using pip with virtual environment:
{
"mcpServers": {
"personalhub": {
"command": "/absolute/path/to/your/project/venv/bin/python",
"args": ["/absolute/path/to/your/project/server.py"],
"env": {
"STEAM_API_KEY": "your_steam_api_key",
"STEAM_USER_ID": "your_steam_user_id",
"YOUTUBE_API_KEY": "your_youtube_api_key",
"BILIBILI_SESSDATA": "your_bilibili_sessdata",
"BILIBILI_BILI_JCT": "your_bilibili_bili_jct",
"BILIBILI_BUVID3": "your_bilibili_buvid3",
"REDDIT_CLIENT_ID": "your_reddit_client_id",
"REDDIT_CLIENT_SECRET": "your_reddit_client_secret"
}
}
}
}Note: For YouTube OAuth2 tokens, we recommend using automatic token management. No need to add YOUTUBE_ACCESS_TOKEN in the above configuration. The system will automatically read and refresh tokens from the youtube_tokens.json file.
ð YouTube Smart Token Management
This system implements intelligent YouTube OAuth2 token management with the following features:
âĻ Core Features
Automatic Expiration Detection: System automatically detects tokens expiring within 5 minutes
Auto-Refresh: No manual intervention needed, system automatically refreshes expired tokens
Smart Priority: Prioritizes token files, with environment variables as backup
Maintenance-Free Configuration: No need to manually update tokens in MCP configuration files
ð§ Token Priority
Explicitly passed access_token parameter (Highest priority)
Auto-refresh tokens from token file (Recommended method)
Tokens from environment variables (Backup method)
The system automatically handles all token management - no manual maintenance required!
ð ïļ Available Tools
ðŪ Steam Tools
get_steam_library()- Get your game library with statisticsget_steam_recent_activity()- Get recent gaming activityget_steam_friends()- Get your Steam friends listget_steam_profile()- Get Steam profile informationget_player_achievements(app_id)- Get achievements for a specific gameget_user_game_stats(app_id)- Get detailed game statisticsget_friends_current_games()- See what games your friends are playingcompare_games_with_friend(friend_steamid)- Compare game librariesget_friend_game_recommendations(friend_steamid)- Get game recommendations
ðĨ YouTube Tools
search_youtube_videos(query)- Search for videosget_video_details(video_id)- Get detailed video informationget_channel_info(channel_id)- Get channel informationget_trending_videos()- Get trending videosget_youtube_subscriptions()- Get your subscriptions (OAuth2 required)get_youtube_playlists()- Get your playlists (OAuth2 required)get_youtube_liked_videos()- Get your liked videos (OAuth2 required)refresh_youtube_token()- Manually refresh OAuth2 tokenget_youtube_token_status()- Check OAuth2 token status
ðš Bilibili Tools
get_bilibili_user_info(uid)- Get user profile informationget_my_bilibili_profile()- Get your own profilesearch_bilibili_videos(keyword)- Search for videosget_bilibili_video_info(bvid)- Get detailed video informationget_bilibili_user_videos(uid)- Get videos uploaded by a userget_bilibili_following_list()- Get your following listget_bilibili_watch_history()- Get your watch historyget_bilibili_favorites()- Get your favorite videosget_bilibili_liked_videos()- Get your liked videosget_bilibili_coin_videos()- Get videos you've given coins toget_bilibili_toview_list()- Get your "to view later" list
ðĩ Spotify Tools (17 Total)
Authentication & Configuration (7 tools):
test_spotify_credentials()- Test API credentialssetup_spotify_oauth()- Initialize OAuth flowcomplete_spotify_oauth()- Complete OAuth authenticationget_spotify_token_status()- Get token statusrefresh_spotify_token()- Manual token refresh
Music Discovery & Social (9 tools):
get_current_user_profile()- Get your Spotify profileget_user_top_items()- Get top artists/tracksget_user_recently_played()- Get recently played musicget_followed_artists()- Get followed artistsfollow_artists_or_users()/unfollow_artists_or_users()- Social features
Library & Playlists (6 tools):
get_user_saved_tracks()/get_user_saved_albums()- Library managementget_user_saved_shows()/get_user_saved_episodes()- Podcast contentget_current_user_playlists()/get_playlist_items()- Playlist operations
ðŽ Reddit Tools (25 Total)
Authentication & Configuration (6 tools):
test_reddit_credentials()- Test API credentialssetup_reddit_oauth()- Initialize OAuth flowcomplete_reddit_oauth()- Complete OAuth authenticationget_reddit_token_status()- Get token statusrefresh_reddit_token()- Manual token refreshauto_refresh_reddit_token_if_needed()- Auto token management
Account Information (6 tools):
get_user_subreddits()- Get subscribed communitiesget_user_trophies()- Get Reddit trophies and achievementsget_user_preferences()- Get account settingsget_user_karma_breakdown()- Get karma distributionget_moderated_subreddits()- Get moderated communitiesget_contributor_subreddits()- Get contributor permissions
Content & Activity (10 tools):
get_user_submitted_posts()- Get submitted postsget_user_comments()- Get comment historyget_user_overview()- Get mixed activity timelineget_saved_content()- Get saved posts/commentsget_hidden_posts()- Get hidden contentget_upvoted_content()- Get upvoted contentget_downvoted_content()- Get downvoted content
Messaging (3 tools):
get_inbox_messages()- Get inbox messagesget_unread_messages()- Get unread messagesget_sent_messages()- Get sent messages
ð§ System Tools
test_connection()- Test if MCP server is workingget_personalization_status()- Get overall platform statustest_steam_credentials()- Test Steam API configurationtest_youtube_credentials()- Test YouTube API configurationtest_bilibili_credentials()- Test Bilibili configurationtest_spotify_credentials()- Test Spotify API configurationtest_reddit_credentials()- Test Reddit API configuration
ðŽ Usage Examples
Gaming Analysis
"What games have I been playing recently?"
"Show me my most played Steam games"
"What games do my friends recommend?"
"Compare my game library with my friend's"
Video Content Discovery
"Find YouTube videos about machine learning"
"What are the trending videos on YouTube today?"
"Show me my YouTube liked videos"
"Find popular Bilibili videos about programming"
Personal Data Insights
"Analyze my gaming habits and preferences"
"What type of YouTube content do I watch most?"
"Show me my Bilibili favorites and liked videos"
Music & Audio Analysis
"What artists have I been listening to most lately on Spotify?"
"Show me my recently played music and find patterns"
"What are my top tracks from the past month?"
"Find new music recommendations based on my Spotify data"
Reddit Activity Analysis
"What communities am I most active in on Reddit?"
"Show me my recent Reddit posts and comments"
"What's my karma breakdown across different subreddits?"
"Find my saved Reddit content and analyze my interests"
ð§Đ Skills (CLI-oriented)
This repo now includes standalone skills under skills/ that map directly to personalhub CLI workflows:
personalhub-onboarding(unified credential onboarding entry)personalhub-manager(aggregate day-2 manager)personalhub-statuspersonalhub-steampersonalhub-youtubepersonalhub-bilibilipersonalhub-spotifypersonalhub-reddit
Pattern: one unified entry + platform-specific skills. Each skill remains independent (no nested execution).
ð Development
Running the Server
Recommended (CLI with tool exposure profiles):
# Safer default: expose a curated subset of tools
personalhub serve --profile safe
# Legacy behavior: expose all tools
personalhub serve --profile full
# See available profiles
personalhub profiles
# Show integration status
personalhub status
# Interactive onboarding (recommended for first-time setup)
personalhub onboarding --platform steam,youtube
personalhub onboarding --all
personalhub onboarding --platform steam --set STEAM_API_KEY=xxx --set STEAM_USER_ID=7656119xxx
# Run direct Steam commands (without MCP)
personalhub steam credentials
personalhub steam library
personalhub steam profile
# Run direct YouTube commands (without MCP)
personalhub youtube credentials
personalhub youtube search -q "lofi"
personalhub youtube trending --region-code US
# Run direct Spotify commands
personalhub spotify credentials
personalhub spotify token-status
personalhub spotify recent --limit 20
# Run direct Reddit commands
personalhub reddit credentials
personalhub reddit token-status
personalhub reddit subreddits --limit 20
# Run direct Bilibili commands
personalhub bilibili credentials
personalhub bilibili search -k "įžįĻ"
personalhub bilibili video --bvid BV1xx411c7mDIf using conda:
conda activate personalhub
python server.pyIf using uv:
uv run python server.pyIf using pip with virtual environment:
source venv/bin/activate # On Windows: venv\Scripts\activate
python server.pyTesting Configuration
Use these tools to test your setup:
# Test individual platforms
test_steam_credentials()
test_youtube_credentials()
test_bilibili_credentials()
test_reddit_credentials()
# Check overall status
get_personalization_status()Adding New Platforms
Create a new
platform_mcp.pyfileImplement the platform-specific tools using
@mcp.tool()decoratorAdd setup function to
server.pyUpdate configuration files and documentation
ð Privacy and Security
Local Storage: All API keys and tokens are stored locally on your machine
No Data Transmission: Your personal data is never transmitted to third parties
Direct API Calls: All API calls are made directly from your machine to the respective platforms
Secure Configuration: Use environment variables or local config files
Regular Updates: Rotate API keys and tokens regularly for security
Security Best Practices
Don't commit sensitive files: Ensure
config,.env,myinfo.json, andyoutube_tokens.jsonare in.gitignoreUpdate cookies regularly: Bilibili cookies expire and need periodic updates
Use environment variables: In production, use system environment variables
File permissions: Ensure config files are only readable by you
YouTube token security: The system automatically manages OAuth2 tokens securely in local files
Gradual configuration: You can configure platforms incrementally - missing credentials won't cause errors
ð Troubleshooting
Common Issues
Q: Bilibili cookies not working? A: Cookies expire regularly. Re-extract them from your browser and update your config.
Q: Steam API rate limits? A: Steam API has rate limits. Avoid frequent calls and implement reasonable delays.
Q: YouTube API quota exceeded? A: YouTube API has daily quotas. You can request quota increases or optimize your usage.
Q: YouTube OAuth2 token expired?
A: The system automatically refreshes expired tokens. If manual refresh is needed, use refresh_youtube_token().
Q: Can I use only some platforms? A: Yes! You can configure only the platforms you want to use. Missing credentials won't cause errors.
Q: How to verify my configuration?
A: Use the test tools or call get_personalization_status() to check all platforms.
Getting Help
Check configuration file format
Verify API keys and cookies are valid
Review MCP server logs
Use test tools to validate each platform configuration
ðĪ Contributing
Contributions are welcome! Here's how you can help:
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureMake your changes and add tests if applicable
Commit your changes:
git commit -m 'Add amazing feature'Push to the branch:
git push origin feature/amazing-featureOpen a Pull Request
Adding New Platforms
Want to add support for a new platform? Follow these steps:
Create a new
platform_mcp.pyfile (e.g.,spotify_mcp.py)Implement platform-specific tools using the
@mcp.tool()decoratorAdd a setup function and integrate it in
server.pyUpdate configuration files and documentation
Add tests and examples
ð License
This project is licensed under the MIT License - see the LICENSE file for details.
ð Acknowledgments
Model Context Protocol (MCP) for the amazing protocol
Anthropic for Claude and MCP development
All the platform APIs that make this integration possible
â Star History
If you find this project useful, please consider giving it a star on GitHub!
Made with âĪïļ for connecting your digital life with AI
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/YangLiangwei/PersonalizationMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server