mcpField
U
USRCP — User Context Protocol

USRCP — User Context Protocol

本地服务
usrcp.dev记忆与知识12 周前更新

关于 USRCP — User Context Protocol

USRCP 是本地加密的 SQLite 账本,用于在支持 MCP 的 AI 工具间共享结构化用户上下文,适合在不同 AI 界面间切换的人。集成可采集工作活动,连接的客户端则可读取近期状态和交接摘要。

主要功能

  1. 01在本地加密账本中保存结构化上下文
  2. 02检索近期活动和定向交接摘要
  3. 03通过来源专用适配器采集活动
  4. 04注册支持的编辑器和终端 Agent
  5. 05通过 usrcp-stream 可选语义检索

适用场景

  1. 01在不同 AI 工具间延续项目上下文
  2. 02在新会话中带入近期决策和后续步骤
  3. 03采集 GitHub、Linear 或 Obsidian 中创建的活动
  4. 04在同一台机器上为多个用户保留独立账本

MCP 相关

本地 MCP 服务允许连接的客户端通过 `usrcp_get_state` 读取近期活动,并用 `usrcp_handoff` 请求定向摘要。它也可注册受支持的 MCP 客户端并提供启动说明,但自动检索取决于客户端行为。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"frank-bot07-usrcp": {
"command": "npx",
"args": [
"-y",
"usrcp"
],
"env": {
"USRCP_PASSPHRASE": "<USRCP_PASSPHRASE>"
}
}
}
}
启动命令npx -y usrcp
需要配置的环境变量
USRCP_PASSPHRASE密钥Passphrase used to derive the ledger encryption key. Omit it if the passphrase is stored in the OS keychain via `usrcp keychain store`.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmusrcp0.2.8

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
domainstring是
max_charsinteger否

详细介绍

USRCP — 用户上下文协议

切换 AI 工具,无需重新开始对话。

周二,你告诉 Claude Desktop 你使用的技术栈。周三,Cursor 却一无所知。周四,Codex 又问了一遍。你使用的每个 AI 工具都有自己的记忆,或者根本没有记忆。

USRCP 是一个本地加密的 SQLite 账本,任何支持 MCP 的工具都可以读取和写入。将受支持的工具连接到同一个本地配置文件,让它们共享你近期的工作、决策和偏好。USRCP 目前处于早期 Beta 阶段;自动捕获和回忆取决于具体集成。

可注册到 Claude Desktop、Cursor、Continue、Cline 和终端 Agent(Claude Code、Codex CLI、Copilot CLI、Aider、OpenCode、Antigravity)。可从 GitHub、Linear、Obsidian、Claude Code 会话和 Google Calendar 捕获结构化活动,此外还提供一组实验性的对话捕获适配器。

brew install frank-bot07/usrcp/usrcp
usrcp init

→ 查看实际效果:跨编辑器演示,或者只需运行一条命令,就能在自己的机器上检查协议路径:node scripts/cross-client-proof.mjs(使用两个合成 MCP 客户端,并扫描原始数据库单元格以查找测试内容标记;它不会测试实际的 AI 宿主)。 → Apache 2.0 · 600+ 项测试 · 威胁模型见 docs/SECURITY.md


**核心功能与可选功能:**结构化核心使用精确关键词查找。可选的 usrcp-stream 增加语义回忆功能,但存储和隐私边界有所不同;请参阅下方的功能矩阵。

协议栈

┌─────────────────────────────────┐
│         Agent Layer             │  ← ACP (Agent-to-Agent)
├─────────────────────────────────┤
│         Model Layer             │  ← MCP (Model Context Protocol)
├─────────────────────────────────┤
│     >>> USRCP <<<               │  ← Structured User State (THIS PROTOCOL)
├─────────────────────────────────┤
│         User / Client           │
└─────────────────────────────────┘

一个人,多种 AI 接口

USRCP 是人类用户的上下文层。启动工作流是从一个共享账本中实时检索简明摘要。你的下一个助手应当了解相关的进行中工作、决策、约束和后续步骤。

在一个已连接的工具中讨论你的工作,然后向另一个工具提问:**“我刚才在做什么?”**你不应该还得选择项目、复制摘要或重复背景信息。

