mcp-server-personal
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., "@mcp-server-personaladd lunch with Sarah next Tuesday at 1pm"
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.
mcp-server-personal
Personal-assistant MCP server for personal data. Part of the personal-assistant
project; built with FastMCP + Starlette + streamable-http, with per-domain
register_tools_* modules.
MCP endpoint: http://localhost:8002/mcp
Tools
Tool | Backend | Config needed |
| local | no |
| Gmail IMAP + app password | IMAP creds |
| local SQLite | no |
Todos and long-term preference memory live in the main app, not in this server. Email is read + label only — sending is deliberately not an MCP tool; drafts go through the assistant's approval card and a separate gated send path.
Related MCP server: mcp-gsuite
Run
cp .env.example .env # fill IMAP creds if you want email tools
uv sync
uv run src/run.pyInspect tools:
npx @modelcontextprotocol/inspector
# connect to http://localhost:8002/mcp (streamable-http)
# if ENABLE_AUTH=true, add header: Authorization: Bearer <MCP_AUTH_TOKEN>Test with the AI agent (LangChain agent over this server's tools):
export OPENAI_API_KEY=sk-... # or set it in .env
uv run ai_agent.py # example question
uv run ai_agent.py "add lunch with Alex to my calendar this Saturday at noon"ai_agent.py automatically sends the bearer token from MCP_AUTH_TOKEN when set.
Authentication
The MCP endpoint is protected by a static bearer token (Starlette
AuthenticationMiddleware + PersonalAuthBackend in src/auth/auth.py):
ENABLE_AUTH=true+MCP_AUTH_TOKEN=<random>in.env— clients must sendAuthorization: Bearer <token>; anything else gets401.ENABLE_AUTH=false— open access (local development).
Generate a token with openssl rand -hex 24.
Observability
Tracing: OpenTelemetry spans per request (
ENABLE_TRACE;TRACE_SPAN_TYPE=localprints to console,otlpexports to a collector).Logging: console + rotating file (
app.log, 1 MB x 3) viaLOG_LEVELandLOG_PATH. All tool failures are logged with tracebacks — start withgrep WARNING app.log/grep ERROR app.logwhen a tool misbehaves.
Tests
uv run pytest tests -vDocker
docker build -t mcp-server-personal .
docker run --rm -p 8002:8002 --env-file .env mcp-server-personalMulti-stage build, non-root user, prod dependencies only; state
(calendar.ics, personal.db, logs) lives in /app/data.
CI/CD
.github/workflows/ci.yaml— on PRs and pushes tomain:uv sync+pytest, then a Docker build (no push)..github/workflows/cd.yaml— manual (workflow_dispatch): builds and pushesghcr.io/<owner>/mcp-server-personal:<version>using the built-inGITHUB_TOKEN, with atest/prodenvironment choice.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that seamlessly interacts with your Google Calendar, Gmail, Drive and so on.30MIT
- AlicenseNot gradedqualityDmaintenanceMCP server to interact with Google Gmail and Calendar APIs. Supports multiple accounts, email search and drafting, and calendar event management.MIT
- AlicenseBqualityDmaintenanceMCP server for interacting with Google Gmail and Calendar via natural language, supporting multiple accounts.359MIT
- AlicenseNot gradedqualityBmaintenanceLocal MCP server for reading/sending email via Gmail and managing Google Calendar events, enabling an AI agent to handle email and calendar operations through natural language.MIT