psyXe MCP Server

io.github.bjenkinsgit由 GitHub 账号 bjenkinsgit 发布v0.1.10更新于 Oct 24, 2026

Apple Notes, Reminders, and Contacts for AI assistants. BERT semantic search. macOS.

概览

AI 生成的概览

让 AI 助手通过 macOS 原生 API 访问 Apple 备忘录、提醒事项与联系人,并提供可选的 BERT 语义搜索。

可以做什么
搜索、浏览与读取 Apple 备忘录,并可按标签筛选及建立语义索引。以 BERT 语义搜索与智能搜索跨所有备忘录找出概念相关内容,并可重建索引与查看索引统计。完整管理提醒事项与列表,包括搜索、创建、编辑、完成与删除。搜索与管理联系人及联系人分组,包括创建、编辑与删除。在授权的文件夹内搜索文件并读取或写入文件。
适用场景
当你希望 AI 助手直接读取或整理 Mac 上的 Apple 备忘录、提醒事项与联系人,或需要在授权文件夹内搜索与读写文件时适用。若需要跨备忘录的概念式搜索,可启用语义搜索功能。
运行要求
仅支持 macOS 12 以上,以本地 stdio 进程运行;建议通过 Homebrew 安装,或自行构建(需 Xcode Command Line Tools、Rust,语义搜索另需 FFmpeg 与约 90MB 的 BERT 模型)。首次使用需在系统设置中授予 Notes、Reminders、Contacts 权限。无需 API 密钥。
安装前请注意
默认对所有备忘录、提醒事项、联系人与文件具有完整访问权限,需用内置访问控制命令限制范围。工具可创建、编辑与删除提醒事项、列表、联系人及文件,误用可能造成数据丢失。若改用远程嵌入端点,备忘录内容会发送至该端点;默认本地 BERT 模式则不会外传数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 psyXe MCP Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

psyXe MCP Server

An MCP server that gives AI assistants access to your Apple Notes, Reminders, and Contacts — with optional BERT-powered semantic search.

All tools run locally via macOS-native APIs (AppleScript, EventKit, Contacts framework). No data leaves your Mac. No API keys required.

New to MCP? Check out the FAQ for answers to common questions about what this is, whether it works with your setup, and how your data stays private.

Video Tutorials

[Notes & Semantic Search]Apple Notes & Semantic Search — Connect your AI to Apple Notes with BERT-powered semantic search
[Apple Contacts]Apple Contacts — Search, create, and manage contacts from your AI assistant
[Apple Reminders]Apple Reminders — Full CRUD for reminders and lists via any MCP client
[Access Control]Access Control — Configure exactly which data your AI can access

What Can It Do?

CategoryToolsDescription
Notessearch_notes, list_notes, get_note, open_note, notes_tags, notes_search_by_tag, notes_indexSearch, browse, and read Apple Notes
Notes (Semantic)notes_semantic_search, notes_smart_search, notes_rebuild_index, notes_index_statsBERT-powered semantic search across all your notes
Reminderslist_reminder_lists, search_reminders, list_reminders, get_reminder, create_reminder, create_reminders_batch, complete_reminder, delete_reminder, edit_reminder, edit_reminders_batch, open_reminders, create_reminder_list, delete_reminder_listFull CRUD for Apple Reminders
Contactslist_contact_groups, search_contacts, list_contacts, get_contact, create_contact, edit_contact, delete_contactSearch and manage Apple Contacts
Filesfile_search, read_file, write_fileSearch and read/write files in granted folders

Install

Homebrew (recommended)

bash
brew tap bjenkinsgit/tapbrew install psyxe-mcp

This installs everything — binary, Swift helpers, FFmpeg, and the BERT model. No compilation required.

Build from Source

bash
git clone https://github.com/bjenkinsgit/psyxe-mcp.gitcd psyxe-mcp./build.sh

The build script handles everything automatically:

  • Installs Homebrew, Rust, FFmpeg, and pkg-config if missing
  • Builds the MCP server binary (Rust)
  • Builds Swift helpers for Reminders and Contacts
  • Copies helpers next to the binary
  • Pre-downloads the BERT model (~90MB) so first search is instant

Build without semantic search (skips FFmpeg and BERT):

bash
./build.sh --no-memvid

Requirements: macOS 12+ (Monterey or later). Xcode Command Line Tools will be prompted if not installed.

The binary and helpers are in target/release/. Use the full path when configuring your MCP client.

Install Apple Shortcuts (optional)

Two shortcuts enable linking Reminders to file artifacts:

bash
./install-shortcuts.sh