已连接的 MCP 客户端可以通过 usrcp_get_state 读取整个配置文件中的近期活动,并通过 usrcp_handoff 请求一份聚焦的实时摘要。本地 MCP 服务会提供启动指令,但客户端必须遵循这些指令;请通过双客户端验收测试验证实际行为。仅有共享账本并不能证明会自动检索。

功能与隐私边界
组件用途边界
结构化核心身份、偏好、项目、事实和时间线内容静态加密;授权 Agent 会收到解密后的上下文
实时上下文检索为已连接的 Agent 提供近期工作和简明上下文按需从本地账本生成;无需传输文件
可选流捕获和语义回忆本地嵌入向量以明文形式存储在磁盘上;征得同意后,可选的外部嵌入服务提供商会收到内容
可选设备中继时间线/流事件同步内容为密文,但元数据可见;本地客户端不会同步整个结构化配置文件

初始 Beta 主要面向在 Claude Code、Codex 和 Cursor 之间切换的用户。域名限制是可选的访问控制,不是正常对话中的必需步骤。更广泛的目标仍然是让人类用户在不同工具之间保持连续性。请阅读上下文所有权,了解检查、更正、来源信息、到期和删除方面的替代方案。

替代方案

OpenMemory 同样专注于跨工具编码上下文和自动捕获。Zep 提供时序知识图谱。这些产品与 USRCP 工作流的部分内容有所重叠。USRCP 提出的优势是:提供简洁、可检查的人类上下文摘要,并由本地加密账本提供支持;支持显式共享,且核心工作流无需云账户。请对比当前版本,并根据现有项目笔记进行测试;不要假设其他产品只是向量存储,或始终要求使用特定提供商。

快速开始

安装

npm(推荐) — usrcp CLI + 加密账本:

npm install -g usrcp        # the `usrcp` command + local ledger
# …or run without installing:
npx usrcp init

无需原生构建、无需编译器、无需 postinstall — usrcp 使用 Node 内置的 SQLite(node:sqlite),因此在任何 npm 版本上运行 npm install 都能正常工作(包括 npm 12+,其默认的 allowScripts 会阻止原生构建脚本)。需要 Node ≥ 22.13(推荐使用 Node 24+)。

Homebrew(macOS / Linux) — 核心 CLI 的替代安装方式:

brew install frank-bot07/usrcp/usrcp

CLI 内置了内联适配器(terminal、mcp-agent、openclaw)。捕获适配器作为独立软件包安装,然后使用设置向导逐一配置:

# structured-state adapters:
npm install -g usrcp-github   # or usrcp-linear, usrcp-obsidian, usrcp-claude-code, usrcp-google-calendar
usrcp setup --adapter=github

# experimental conversation-capture set:
npm install -g usrcp-slack    # or usrcp-discord, usrcp-telegram, usrcp-imessage, usrcp-gmail
usrcp setup --adapter=slack

完整列表请参阅适配器表格(Chrome 扩展和 VS Code 查看器单独发布 — 请参阅各自的软件包 README)。

从源代码安装 — 适用于贡献代码或运行尚未发布的更改:

git clone https://github.com/frank-bot07/usrcp.git
# Build the protocol core first — usrcp-local's build compiles it.
cd usrcp/packages/usrcp-core && npm install && npm run build
cd ../usrcp-local && npm install && npm run build && npm link
首次运行
# Interactive init — prompts for passphrase by default
usrcp init

# Non-interactive:
usrcp init --passphrase "your secret phrase"       # passphrase mode
usrcp init --dev                                     # dev mode (key on disk)

# Start the server
usrcp serve

在密码短语模式下,init 会询问是否将密码短语存储在 OS 钥匙串(macOS Keychain / Linux Secret Service)中;使用 --keychain / --no-keychain 可非交互式地指定。存在钥匙串条目时,MCP 客户端会自动启动服务,配置文件中无需存放明文密码短语。可随时管理该条目:

usrcp keychain store    # add/replace (verifies the passphrase unlocks this ledger first)
usrcp keychain status   # show backend + whether an entry exists
usrcp keychain clear    # remove it

