关于 EVC Team Relay MCP
EVC Team Relay MCP 将 Team Relay API 封装为 Obsidian 笔记库的读写接口,面向希望让 AI Agent 访问团队笔记的用户。它支持文件读取与创建或更新,并将更改同步到 Obsidian;写入仅支持 Agent 密钥模式。
主要功能
- 01列出可访问的共享空间
- 02列出文件并按路径读取
- 03创建或更新文件
- 04自动处理登录与令牌刷新
- 05通过 Team Relay 同步到 Obsidian
适用场景
- 01让编码 Agent 检索笔记库内容
- 02根据 Agent 生成的内容更新笔记
- 03在 Obsidian 与 Agent 间同步更改
MCP 相关
该 MCP 服务将 Team Relay REST API 包装为 MCP 工具,可通过 stdio 或 HTTP 连接兼容客户端。读取支持 Agent 密钥和邮箱密码模式;写入仅支持 Agent 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx evc-team-relay-mcpRELAY_CP_URLURL of the Team Relay control plane (e.g. https://cp.yourdomain.com)RELAY_AGENT_KEY密钥Agent key for single-share access (mutually exclusive with RELAY_AGENT_KEYS). Overrides RELAY_EMAIL/RELAY_PASSWORD.RELAY_AGENT_KEYS密钥Comma-separated share_id:key pairs for multi-share access (e.g. mesh:key1,spark:key2). Takes priority over RELAY_AGENT_KEY for matched shares.RELAY_EMAILEmail for password auth (fallback when no agent key is configured)RELAY_PASSWORD密钥Password for auth (fallback when no agent key is configured)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
EVC Team Relay - MCP 服务
为你的 AI Agent 提供 Obsidian 库的读写权限。
你的 Agent 可以读取笔记、创建新笔记并保持同步——这一切都通过 Team Relay API 完成。
兼容 Claude Code、Codex CLI、OpenCode 以及任何兼容 MCP 的客户端。
快速开始
1. 安装
选项 A — 从 PyPI 安装(推荐):
无需安装——uvx 会自动下载并运行。请跳至第 2 步。
选项 B — 从源代码安装:
git clone https://github.com/entire-vc/evc-team-relay-mcp.git
cd evc-team-relay-mcp
uv sync # or: pip install .
2. 配置 AI 工具
将 MCP 服务添加到工具的配置中。选择一种身份验证方式:
Agent 密钥(推荐)——在 Obsidian 插件 → Team Relay 设置 → Agent Keys 中创建密钥。支持读取和写入:list_files、read_file、tr_search 和 upsert_file 均可使用同一个密钥。 快速入门 →
邮箱 + 密码——在你的 Relay 实例上使用专用 Agent 账号。
Claude Code — Agent 密钥
将以下内容添加到项目根目录中的 .mcp.json,或 ~/.claude/.mcp.json:
{
"mcpServers": {
"evc-relay": {
"command": "uvx",
"args": ["evc-team-relay-mcp"],
"env": {
"RELAY_CP_URL": "https://cp.yourdomain.com",
"RELAY_AGENT_KEY": "tr_agent_your_key_here"
}
}
}
}
Claude Code — 邮箱/密码
{
"mcpServers": {
"evc-relay": {
"command": "uvx",
"args": ["evc-team-relay-mcp"],
"env": {
"RELAY_CP_URL": "https://cp.yourdomain.com",
"RELAY_EMAIL": "[email protected]",
"RELAY_PASSWORD": "your-password"
}
}
}
}
Codex CLI
将以下内容添加到 codex.json:
{
"mcp_servers": {
"evc-relay": {
"type": "stdio",
"command": "uvx",
"args": ["evc-team-relay-mcp"],
"env": {
"RELAY_CP_URL": "https://cp.yourdomain.com",
"RELAY_AGENT_KEY": "tr_agent_your_key_here"
}
}
}
}
OpenCode
将以下内容添加到 opencode.json:
{
"mcpServers": {
"evc-relay": {
"command": "uvx",
"args": ["evc-team-relay-mcp"],
"env": {
"RELAY_CP_URL": "https://cp.yourdomain.com",
"RELAY_AGENT_KEY": "tr_agent_your_key_here"
}
}
}
}
从源代码安装(所有工具)
如果你从源代码而非 PyPI 安装,请将 "command": "uvx" / "args": ["evc-team-relay-mcp"] 替换为:
"command": "uv",
"args": ["run", "--directory", "/path/to/evc-team-relay-mcp", "relay_mcp.py"]
环境变量:
| 变量 | 必需 | 说明 |
|---|---|---|
RELAY_CP_URL | 是 | 控制平面基础 URL |
RELAY_AGENT_KEY | 二选一 | 插件设置中的 Agent 密钥——读写权限(推荐) |
RELAY_EMAIL | 二选一 | 账号邮箱(邮箱/密码模式) |
RELAY_PASSWORD | 二选一 | 账号密码(邮箱/密码模式) |
config/ 中也提供了可直接复制的配置模板。
3. 使用
你的 AI Agent 现在可以使用以下工具:
| 工具 | 说明 |
|---|---|
authenticate | 使用凭据进行身份验证(自动管理) |
list_shares | 列出可访问的共享(按类型、所有权筛选) |
list_files | 列出文件夹共享中的文件 |
read_file | 按路径读取文件夹共享中的文件 |
read_document | 尚未实现——所有身份验证模式均无对应后端路由,调用时始终会引发异常 |
upsert_file | 按路径创建或更新文件——仅限 Agent 密钥模式;在邮箱/密码(JWT)模式下会引发异常 |
write_document | 尚未实现——所有身份验证模式均无对应后端路由,调用时始终会引发异常 |
delete_file | 尚未实现——所有身份验证模式均无对应后端路由,调用时始终会引发异常 |
典型工作流: list_shares -> list_files -> read_file / upsert_file
身份验证会自动完成——服务会在内部登录并刷新令牌。
工具可用性矩阵
并非所有工具都能在每种认证模式下使用;还有一组工具在两种模式下都无法使用——这是两个互不相关的事实,请勿混为一谈:
| 组别 | 工具 | 状态 |
|---|---|---|
| Agent 密钥、文件夹共享 | list_files、read_file、upsert_file | 可用——这是此 MCP 服务中唯一的写入途径 |
| JWT(电子邮件/密码) | list_files、tr_search、read_file | 可用,按设计为只读 |
| 两种模式下均无后端路由 | read_document、write_document、delete_file | 始终抛出 ValueError——这不是认证限制 |
- 根据正式政策,写入权限仅限 Agent 密钥模式(参见
TR-05(内部实现记录)):
upsert_file是唯一具有可用后端路由的写入工具,且只有在配置了 Agent 密钥(RELAY_AGENT_KEY/RELAY_AGENT_KEYS)时才会写入。JWT 模式下调用upsert_file会抛出明确的ValueError,指出应切换到 Agent 密钥模式,而不是令人困惑的 404。 read_document、write_document和delete_file是另一个独立的问题——控制平面完全没有这些工具的后端路由,Agent 密钥模式下也一样。切换到 Agent 密钥不会让它们生效:文档共享的实时内容仅支持 CRDT/WebSocket(没有 REST 桥接),而服务端目前也没有针对单个文件的DELETE路由。如果将来添加了这些路由,写入仍会遵循上述仅限 Agent 密钥的政策——JWT 仍将保持只读。
远程部署(HTTP 传输)
对于共享或服务端部署,请以 HTTP 服务的方式运行:
# Direct
uv run relay_mcp.py --transport http --port 8888
# Docker (pulls from Docker Hub automatically)
RELAY_CP_URL=https://cp.yourdomain.com \
[email protected] \
RELAY_PASSWORD=your-password \
docker compose up -d
# Or pull explicitly
docker pull deadalusevc/evc-team-relay-mcp:latest
默认情况下,服务绑定到 127.0.0.1(仅限本地主机)——即使主机拥有公网 IP,也无法通过网络访问此端点。这适用于常见场景:MCP 客户端与服务运行在同一台机器上。
然后配置 MCP 客户端通过 HTTP 连接:
{
"mcpServers": {
"evc-relay": {
"type": "streamable-http",
"url": "http://127.0.0.1:8888/mcp"
}
}
}
通过 SSH 隧道远程访问(推荐)
如果 MCP 客户端和服务运行在不同机器上,请将流量隧道转发到绑定本地主机的端口,而不是将其公开到公网:
# From the client machine, forward local 8888 to the server's localhost:8888
ssh -N -L 8888:127.0.0.1:8888 user@your-server
然后像上面那样,将客户端配置指向 http://127.0.0.1:8888/mcp——流量会通过 SSH 隧道传输,因此无需更改服务的绑定地址。
公网/反向代理绑定(可选)
如果确实需要服务直接接受来自其他主机的连接(例如,服务位于负责终止 TLS 并处理认证的反向代理之后),请显式传入 --host:
uv run relay_mcp.py --transport http --port 8888 --host 0.0.0.0
仅在反向代理或防火墙之后这样做——MCP HTTP 端点本身没有内置认证,因此在开放网络上将其绑定到 0.0.0.0 会让任何能访问该端口的人都能调用所有 Relay 工具。
安全性
与基于 shell 的集成相比,MCP 服务具有显著的安全优势:
- 不执行 shell——所有操作都是通过 JSON-RPC 调用 Python 函数,可消除命令注入风险
- 不传递 CLI 参数——凭据和令牌绝不会作为进程参数传递(在
ps输出中不可见) - 自动管理令牌——服务在内部处理登录、JWT 刷新和令牌生命周期;Agent 不会接触原始令牌
- 类型化输入——执行前会根据 JSON Schema 验证所有参数
- 单个持久进程——无需为每次调用启动 shell,不会在调用之间泄露环境变量
**注意:**如果你正在使用 OpenClaw skill(bash 脚本),可以考虑迁移到此 MCP 服务,以获得更安全、更易维护的集成。
工作原理
┌─────────────┐ MCP ┌──────────────┐ REST API ┌──────────────┐ Yjs CRDT ┌──────────────┐
│ AI Agent │ ◄────────────► │ MCP Server │ ◄─────────────► │ Team Relay │ ◄──────────────► │ Obsidian │
│ (any tool) │ stdio / HTTP │ (this repo) │ read/write │ Server │ real-time │ Client │
└─────────────┘ └──────────────┘ └──────────────┘ sync └──────────────┘
MCP 服务将 Team Relay 的 REST API 封装为标准 MCP 工具。Team Relay 将文档存储为 Yjs CRDT,并实时同步到 Obsidian 客户端。Agent 所做的更改会立即显示在 Obsidian 中,反之亦然。
前置条件
- Python 3.10+,以及 uv(推荐)或 pip
- 正在运行的 EVC Team Relay 实例(可自托管或托管)
- Relay 控制平面上的用户账户
Entire VC 工具箱的一部分
| 产品 | 功能 | 链接 |
|---|---|---|
| Team Relay | 可自托管的协作服务 | 仓库 |
| Team Relay Sync | Team Relay 的 Obsidian 插件 | 安装 / 仓库 |
| Relay MCP | 面向 AI Agent 的 MCP 服务 | 本仓库 |
| OpenClaw Skill | OpenClaw Agent 技能(bash) | 仓库 |
| Local Sync | Vault 与 AI 开发工具同步 | 仓库 |
| Spark MCP | 面向 AI 工作流目录的 MCP 服务 | 仓库 |
社区
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。