This opens each shortcut in Shortcuts.app for you to approve.

Configure Your MCP Client

If you installed via Homebrew, the command is just psyxe-mcp (it's in your PATH). If you built from source, use the full path: /Users/yourname/src/psyxe-mcp/target/release/psyxe-mcp.

Claude Code (CLI)

bash
claude mcp add psyxe -- psyxe-mcp

Or edit ~/.claude/claude_mcp_config.json:

json
{  "mcpServers": {    "psyxe": {      "command": "psyxe-mcp"    }  }}

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "psyxe": {      "command": "psyxe-mcp"    }  }}

Cursor

Open Settings → MCP Servers → Add new server:

json
{  "psyxe": {    "command": "psyxe-mcp"  }}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "psyxe": {      "command": "psyxe-mcp"    }  }}

OpenAI Codex CLI

Edit ~/.codex/config.toml:

toml
[mcp_servers.psyxe]command = "psyxe-mcp"

Note: If you built from source instead of using Homebrew, replace psyxe-mcp with the full path to the binary (e.g., /Users/yourname/src/psyxe-mcp/target/release/psyxe-mcp).

Access Control

By default, the MCP server has full access to all your Notes, Reminders, Contacts, and files. To restrict what your AI can see, use the built-in access control CLI to create and manage ~/.psyxe/access.toml.

No manual file editing is needed — the CLI creates the file with secure permissions (owner-only read/write) on first use.

Quick Start

bash
# 1. See what's availablepsyxe-mcp access discover reminderspsyxe-mcp access discover notes
# 2. Grant access to only what the AI should seepsyxe-mcp access grant reminders "Work"psyxe-mcp access grant notes "Projects"
# 3. Verify your restrictionspsyxe-mcp access list

Once any rule is set for a category, only explicitly granted resources are accessible — everything else in that category is denied.

Discover What's Available

bash
# See your reminder listspsyxe-mcp access discover reminders
# See your contact groupspsyxe-mcp access discover contacts
# See your note folderspsyxe-mcp access discover notes
# See common file locationspsyxe-mcp access discover files

Grant / Revoke Access

bash
# Only allow access to specific reminder listspsyxe-mcp access grant reminders "Work"psyxe-mcp access grant reminders "Shopping" --rw    # read-write
# Only allow access to a specific contact grouppsyxe-mcp access grant contacts "iCloud"
# Only allow access to specific note folderspsyxe-mcp access grant notes "Projects"
# Grant file access to a folderpsyxe-mcp access grant files "/Users/you/Documents" --rw
# Revoke accesspsyxe-mcp access revoke reminders "Shopping"
# See current restrictionspsyxe-mcp access list
# Remove all restrictions (restore full access)psyxe-mcp access reset

Access rules are stored in ~/.psyxe/access.toml with owner-only permissions (chmod 600). The server refuses to load the config if it is group- or world-readable, preventing other processes from tampering with access rights.

Semantic Search

When built with the memvid feature (enabled by default), the server includes BERT-powered semantic search for Apple Notes. This uses memvid-rs to encode your notes into a searchable vector index.

First Use

The first time you (or your AI assistant) run a semantic search, the server will build an index of all your notes. This takes a few minutes depending on how many notes you have. Subsequent searches are instant.

bash
# Or ask your AI assistant: "search my notes for machine learning concepts"# It will automatically build the index on first use.

How It Works

  1. All notes are fetched from Notes.app
  2. Each note is chunked and encoded with a BERT model (384-dimensional embeddings)
  3. Chunks are stored as QR codes in a ProRes video file (compact, durable archive)
  4. A vector index (HNSW) enables instant semantic similarity search
  5. The index auto-detects when notes change and prompts for rebuild

Try It Out

We've included sample notes designed to showcase semantic search:

bash
# Load 10 sample notes into Apple Notes./examples/load-sample-notes.sh
# Then ask your AI assistant to rebuild the index and try queries like:#   "retirement savings"  → finds Tax Strategy (never mentions "retirement")#   "Italian cooking"     → finds Carbonara recipe (never says "Italian")

See examples/sample-notes.md for the full list of demo queries.

Choosing a Different BERT Model

The default model (sentence-transformers/all-MiniLM-L6-v2, 384 dimensions) balances speed and quality. You can swap in any HuggingFace BERT-family sentence-transformer model.

Via environment variable:

bash
MEMVID_MODEL_NAME=BAAI/bge-small-en-v1.5 target/release/psyxe-mcp warmup

Via config file — create memvid_config.toml in the repo root or next to the binary:

toml
[ml]model_name = "BAAI/bge-small-en-v1.5"

After changing models, rebuild the index (ask your AI assistant or run warmup again).

Popular alternatives:

ModelDimensionsTrade-off
sentence-transformers/all-MiniLM-L6-v2384Default. Fast, good quality
BAAI/bge-small-en-v1.5384Retrieval-optimized, slightly better for search
sentence-transformers/all-mpnet-base-v2768Higher quality, ~2x slower
BAAI/bge-base-en-v1.5768Best retrieval quality, needs query prefix

For instruction-tuned models (like BGE), add query/document prefixes:

toml
[ml]model_name = "BAAI/bge-small-en-v1.5"embedding_query_prefix = "Represent this sentence for searching relevant passages: "embedding_document_prefix = ""

Remote Embedding API

Use any OpenAI-compatible embedding endpoint instead of local BERT:

toml
[ml]embedding_provider = "remote"

Then set the endpoint via environment variables:

bash
export EMBEDDING_API_URL="http://localhost:11434/v1/embeddings"  # Ollamaexport EMBEDDING_API_MODEL="nomic-embed-text"

Works with OpenAI, Ollama, vLLM, LM Studio, or any OpenAI-compatible endpoint.

Without Semantic Search

Build without memvid to skip the FFmpeg/BERT dependency entirely (no brew install needed):

bash
cargo build --release --no-default-features

Notes tools still work — they fall back to AppleScript-based text search. All other tools (Reminders, Contacts, Files) are unaffected.

macOS Permissions

On first use, macOS will prompt you to grant permission for:

  • Notes — "osascript" wants to access Notes
  • Reminders — "reminders-helper" wants to access Reminders
  • Contacts — "contacts-helper" wants to access Contacts

Approve these in the dialog that appears. You can review/revoke them later in System Settings → Privacy & Security.

Architecture

┌─────────────────┐     stdio (JSON-RPC)     ┌──────────────┐│  Claude Code /   │ ◄─────────────────────► │  psyxe-mcp   ││  Claude Desktop  │                          │  (MCP server) │└─────────────────┘                          └──────┬───────┘                                                     │                                    ┌────────────────┼────────────────┐                                    ▼                ▼                ▼                             ┌────────────┐  ┌─────────────┐  ┌───────────┐                             │ AppleScript │  │ Swift Helper│  │  memvid   │                             │ (Notes)     │  │ (EventKit,  │  │ (BERT +   │                             │             │  │  Contacts)  │  │  ProRes)  │                             └──────┬──────┘  └──────┬──────┘  └─────┬─────┘                                    ▼                ▼               ▼                             ┌────────────┐  ┌─────────────┐  ┌───────────┐                             │  Notes.app  │  │   EventKit  │  │ NoteStore │                             │             │  │   Contacts  │  │  SQLite   │                             └────────────┘  └─────────────┘  └───────────┘

The MCP server is a thin stdio bridge. All the real work happens in psyxe-mcp-core, the open-source library that provides direct access to macOS-native APIs.

Configuration

Semantic Search (memvid)

Place a memvid_config.toml in the working directory or next to the binary:

toml
[chunking]chunk_size = 700overlap = 100
[ml]device = "metal"    # auto | cpu | cuda | metal
[qr]error_correction = "low"version = 40
[video]codec = "prores_ks"prores_profile = "proxy"library_log_level = "error"

See memvid-rs for all configuration options.

Environment Variables

VariablePurpose
RUST_LOGLog level (default: info). Logs go to stderr.
TOOLS_JSONPath to custom tools.json (overrides embedded)

Troubleshooting

"osascript is not allowed to send keystrokes" Grant Accessibility permission: System Settings → Privacy & Security → Accessibility

"reminders-helper" wants to access your Reminders Click Allow. If you previously denied, re-enable in System Settings → Privacy & Security → Reminders.

Semantic search is slow on first run The BERT model downloads on first use (~90MB). Subsequent runs use the cached model. Index building speed depends on note count — Metal GPU acceleration helps significantly on Apple Silicon.

Notes search returns stale results The server monitors for changes and will prompt your AI assistant to rebuild the index. You can also force it: ask your assistant to "rebuild the notes index".

License

Apache 2.0 — see LICENSE.

This project uses FFmpeg at runtime for ProRes video encoding only (LGPL codec). No GPL-licensed codecs (x264, x265, etc.) are used.

Credits

Built on psyxe-mcp-core, powered by memvid-rs for semantic search.

来源:README.md,提交 eab541d

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.10最新Sep 16, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。