Persome MCP Server

Persome MCP Server

Enables MCP agents to query a local, cross-app personal model built from macOS activity, providing search, receipts, and model tools.

Category
访问服务器

README

Persome

The local-first Personal Model Runtime for macOS. Persome observes the apps you already use, turns cross-app activity into an inspectable model of a real person, and serves that model to MCP agents.

CI Release License: Apache-2.0 macOS 13+ MCP

Star Persome on GitHub to follow the Runtime and help prioritize the next MCP integrations.

Persome local personal-model viewer rendering a dense synthetic Point, Line, Face, Volume, and Root graph

Actual /model screenshot produced by scripts/sample_demo.py --showcase: 424 synthetic Points, 146 Lines, 12 Faces, 4 Volumes, and 1 Root. It contains no personal data.

Product job

Persome runs quietly on one Mac and does four jobs:

  1. Collect focused macOS Accessibility (AX) context across apps, with an optional on-device OCR fallback for AX-poor surfaces.
  2. Model observations into sourced facts, evolving relations, stable patterns, cross-domain structure, and one current Root.
  3. Serve local memory and model tools over MCP.
  4. Give control back through receipts, time travel, correction, export, and deletion.

This is the Runtime, not a hosted account or a single assistant's private memory. One local model can be used by Claude Code, Codex, Cursor, or another trusted MCP client.

Five-minute sample demo

See the whole model without an API key, Accessibility permission, or access to your real ~/.persome data. This path requires Git and uv:

git clone https://github.com/Persome-ai/persome-core.git
cd persome-core
uv run python scripts/sample_demo.py

Add --showcase to render the denser, still fully synthetic model used in the README image.

The script opens http://127.0.0.1:8743/model, serves MCP at http://127.0.0.1:8743/mcp, and deletes its temporary synthetic data when you press Ctrl-C. To inspect the exact search, receipt, and snapshot payloads:

PERSOME_LLM_MOCK=1 uv run python scripts/sample_demo.py --json

With the sample server still running, verify the actual MCP transport from a second terminal:

uv run python scripts/verify_sample_mcp.py

This sample path is deliberately separate from the real-data path below.

Quick start with your data

Requirements: macOS 13 or newer, Xcode Command Line Tools, and a Python build with SQLite 3.42+ (the installer verifies the secure FTS capability). The installer finds or installs uv, provisions Python 3.11-3.13, compiles the Swift AX helpers, generates the local screenshot-encryption key, enables and verifies local OCR, and offers to register detected MCP clients. Before it reports success, a native onboarding flow explains and requests Accessibility and Screen Recording separately, starts Persome, checks local health, and writes a fresh capture. Its fallback uv download is version-pinned and checked against repository-pinned SHA-256 digests; the Runtime environment is installed from the committed uv.lock, and the complete build-backend closure is hash-constrained rather than resolved afresh.

git clone https://github.com/Persome-ai/persome-core.git
cd persome-core
bash install.sh

persome doctor
persome onboard
persome ocr status --check
persome model open

persome onboard is the repeatable recovery path. It shows one plain-language macOS dialog before each system permission request and does not complete until Accessibility and Screen Recording are granted. It then verifies the isolated OCR worker, leaves the daemon running, polls GET /health, and forces one fresh capture. OCR supplies text for AX-poor apps such as WeChat and Feishu; pixels never enter an LLM prompt. Persome does not require Full Disk Access.

# Recheck or repair OCR onboarding; disable is always explicit and reversible.
persome onboard
persome ocr setup
persome ocr status --check
persome ocr disable

An LLM is optional for collection and BM25 recall, but required for semantic modeling. During installation, the provider wizard asks you to choose a service and enter its API key. Persome supplies that provider's endpoint and default model, tests completion and tool calling, and only then saves the route. Existing keys are detected automatically. API keys go to the owner-only ~/.persome/env file under the provider-neutral PERSOME_LLM_API_KEY name; provider-specific environment variables are import sources only. The non-secret route goes to ~/.persome/config.toml. Nothing ships with a key.

# If provider setup was skipped during installation:
persome llm providers
persome llm setup
persome llm status --check

# Restart after changing the active provider:
persome stop || true
persome start

Persome speaks two wire protocols: native Anthropic Messages and OpenAI-compatible Chat Completions. Presets cover Anthropic, OpenAI, DeepSeek, OpenRouter, Gemini, Groq, Mistral, xAI, Qwen, Moonshot/Kimi, Zhipu GLM, SiliconFlow, Together, Fireworks, Cerebras, Azure OpenAI, Ollama, LM Studio, and vLLM. custom-openai and custom-anthropic accept another compatible endpoint. Azure and custom endpoints use a clearly marked advanced setup path. A preset means the route is configured, not that every model has the necessary capabilities; Persome warns when the default model cannot call tools.