# Prefer no keychain? The env var path still works:
USRCP_PASSPHRASE="your secret phrase" usrcp serve

init 会创建 ~/.usrcp/users/<slug>/,其中包含加密的 SQLite 账本,并将 MCP 服务条目写入 Claude Desktop 的配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

默认采用单用户模式,本 README 其余部分讨论的所有共享机器注意事项均以此为前提。如果两个人使用同一个 OS 账户(或你并行运行多个身份),请参阅下文的在一台机器上使用多个用户 — 每位用户都会在 --user=<name> slug 下拥有独立的账本和密码短语。

添加捕获适配器

适配器会监视某个来源(GitHub 组织、Obsidian 库、Linear 工作区等),并将你创建的活动记录追加到本地 MCP 服务读取的同一账本中。安装适配器软件包,然后运行设置向导进行配置:

npm install -g usrcp-linear          # install the adapter you want
usrcp setup --adapter=linear         # configure it (validates credentials, picks scope)
# or, to browse what's installed:
usrcp setup                          # interactive picker

完整列表请参阅下方的适配器表格。

在一台机器上使用多个用户
usrcp init --user=frank
usrcp init --user=jess
usrcp serve --user=frank   # or rely on --user in the registered MCP entry
usrcp users                # list available slugs

每位用户都会拥有独立的账本、密码短语和 MCP 服务条目。

密码短语模式与终端 Agent

如果你在密码短语模式下初始化了 USRCP(使用默认设置运行 usrcp init),MCP 服务需要密码短语来解密账本。终端适配器的 register() 只会将 command + args 写入每个 Agent 的配置,不会将密码短语写入其中。

推荐:使用操作系统钥匙串。 一条命令即可适用于所有 Agent,无论是通过 shell 启动还是通过 GUI 启动,磁盘上都不会以明文形式存储密码短语:

usrcp keychain store

服务会依次检查 USRCP_PASSPHRASE、--passphrase 和钥匙串,因此现有设置无需更改即可继续使用。(Windows:钥匙串支持尚未接入,请使用下方的环境变量方式。)

环境变量替代方案,如果你更愿意不使用钥匙串:

  • 通过 shell 启动的 Agent(claude-code、codex、copilot-cli、aider、opencode)——将以下内容添加到 ~/.zshrc / ~/.bashrc,然后重启 shell:

    export USRCP_PASSPHRASE="your secret phrase"
    
  • 通过 GUI/IDE 启动的 Agent(cursor、cline、continue、antigravity)不会继承 shell 环境。你可以在 Agent 配置文件中 usrcp 服务条目下添加 env 块(Cursor/Cline/Continue 使用 JSON,Codex 使用 TOML),也可以在 macOS 上通过 launchctl setenv USRCP_PASSPHRASE "..." 设置系统级 GUI 环境变量(会一直生效到重启;如需永久生效,请使用 ~/Library/LaunchAgents/ plist 文件)。

请将任何写入密码短语的配置文件视为机密——密码短语会以明文形式存储在磁盘上,这是原本采用加密方案中最薄弱的一环。这正是 usrcp keychain store 旨在避免的问题。

向导会在注册后显示相同的说明,你也可以重新运行 usrcp setup 或 usrcp adapter add terminal --targets=<list> 查看提示。

捕获适配器

适配器是独立进程,会从数据源读取信息,并通过与 MCP 服务相同的静态加密流程,将事件追加到本地账本。每个适配器都会自行处理身份验证、幂等性和游标持久化。

结构化状态适配器

这些是主要适配器:它们捕获真正结构化的开发和工作状态——问题、PR、笔记、日历事件、编码会话上下文。这类数据正是 USRCP 的架构和精确关键词搜索所针对的内容。

