personal-mcp
Allows searching and reading Gmail messages across multiple accounts, retrieving individual messages and conversations, and creating drafts. It cannot send email.
Allows searching, reading, creating, updating, and trashing files in Google Drive, with write and trash operations restricted to items the server created itself.
Click on "Deploy 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., "@personal-mcpsearch all my email accounts for the invoice from Acme last week"
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.
personal-mcp
A private Model Context Protocol server that lets an AI assistant (Claude) work with my own accounts from one place:
Personal: Hotmail/Outlook and Gmail, Google Drive and Calendar, across several accounts at once. It can create drafts, calendar events and files, but it cannot send email.
App business: Apple Ads, App Store Connect, Google Play Console and Applyra (ASO keyword tracking), mostly read-only, with a few narrowly guarded writes.
It runs in two modes from the same code:
Local (stdio) for Claude Code and Claude Desktop, with logins kept in the macOS Keychain.
Remote (AWS Lambda) so it also works from the Claude mobile app, behind owner-only OAuth.
Tools
63 tools. The personal ones take an explicit account argument.
Area | Tools |
Accounts |
|
| |
Drive |
|
Calendar |
|
Apple Ads |
|
App Store Connect |
|
Google Play |
|
Applyra (ASO) | 25 |
Providers: Hotmail/Outlook through Microsoft Graph, Gmail/Drive/Calendar through the Google APIs, Apple Ads Platform API, App Store Connect API, Google Play Developer, Reporting and Cloud Storage APIs, and the Applyra REST API.
Related MCP server: Google Calendar MCP
Design notes
No sending, by design. Only drafts are created. Drive and Calendar writes are restricted to items the server created itself (tagged
createdBy), Drive only moves files to Trash, and calendar calls never send invitations.Apple Ads edits are two-step and narrow. Only keywords and negative keywords can change, never budgets, campaigns or ads.
ads_plan_changesvalidates and previews and changes nothing;ads_apply_planapplies only an unmodified, signed plan, within 15 minutes, and only when the user has explicitly approved it. Bids are capped (ASA_MAX_BID, and at most +25% per change), with at most 50 changes per plan.App Store Connect and Google Play are read-only. The one exception is that the first
asc_analyticscall for an app switches on Apple's analytics report request, since Apple generates no data until one exists. Play never replies to reviews or touches releases or listings.Applyra writes stay inside the Applyra workspace (tracking keywords, favorites, competitors), and some tools use plan quota; their descriptions say so.
Untrusted content. Mail, documents, events, app reviews and ad search terms are treated as untrusted input; tool descriptions tell the model not to follow instructions found inside them, and bodies are truncated.
Audit log of every operation (account, operation, query or IDs; never bodies or tokens).
One code path for credentials (
tokenstore.py): Keychain locally, a private S3 bucket on AWS.
Remote mode
Claude app -> Lambda Function URL (HTTPS) -> Lambda (FastMCP, streamable HTTP, stateless)
|-- private S3 bucket (logins, OAuth state)
'-- SSM Parameter Store (secrets/config)OAuth 2.1 authorization server in
oauth_provider.py: dynamic client registration, PKCE, single-use authorization codes, rotating refresh tokens, tokens stored as SHA-256 hashes.Owner-only sign-in through Google, checked against an allowlisted email; redirect URIs are limited to Claude's own callback; requests with a wrong Host header are rejected.
The server refuses to start without its OAuth configuration, so it can never be exposed unauthenticated.
Runs on the AWS free tier; a reserved-concurrency cap limits abuse and setting it to 0 switches the server off.
Deployment (AWS SAM) is described in deploy/README.md.
Local setup
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python -r requirements.txt
MS_CLIENT_ID=<entra app id> .venv/bin/python login.py <account> # one browser login per account
MS_CLIENT_ID=<entra app id> .venv/bin/python server.pyThe app-business tools are optional and each is configured through environment variables (SSM parameters in remote mode). Without them, the matching tools return a "not configured" error:
Integration | Variables |
Apple Ads |
|
App Store Connect |
|
Google Play | a service account ( |
Applyra |
|
Accounts are listed in accounts.json (not committed), for example {"hotmail": "outlook", "work": "gmail"}. Google logins need an OAuth desktop client JSON at ~/.config/personal-mcp/google_client.json.
Status
Personal project. The Google Play report parsing follows Google's documentation but has not been checked against every report type. There is no automated test suite; the OAuth flow was checked with a local script and the deployment was verified by hand. Nothing here is audited, so review it before trusting it with your own accounts.
License
MIT, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Gmail, Outlook, Drive, OneDrive and calendars for AI agents. Many accounts, one endpoint, audit log.
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
- WorkwaeOAuthcom.workwae
Email, calendar and contacts for AI agents: Gmail, Microsoft 365 and IMAP accounts behind one API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage multiple email accounts with secure credentials, local full-text search, thread-aware replies, and automation.7 npmMIT
- AlicenseAqualityBmaintenanceEnables AI assistants to read, create, update, move, and delete calendar events, list calendars, and query free/busy across multiple independent Google accounts through a single interface, with each account routed explicitly and gated by role-based access control. It also includes a built-in personal time-management assistant and stores each account's OAuth tokens in a local encrypted vault.2593 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude and Gemini to access and manage multiple Google accounts simultaneously across services such as Gmail, Drive, Calendar, YouTube, Sheets, Analytics, AdSense, and Fitness, with create, read, update, and delete operations. It runs locally without external intermediaries to keep account access private.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to read, search, send, schedule, and organize email across multiple IMAP/SMTP accounts, including drafts, provider-aware labels, real-time inbox watching, verification-code capture, and analytics. Supports OAuth2, calendar extraction, and both local stdio and networked Streamable HTTP access.17 npmISC