Active work is reduced every five minutes by default. A first useful recall is therefore expected within ten minutes of valid capture plus a working semantic provider; persome status, persome model status, and the viewer explain sparse or degraded states instead of inventing geometry.

Proof points

Local-first

  • Durable Markdown, SQLite/FTS5, model snapshots, and logs live under ~/.persome unless PERSOME_ROOT is set.
  • AX is the default signal. Optional PP-OCRv6 runs locally in an isolated subprocess with bundled weights.
  • The HTTP/MCP server is restricted to loopback (127.0.0.1 by default), requires an owner-local bearer on API/MCP routes (or its one-use derived viewer capability), and emits no telemetry.
  • Only configured semantic stages send derived text to the selected provider's LLM or embedding endpoint.

Cross-app

The Swift watcher reads the focused AX tree across native and browser apps. Persome normalizes focused element, visible text, window, application, URL, and time into one capture and session pipeline. OCR is a fallback, not a parallel cloud recorder.

Agent-ready

  • Authenticated streamable HTTP MCP: http://127.0.0.1:8742/mcp
  • stdio MCP: persome mcp
  • Stable model contract: persome model export and GET /model/graph
  • Evidence tools: search, read_receipt, verify_fact, and get_model_snapshot

Connect an MCP client

Register an owner-local stdio server. These clients launch it on demand, so the daemon does not need to be running and no bearer is copied into their config:

persome install claude-code
persome install codex
persome install claude-desktop
persome install opencode

# Generate a stdio config that can be merged into Cursor's MCP config:
persome install mcp-json --filename persome-mcp.json
Client Verified configuration Check
Claude Code persome install claude-code claude mcp list
Codex CLI / IDE persome install codex codex mcp list
Claude Desktop persome install claude-desktop fully quit and reopen the app
opencode persome install opencode opencode mcp list
Cursor merge the generated mcpServers.persome object into .cursor/mcp.json or ~/.cursor/mcp.json Cursor Settings -> MCP

The canonical JSON shape is:

{
  "mcpServers": {
    "persome": {
      "command": "persome",
      "args": ["mcp"]
    }
  }
}

See MCP client setup and verification for authenticated HTTP configs, uninstall commands, and privacy boundaries.

Real MCP query with a cited answer

The following result is generated by the committed synthetic sample through the same search and read_receipt implementation exposed by MCP.

Tool: search
Input: {"query":"When does the user prefer focused writing?","top_k":2}

Top result:
  id:        20260701-0800-d4e5f6
  path:      project-work.md
  timestamp: 2026-07-01T08:00
  content:   The user reserves mornings for focused writing and review.

Tool: read_receipt
Input: {"entry_id":"20260701-0800-d4e5f6"}

A grounded client response can then say:

The user prefers mornings for focused writing and review. [project-work.md, 2026-07-01 08:00; receipt 20260701-0800-d4e5f6]

The receipt is resolvable, the superseded earlier statement remains available as history, and the answer does not rely on the model's unsupported memory.

Benchmark and verification status

This repository reports Runtime engineering evidence, not a paper-quality personalization benchmark.

Gate Public evidence Current status
Fresh root -> complete geometry tests/test_runtime_model_e2e.py deterministic synthetic pass
MCP search -> receipt sample_demo.py + verify_sample_mcp.py real streamable HTTP MCP, deterministic synthetic pass
Offline Runtime behavior pytest -m "not macos and not integration" complete offline suite; no provider key
Package completeness clean wheel install + bundled Swift, Three.js, and PP-OCRv6 checks required by CI/release
Release provenance SHA-256 manifest + GitHub artifact attestations from a tag reachable from main required by release workflow
Secret and personal-data safety secret_scan.py + pii_scan.py required by CI/release
Memory quality / next-action prediction separate benchmark repository not reported here

The sample uses synthetic fixtures and cannot establish recall quality on a real person. No cross-user benchmark, next-action accuracy, latency percentile, or comparison win is claimed. The launch machine's three isolated source installs had an 11.896-second median with a warm uv cache; conditions and limitations are recorded in benchmark scope.

Why Persome

These projects solve adjacent but different jobs:

System Primary job Where Persome differs
screenpipe searchable local screen/audio history and developer platform Persome centers an evolving Point/Line/Face/Volume/Root personal model with correction and receipts for MCP agents.
Mem0 a memory layer populated by application or conversation events Persome begins with ambient macOS work context, owns the local capture/session pipeline, and exposes an inspectable model rather than only a memory API.
Assistant/platform memory convenience inside one provider or client Persome is a local Runtime shared across trusted MCP clients; data, export, correction, and deletion remain under the user's control.

Persome is not a replacement for a full screen archive, a hosted vector memory, or a provider's preference feature. Choose it when the core requirement is a local, cross-app, auditable model that multiple agents can query.

How it works

flowchart LR
  AX[macOS AX watcher] --> S0[S0 debounce]
  OCR[Optional local OCR] --> S1[S1 normalized capture]
  S0 --> S1
  S1 --> BUF[Capture buffer]
  BUF --> TL[1-minute timeline]
  TL --> SES[Deterministic sessions]
  SES --> DELTA[5-minute memory delta]
  DELTA --> PL[Points and Lines]
  PL --> FV[Faces and Volumes]
  FV --> ROOT[Root]
  PL --> RET[BM25 and optional dense retrieval]
  FV --> MCP[MCP, export, viewer]
  ROOT --> MCP
  RET --> MCP

Every modeled object keeps source receipts and bitemporal history. A sparse store can truthfully contain Points and Lines without a Face, Volume, or Root. The viewer shows that incomplete state rather than fabricating one.

Read Runtime architecture, the model contract, and the detailed maintainer architecture.

Inspect, correct, export, and delete

# Inspect
persome status
persome model status
persome faces-report
persome contradictions
persome model open

# Correct or revoke one memory while retaining its audit trail
persome correct --help
# Agents can also call MCP correct_memory.

# Export a redacted owner-only snapshot (0600)
persome model export

# Delete model memory, or all captures/timeline/model state
persome stop
persome clean memory
persome clean all

For a complete uninstall that preserves personal data by default:

bash uninstall.sh

# Explicitly remove the remaining data, config, env, exports, and logs:
bash uninstall.sh --delete-data --yes

Client registrations are removed separately and idempotently:

persome uninstall claude-code
persome uninstall codex
persome uninstall claude-desktop
persome uninstall opencode

See operations and data control for exact paths, backup advice, export sensitivity, reset behavior, and manual removal steps.

Privacy boundary

  • Personal data remains local until a configured model stage or connected agent sends selected text to its own provider.
  • MCP capture tools can return raw screen text, titles, URLs, and focused-field values. Bearer/stdio access is a personal-data capability; connect only clients you trust.
  • Screenshots are omitted from MCP by default and encrypted at rest when retention is enabled.
  • persome model export is redacted by default; --raw is an explicit opt-out.
  • There is no built-in remote account, sync service, telemetry, meeting audio capture, computer-use actuation, or filesystem profiler.

Read Security and privacy before using real personal data, and report vulnerabilities through SECURITY.md.

Platform support

Platform Capture Local OCR Runtime / MCP
macOS 13+ on Apple Silicon (arm64) supported bundled PP-OCRv6 supported
macOS 13+ on Intel (x86_64) supported AX path unavailable because Paddle does not ship the required Intel wheel supported
Linux no live macOS capture not packaged offline tests and development only
Windows unsupported unsupported unsupported

Python 3.11-3.13 with SQLite 3.42+ is supported by the installer. See operations and troubleshooting.

Persome and Personome

Persome is this open-source Runtime and project name. Personome is the research term for the learned model of one person: a dynamic state assembled from sourced observations, relations, stable patterns, and higher-level structure. The product name stays Persome in commands, packages, paths, APIs, and documentation.

Paper and architecture-note status

This repository ships the executable Runtime and an implementation-oriented architecture note. The architecture documents are not a peer-reviewed paper, and the Runtime's synthetic gates are not publication benchmarks. The paper, benchmark suite, data statements, and project publication will live as separate artifacts with independent licenses before release. See licensing boundaries and benchmark limitations.

Roadmap

The public roadmap is issue-driven:

  • more tested MCP client integrations;
  • richer first-run permission diagnostics;
  • explicit import/export interoperability;
  • Intel and future-macOS compatibility evidence;
  • a separate, reproducible personal-model benchmark suite.

Browse starter issues or start a design question in Discussions.

Contributing and community

Read CONTRIBUTING.md, follow the Code of Conduct, and use SUPPORT.md to choose the right channel. Every commit requires DCO sign-off, and CI blocks known secrets, personal data, non-English source text, contract drift, lint failures, and offline regressions. Third-party Actions are pinned to reviewed commit SHAs and workflow permissions default to read-only.

Support Persome

If an inspectable, user-owned personal model is useful to your agents, star Persome on GitHub and share the MCP client or workflow you want supported in Discussions.

License

Runtime code is Apache-2.0. Paper, benchmark, project-note, third-party, and personal-data boundaries are explained in LICENSES.md. Required incorporated-work notices remain in NOTICE and THIRD_PARTY_NOTICES.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选