rolodex
A local-first contact management MCP server with SQLite storage and Google Contacts sync, enabling AI agents to upsert, search, log interactions, and surface follow-ups for relationships.
README
rolodex
Your relationship rolodex, as a standalone app you run locally. Own your contacts (local SQLite), sync them with your Google Contacts, and keep track of who you met, the verdict, and the next step — searchable, with a logged history of every touchpoint.
Why this exists
A static contacts file is a goldfish — nothing maintains it. Rolodex gives you a working contact list you actually use: log who you met, set a verdict and next step, search it, and (soon) see who's gone cold. Because it syncs with Google Contacts on your credentials, it also reaches your Gmail contacts without anyone else holding your token.
Run it
npm install
npm run shell
This starts a local server on http://localhost:4173 (loopback only — never
reachable from other devices) and opens it in your browser. On first run
you'll walk through a five-screen setup wizard: pick where your database
lives, optionally connect Google Contacts (paste an OAuth client id/secret),
a quick check that secure credential storage works, and finish — no account
to create, no login screen, straight into your (empty) contact list. From
there: add a contact, search, log interactions, and pull in your Google
Contacts once connected.
There is no login/logout in this app. It's single-user-per-instance —
whatever access control you need is your OS account / filesystem
permissions, not anything rolodex enforces itself. See
docs/ARCHITECTURE.md for why that's a deliberate
decision, not a gap.
The shape
- You own the data — SQLite, stored at
~/.local/share/rolodex/rolodex.dbby default (or wherever the wizard's Database screen points it, orROLODEX_DB). Export any time; no lock-in. Full-text search (FTS5) needs Node 23+; on Node 22.x it degrades gracefully to a slower but fully functional LIKE-based scan — contacts and interactions work identically either way. - Google Contacts sync — one-shot pull today (push/two-way is a planned
follow-up), deduped by resource name/email. Verdict/angle/next-step are
local-only and always survive a sync. Runs on your OAuth, stored via the
OS keychain (
SecretsAdapter) — never an env var, log, or file. - Search + interaction logging — find a contact by name/org/what-they-do/ angle/tags, and log calls/emails/meetings against them.
Relationship model
Each contact carries: org, role, how you met them, what they do, the
partnership angle, a verdict (strong / watch / referral-only /
pass / none), and a next step. Interactions are logged so you can see
the full touch history per contact.
MCP server (secondary, not yet wired up)
src/mcp/server.ts is a stdio MCP server exposing rolodex_upsert,
rolodex_search, rolodex_followups, rolodex_log_interaction,
rolodex_sync_google — meant for adding rolodex as a tool to an agent host.
Every tool body is still a stub today; this is a secondary integration
surface planned for after the standalone app, not the primary way to use
rolodex right now. Run it (once implemented) with npm run dev.
Development
npm run typecheck # tsc --noEmit
npm test # vitest
npm run build # compile to dist/
Status
v0.1.0 — the standalone app is the primary, working surface: shell +
server, setup wizard, contact CRUD, search, interaction logging, and a
one-shot Google Contacts pull all work end to end. See
docs/ARCHITECTURE.md for the full architecture and
the list of remaining gaps (Google push/two-way sync, the MCP tool bodies,
enrichment-on-add, a "who's gone cold" view).
License
MIT © 2026 Mathew Dostal
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.