适配器捕获内容模式要求
usrcp-github你创建/合并/关闭的 PR、你创建的问题、你撰写的评论和评审;可选地限制在组织允许列表内仅捕获(v0)GitHub 个人访问令牌(repo + read:user 权限范围)
usrcp-linear你在 Linear 中撰写的问题和评论仅捕获(v0)Linear 个人 API 密钥
usrcp-obsidian你在 Obsidian 库中创建或编辑的笔记仅捕获(v0)本地库目录
usrcp-claude-code你 Claude Code CLI 会话中的用户/助手轮次,从 ~/.claude/projects/<cwd>/*.jsonl 持续读取仅捕获(流式)已安装 Claude Code CLI;在 ~/.usrcp/claude-code-config.json 中设置 allowlisted_projects
usrcp-google-calendar主要日历中已结束的定时事件仅捕获(v0)Google Cloud OAuth 客户端 + 已启用的 Calendar API

此外,随 brew CLI 一同提供的内联适配器(terminal、mcp-agent、openclaw)会将相同的结构化状态接入终端 Agent 和 Agent 框架——请参阅编辑器与 CLI 集成和 Agent 框架集成。《VS Code 查看器》可只读浏览生成的账本。

对话采集适配器(实验性)

这些适配器会将允许列表中的活动采集到本地账本。可选的流处理层包含语义检索,其存储边界与核心不同:启用前请参阅安全边界。采集到内容并不意味着其他助手已检索到或正确理解了上下文。初期产品测试旨在通过简洁的检查点实现跨界面的实时连续性。

适配器采集内容模式要求
usrcp-imessage你在 Apple iMessage 中发送的消息采集 + 读取器仅限 macOS。 Messages.app 的“完全磁盘访问”权限;brew install steipete/tap/imsg
usrcp-slack你在 Slack 中发送的消息;来自聊天的 @usrcp 查询采集 + 读取器 + 机器人付费 Slack 套餐(Pro/Business+/Enterprise)——免费版限制机器人 API;回复 @usrcp 需要 Anthropic API 密钥
usrcp-discord你在 Discord 中发送的消息;来自聊天的 @usrcp 查询采集 + 读取器 + 机器人你管理的 Discord 服务器;回复 @usrcp 需要 Anthropic API 密钥
usrcp-telegram你在 Telegram 中发送的消息;来自聊天的 @usrcp 查询采集 + 读取器 + 机器人Telegram 机器人令牌(BotFather);回复 @usrcp 需要 Anthropic API 密钥
usrcp-gmail你在 Gmail 中发送的消息(主题、正文、收件人、标签)仅采集(v0)Google Cloud OAuth 客户端 + 已启用 Gmail API
usrcp-extensionclaude.ai 上的对话;用于查询账本的 /usrcp 斜杠命令采集 + 注入器仅限 Chrome。 手动加载未打包扩展程序(开发者模式 → 加载已解压的扩展程序)

安装适配器的软件包(npm install -g usrcp-<value>),然后使用 usrcp setup --adapter=<value> 配置(例如 npm i -g usrcp-linear && usrcp setup --adapter=linear)。单独运行 usrcp setup,即可在已安装的适配器中交互式选择。

所有适配器都会写入可配置的 domain(默认值与来源名称一致),并使用稳定的来源端 ID 作为幂等键,因此重复轮询或重复监视同一窗口不会造成重复写入。仅采集适配器不会回复;机器人适配器只会响应明确的 @usrcp / /usrcp 提及,并使用用户可见的同一账本作答。

Agent 框架集成

这些适配器会将 USRCP 的工具提供给第三方 AI Agent 框架。它们本身不会采集新事件——来自外部界面(Discord、Slack、iMessage 等)的采集仍通过上方专用的采集适配器进行。请先安装框架,然后运行 USRCP 设置流程。

集成用途模式要求
usrcp-hermesHermes Agent 的记忆提供方插件。将 USRCP 添加为第 9 个外部记忆提供方;提供系统提示词上下文、预取和 sync_turn 采集。双向插件已安装 Hermes;usrcp CLI 位于 PATH 中;mcp Python 软件包
openclaw在你的 OpenClaw 配置中将 usrcp serve 注册为 MCP 服务。OpenClaw Agent 可通过 Claude Code 使用的同一路径获得全部 12 个 USRCP 工具。读取端(MCP 服务)已安装 OpenClaw——请先从 https://docs.openclaw.ai/start/getting-started 安装,然后运行 usrcp setup --adapter=openclaw
Ledger 查看器

只读客户端,通过本地 usrcp serve 子进程浏览加密账本。不进行网络调用;查看器不会在主机进程之外接触明文。

查看器界面模式要求
usrcp-vscodeVS Code 活动栏中的 USRCP 视图 — 按领域分类的事实树、状态指示器、“Open Ledger Directory”命令。只读客户端VS Code;usrcp CLI 位于 PATH 中(或设置 usrcp.binaryPath)
跨设备同步

usrcp-cloud 是可选的实验性密文中继。当前,本地同步客户端只传输时间线事件和领域映射。完整的结构化状态同步不属于启动工作流;同一台设备和配置文件上的 Agent 已共享实时账本;跨设备连续性仍需单独验证。中继元数据仍然可见。

MCP 工具(12 项)

工具描述
usrcp_handoff按领域整理的精简启动简报,包含已审核的事实和近期工作
usrcp_get_state查询身份、偏好、项目和时间线
usrcp_append_event记录交互事件
usrcp_update_identity更新用户角色、专业知识和沟通风格(可选使用 expected_version 执行读取-修改-写入)
usrcp_update_preferences更新语言、时区和详细程度
usrcp_update_domain_context存储领域范围的键值上下文
usrcp_set_fact在 (domain, namespace, key) 下存储自由格式、无模式的事实
usrcp_get_facts读取单条事实,或列出某个领域 / 命名空间中的所有事实
usrcp_search_timeline通过盲索引令牌搜索(精确关键词,不支持语义搜索)
usrcp_manage_project创建 / 更新跟踪的项目
usrcp_audit_log查看加密审计跟踪
usrcp_rotate_key轮换主加密密钥(重新加密所有数据)
usrcp_status账本统计信息和运行状况(范围感知:限定范围的 Agent 只能查看其所属领域)

加密内容

你的所有内容。 每个承载你所说、所做或所存储内容的字段,在静态存储时都是密文。保留为明文的只有结构元数据 — 不透明的标识符和时间戳,它们只会透露何时,绝不透露内容。攻击者读取 SQLite 文件时会看到:

列他们看到的内容
event_id不透明的 ULID(明文 — 随机标识符,不含内容)
timestamp何时,而非内容(明文)
domainHMAC 假名(d_1ac6397ab4d2)
summaryenc:base64ciphertext...
intentenc:base64ciphertext...
outcomeenc:base64ciphertext...
platformenc:base64ciphertext...
detailenc:base64ciphertext...
tagsenc:base64ciphertext...
audit_log.*enc:base64ciphertext...

其他表也遵循相同规则:在 active_projects 中,内容字段(name、domain、status、summary)均为 enc: 密文;你选择的 project_id 以 HMAC 形式存储(原始值加密后存于 project_ref_enc),只有 last_touched(时间戳)保留为明文。任何承载用户内容的字段都不会以明文形式存储。

在口令模式下,磁盘上不会有密钥文件。启动时通过 scrypt 派生密钥,并在关闭时将其清零。

每个适配器的测试套件都包含一项静态密文检查:它会捕获真实活动,然后使用原始的 better-sqlite3 打开 SQLite 文件,并断言任何加密列中都不存在明文标记(标题、正文、URL、ID)。

安全架构

  • AES-256-GCM:对所有内容字段进行静态加密
  • 通过 HKDF-SHA256 派生域级密钥——编码密钥无法解密健康数据
  • 使用 scrypt 派生口令(N=131072,r=8,p=2)——密钥永不写入磁盘
  • HMAC 域伪名——域名是不可读的标识符
  • 使用 n-gram 令牌和噪声注入进行盲索引搜索
  • 加密审计日志——访问模式以密文形式保存
  • 原子密钥轮换——在单个事务中重新加密所有数据
  • secure_delete pragma——SQLite 将已删除页面填零
  • 进程关闭时将主密钥清零
  • 范围强制执行——使用 --scope 标志注册的 Agent 只能看到获授权访问的域;usrcp_status 和时间线查询会进行相应筛选

完整模型见 docs/SECURITY.md。

编辑器与 CLI 集成

USRCP 适用于任何兼容 MCP 的客户端。usrcp init 向导会为编辑器客户端注册服务条目:

编辑器--client= 值设置文档
Claude Desktopclaude(默认)本 README
Cursorcursordocs/INTEGRATIONS/cursor.md
Continue.devcontinuedocs/INTEGRATIONS/continue.md
Cline(VS Code)clinedocs/INTEGRATIONS/cline.md

同时向多个客户端注册:usrcp init --client=claude,cursor 或 --client=all。

对于基于终端且支持 MCP 的 CLI Agent(Claude Code、Cursor CLI、Codex、Copilot CLI、Cline、Continue、Aider、Antigravity、OpenCode),只需运行一次向导即可完成全部配置:

usrcp setup --adapter=terminal

无需外部账户或机器人令牌——这些 Agent 中的每个终端会话都通过同一本地账本获得跨平台记忆。

所有客户端共享每位用户的同一本地账本。

其他使用方

  • usrcp-hermes — Hermes Agent 的 Python 记忆提供程序插件。将 USRCP 添加为记忆后端,使 Hermes 运行实例能够与 Claude Code、Cursor 等共享状态。此插件是轻量封装——账本逻辑仍由 TypeScript 实现。

项目结构

usrcp/
├── spec/
│   └── PROTOCOL.md                  # Protocol specification
├── schemas/                          # JSON schemas (get_state, append_event, handshake)
├── docs/
│   ├── SECURITY.md                   # Security & privacy model
│   └── INTEGRATIONS/                 # MCP client integration guides
├── strategy/                         # GTM, pitch, positioning
├── packages/
│   ├── usrcp-core/                   # Framework-agnostic protocol core (ledger, crypto, encryption, pairing, rotation, scope)
│   ├── usrcp-local/                  # Local MCP server + CLI
│   ├── usrcp-cloud/                  # Hosted ledger for ciphertext-only sync
│   ├── usrcp-discord/                # Discord capture+reader adapter
│   ├── usrcp-extension/              # Chrome extension (claude.ai capture)
│   ├── usrcp-hermes/                 # Hermes Agent memory plugin (Python)
│   ├── usrcp-imessage/               # iMessage capture+reader (macOS)
│   ├── usrcp-linear/                 # Linear issues + comments capture
│   ├── usrcp-obsidian/               # Obsidian vault capture
│   ├── usrcp-slack/                  # Slack capture+reader
│   └── usrcp-telegram/               # Telegram capture+reader
└── sdk/                              # Legacy prototype (Jan-Feb 2026); not the reference impl

旧版 sdk/ 是协议推出前的探索项目——历史背景请参阅 sdk/README.md。新工作应直接面向 usrcp-core 账本。

测试

当前快照(每个包运行 npm test):

包测试数
usrcp-local321
usrcp-core230
usrcp-stream125
usrcp-github90
usrcp-obsidian65
usrcp-imessage54
usrcp-telegram53
usrcp-linear52
usrcp-slack52
usrcp-extension46
usrcp-discord45
usrcp-gmail41
usrcp-google-calendar33
usrcp-adapter-kit32
usrcp-cloud30
usrcp-claude-code28
总计~1297

此外,usrcp-hermes 中还有一套 Python 测试(pytest)。

在包目录中运行 npm test,即可运行该包的测试套件。跨包的 prebuild/pretest 钩子会先构建 usrcp-core(及其他同级包),确保类型 保持同步。测试覆盖范围包括:账本 CRUD、加密往返、篡改检测、 域隔离、审计日志、ULID、清理、多用户隔离、乐观并发、 无模式事实、范围强制执行(均在 usrcp-core 中);同步 推送/拉取、Ed25519 签名请求身份验证(usrcp-local/usrcp-cloud);以及 各适配器的捕获、幂等性和静态密文检查。

商业模式

开源协议(Apache 2.0)。参考实现免费且优先本地运行。未来可能推出的付费产品将通过用户测试验证;可靠的托管交接/同步和团队控制功能目前只是待验证的假设,并非已发布的商业服务或合规性保证。

切入点并非「每个使用 AI 的人」,而是注重安全的开发者和受监管企业:他们无法采用会将明文发送给第三方的 AI 状态存储方案。完整定位请参阅 strategy/PITCH.md 和 strategy/GTM.md。

许可证

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。