
Cosmos Mcp
io.github.teampolarityPublished by GitHub account teampolarityv0.7.1Updated Oct 24, 2026
Personal knowledge graph every MCP client reads from and writes to. Portable across agents.
Overview
Gives an assistant read and write access to a personal Cosmos knowledge graph, so observations, events and preferences persist across MCP clients.
- What you can do
- Exposes eleven tools: four read tools (whoami, export, get_graph, ask) and seven write tools (observe, record_event, record_preference, capture_turn, reconstruct_hours, dump, checkin, declare) that post observations, events, preferences, location dumps and check-ins to the Cosmos graph. A CLI adds local sync subcommands for iMessage, Claude Code transcripts, shell history, browser and calendar, plus a macOS background daemon. The graph is stored in the user's Cosmos account and is meant to be portable across clients.
- When to use it
- Use it when you want one shared memory layer that several MCP clients (Claude Code, Claude Desktop, Cursor, Codex, Zed, Continue) read from and write to, instead of each tool keeping its own private context. It also suits users who want local messages, notes or shell history folded into that graph. It is less useful if you only need a single client's session memory.
- Requirements
- Local Node.js process run via npx from the npm package @polarity-lab/cosmos-mcp over stdio. Needs a pmk_ key from the Cosmos connectors page, supplied as COSMOS_TOKEN or stored in the macOS keychain; optional COSMOS_URL, COSMOS_MCP_KEY, COSMOS_USER_ID and COSMOS_SYSTEM_KEY variables. Network access to cosmos.polarity-lab.com. macOS-only features (keychain, deep-link handler, background daemon, iMessage and calendar sync) require Full Disk Access.
Installation
In SourceWeft
- Open Cosmos Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
cosmos-mcp
One exocortex. Every agent.
MCP server for your Cosmos graph.
[npm] [license] [site] [glama]
Every AI you use is building its own private graph of you. Claude has one. ChatGPT has one. Cursor has one. None of them talk to each other, and none of them are yours.
Cosmos inverts that. Your knowledge graph lives in one place, and any MCP-capable client (Claude Code, Claude Desktop, Cursor, Codex, Zed, Continue) reads and writes to the same one. When an agent notices something durable about you, it lands in the graph. When you switch tools, the graph follows. The user, not the platform, owns the integration layer.
The thing you carry is a .polarity file. Yours.
One-line install
On macOS this installs the MCP server, registers cosmos-mcp://, wires Claude Desktop, Claude Code, Cursor, Codex, Zed, and Continue, then installs Cosmos Sync.app so iMessage, browser history, calendar, Claude Desktop transcripts, and shell history can sync in the background. On linux and windows it installs the MCP server path only.
If you want to inspect before changing anything:
Provisioning
There are two ways to get a pmk_… key onto your Mac.
Automatic. Sign in at cosmos.polarity-lab.com/connectors, tap "open in cosmos-mcp." The OS opens a one-shot handler that writes the key into your system keychain. You never see the raw key.
For that deep link to work, register the URL scheme once:
This drops a tiny .app into ~/Library/Application Support/cosmos-mcp/ and registers cosmos-mcp:// with Launch Services. macOS-only.
Manual. If you already have a pmk_… key, or you do not want to install the handler:
The CLI validates the key against cosmos, then stores it in the macOS system keychain under service cosmos-mcp-key. Subsequent imessage sync, browser sync, calendar sync calls read from the keychain. No env var needed.
Confirm iMessage access.
Verifies Full Disk Access is granted and reports how many chats are visible. If you see an EACCES message, open System Settings, Privacy & Security, Full Disk Access, and add Terminal (or whichever app runs the CLI).
CI. Set COSMOS_TOKEN=pmk_… in env. It takes precedence over the keychain, so existing pipelines keep working untouched.
Manual MCP config
The installer handles this for common clients. If you want to wire a client by hand, point it at the package.
This opens your browser. Sign in at cosmos.polarity-lab.com, approve a per-user key, and the token lands at ~/.config/cosmos-mcp/token (0600). Then point any MCP client at it:
That config drops into ~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop, your .cursor/mcp.json for Cursor, the equivalent for whichever client.
What you get
Eleven tools, four read, seven write.
Read
Write
Sources
The MCP server is one way to write to the graph. Cosmos accepts source pages from anywhere you keep notes, and the MCP read tools see all of it through the same view.
Unchanged pages are skipped server-side, so re-syncing a quiet vault or stable Notion workspace costs almost nothing. The iMessage sync is incremental too, watermarked on the last successful run, so re-running it is a no-op until new messages arrive.
iMessage sync
cosmos-mcp ships an imessage subcommand that reads your local Messages database and lands every conversation in your graph.
A three-rule slop filter (no-reply senders, short-code numbers, low-volume contacts) keeps the graph clean. Your AddressBook resolves phone numbers and emails into real contact names. The reading is local to your Mac; only the extracted, normalized turns go into your cosmos graph, which is your account.
Claude Desktop sync
cosmos-mcp ships a claude-desktop subcommand that watches Claude Code session transcripts and lands each turn in your graph. The desktop chat surface itself stores conversations server-side, so the live, watchable on-disk source is ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl.
Tool-use blocks, hook plumbing, and sub-agent (sidechain) turns are stripped client-side; only the visible text the user and the assistant exchanged is shipped. Each session id becomes its own thread node, keyed by (user_id, "claude-desktop", session_id).
Background sync (macOS)
cosmos-mcp daemon install drops a LaunchAgent that ticks every four hours and runs the browser, iMessage, calendar, claude-desktop, and shell-history syncs back-to-back. The agent fires a signed, notarized Cosmos Sync.app bundle that ships inside the npm package and gets copied into ~/Applications/Cosmos Sync.app at install time.
After install, grant the bundle Full Disk Access once:
- open System Settings → Privacy & Security → Full Disk Access
- click +, then drag
~/Applications/Cosmos Sync.appinto the list - make sure the checkbox next to it is on
- run
cosmos-mcp daemon kickto fire a tick now
Browser sync works without that step. iMessage and Calendar need it because they read TCC-protected SQLite databases on the user side. cosmos-mcp daemon status reports the signing team id, the plist + runner paths, and whether launchd has the agent loaded. cosmos-mcp daemon uninstall removes the plist, runner, and ~/Applications/Cosmos Sync.app.
Configuration
The pitch in three lines
Your AI tools each know fragments of you. They are not allowed to share. Cosmos is the layer that lets them. You hold the key. The graph is portable. When you leave, you take the understanding with you.
License
MIT.
Source: README.md at commit 3d04c64
Tools
0Version history
1- v0.7.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts