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
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
Your IMAP mailbox as an MCP server: read, search and (if you allow it) organize mail. Open source.
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