协议MCP
MCP(模型上下文协议)客户端 协议 生态系统。此软件包提供了两个不同的MCP客户端:
| 客户端 | 连接到 | Auth | 作用域 | 用例 |
|---|---|---|---|---|
服务器MCP (accord-mcp) | accordserver(端口39099) | 服务器范围 MCP_API_KEY | 完全管理员 | 服务器自动化、机器人、数据种子 |
客户端MCP (daccord-mcp) | daccord桌面应用程序(端口39101) | 每个帐户持有者令牌 | 用户权限+UI控制 | 个人AI助理、UI审计、测试 |
先决条件
服务器MCP
- Accord服务器运行
MCP_API_KEY集 - 服务器的基本URL(例如。
http://localhost:39099)
客户端MCP
- 启用开发者模式运行的daccord桌面应用程序
- MCP服务器已在“应用程序设置”>“开发人员”中打开
- 开发人员设置页面中的承载令牌
代理设置
服务器MCP(accordserver)
Accord在以下位置公开了一个可流式传输的HTTP MCP端点 /mcp。以下示例假设您的服务器位于 http://localhost:39099 --替换为实际的URL和API密钥。
克劳德代码
添加一个 .mcp.json 将文件保存到项目根目录(或 ~/.claude/.mcp.json 全局配置):
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}或者以交互方式添加:
claude mcp add accord --transport http http://localhost:39099/mcp \
-H "Authorization: Bearer YOUR_MCP_API_KEY"食品法典委员会(OpenAI)
创建或编辑 codex.json 在项目根目录中(或 ~/.codex/codex.json 全球):
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}开源代码
添加到您的 opencode.json (项目根或 ~/.config/opencode/config.json):
{
"mcp": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}克劳德桌面版
增添 ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}客户端MCP(daccord桌面应用程序)
启用开发人员模式时,daccord桌面应用程序在端口39101上显示本地MCP服务器。这提供了用户范围的访问以及UI控制、导航和屏幕截图功能。
克劳德代码
{
"mcpServers": {
"daccord": {
"type": "streamable-http",
"url": "http://localhost:39101/mcp",
"headers": {
"Authorization": "Bearer YOUR_DACCORD_MCP_TOKEN"
}
}
}
}或者以交互方式添加:
claude mcp add daccord --transport http http://localhost:39101/mcp \
-H "Authorization: Bearer YOUR_DACCORD_MCP_TOKEN"两者结合使用
AI代理可以同时使用两个MCP服务器——服务器MCP用于管理任务和数据种子,客户端MCP用于导航UI和可视化验证结果:
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
},
"daccord": {
"type": "streamable-http",
"url": "http://localhost:39101/mcp",
"headers": {
"Authorization": "Bearer YOUR_DACCORD_MCP_TOKEN"
}
}
}
}任何兼容MCP的客户端
两个端点都通过流式HTTP使用标准MCP:
- 服务器:
http://your-server:39099/mcp+Authorization: Bearer - 客户:
http://localhost:39101/mcp+Authorization: Bearer - 运输:流式HTTP(POST)
- 协议版本:
2025-03-26
独立CLI客户端
服务器CLI(accord-mcp)
accordserver MCP端点的交互式客户端。
npm install && npm run build
export ACCORD_MCP_API_KEY="your-key"
npm start| 变量 | 描述 | 默认值 |
|---|---|---|
ACCORD_MCP_URL | 服务器MCP端点URL | http://localhost:39099/mcp |
ACCORD_MCP_API_KEY | 服务器MCP API密钥(必需) | -- |
客户端CLI(daccord-mcp)
daccord桌面应用程序本地MCP服务器的交互式客户端。
npm install && npm run build
export DACCORD_MCP_TOKEN="your-token"
npm run start:client| 变量 | 描述 | 默认值 |
|---|---|---|
DACCORD_MCP_URL | 客户端MCP端点URL | http://localhost:39101/mcp |
DACCORD_MCP_TOKEN | 客户端MCP承载令牌(必需) | -- |
从daccord的应用程序设置>开发人员>MCP服务器部分复制令牌。
快速安装
curl -fsSL https://raw.githubusercontent.com/DaccordProject/accordserver-mcp/main/install.sh | bash服务器CLI示例会话
$ export ACCORD_MCP_API_KEY="your-key"
$ npm start
Connecting to http://localhost:39099/mcp...
Connected. Type 'help' for commands.
accord> info
accord> spaces
accord> channels abc123
accord> messages def456 10
accord> send def456 Hello from the CLI!
accord> exit客户端CLI示例会话
$ export DACCORD_MCP_TOKEN="dk_a1b2...c3d4"
$ npm run start:client
Connecting to daccord client at http://localhost:39101/mcp...
Connected. Type 'help' for commands.
daccord> state
daccord> spaces
daccord> select-space abc123
daccord> select-channel def456
daccord> screenshot /tmp/audit.png
daccord> viewport compact
daccord> screenshot /tmp/audit_compact.png
daccord> navigate 6.2 with_reply
daccord> screenshot
daccord> exit服务器CLI命令
| 命令 | 描述 |
|---|---|
info | 服务器信息和统计数据 |
spaces | 列出所有空间 |
space | 空间详细信息 |
channels | 列出空间中的频道 |
members [limit] | 列出空间成员 |
user | 用户详细信息 |
messages [limit] | 最近的消息 |
search | 搜索邮件 |
send | 发送消息 |
create-channel [topic] | 创建频道 |
delete-channel | 删除频道 |
delete-message | 删除消息 |
kick | 踢会员 |
ban [reason] | 禁止用户 |
unban | 取消阻止用户 |
tools | 列出所有MCP工具 |
call [json_args] | 直接调用任何工具 |
help | 显示帮助 |
exit | 退出 |
客户端CLI命令
| 命令 | 描述 |
|---|---|
| 阅读 | |
state | 当前应用程序状态(空间、频道、布局) |
spaces | 列出连接的空间 |
space | 空间详细信息 |
channels | 列出频道 |
members [limit] | 列出成员 |
user | 用户信息 |
messages [limit] | 列出消息 |
search | 搜索邮件 |
| 导航 | |
select-space | 切换到空间 |
select-channel | 切换到频道 |
open-dm | 打开DM |
open-settings [page] | 打开设置 |
open-discovery | 开放式服务器发现 |
open-thread | 打开一个线程 |
open-voice | 打开语音视图 |
toggle-members | 切换成员列表 |
toggle-search | 切换搜索面板 |
navigate [state] | 导航到UI表面 |
dialog | 打开一个命名对话框 |
| `viewport | |
| ` | 调整视口大小 |
| 截图 | |
screenshot [save_path] | 捕获视口 |
surfaces [section] | 列出UI表面 |
surface-info | 表面先决条件 |
| 消息 | |
send | 发送消息 |
edit | 编辑消息 |
delete-message | 删除消息 |
react | 添加反应 |
| 节制 | |
kick | 踢会员 |
ban [reason] | 禁止用户 |
unban | 取消阻止用户 |
timeout | 成员超时 |
| 语音 | |
join-voice | 加入语音频道 |
leave-voice | 留下声音 |
mute | 切换静音 |
deafen | 切换静音 |
| 其他 | |
tools | 列出可用的MCP工具 |
call [json_args] | 直接调用任何工具 |
help | 显示帮助 |
exit | 退出 |
可用工具
服务器MCP工具(15)
读取操作
| 工具 | 描述 | 必需参数 |
|---|---|---|
server_info | 服务器版本、空间计数、在线用户、语音状态 | _(无)_ |
list_spaces | 列出服务器上的所有空间 | _(无)_ |
get_space | 获取特定空间的详细信息 | space_id |
list_channels | 列出空间中的频道 | space_id |
list_members | 列出空间成员 | space_id,可选 limit |
get_user | 按ID获取用户信息 | user_id |
list_messages | 列出频道中的最新消息 | channel_id,可选 limit, after |
search_messages | 在空间中搜索邮件 | space_id,可选 query, author_id, channel_id, limit |
写入操作
| 工具 | 描述 | 必需参数 |
|---|---|---|
send_message | 向频道发送消息 | channel_id, content,可选 reply_to |
create_channel | 在空间中创建频道 | space_id, name,可选 channel_type, topic |
delete_channel | 删除频道 | channel_id |
delete_message | 删除消息 | message_id |
节制
| 工具 | 描述 | 必需参数 |
|---|---|---|
kick_member | 从空间中删除成员 | space_id, user_id |
ban_user | 禁止用户进入空间 | space_id, user_id,可选 reason |
unban_user | 删除禁令 | space_id, user_id |
客户端MCP工具(35)
工具分为6组。仅 read, navigate,以及 screenshot 默认情况下启用;破坏性团体(message, moderate, voice)需要在daccord的开发人员设置中选择加入。
阅读(8个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
get_current_state | 当前应用程序状态 | _(无)_ |
list_spaces | 互联空间 | _(无)_ |
get_space | 空间详细信息 | space_id |
list_channels | 空间中的频道 | space_id |
list_members | 空间成员 | space_id,可选 limit |
get_user | 用户信息 | user_id |
list_messages | 频道消息 | channel_id,可选 limit, after |
search_messages | 搜索邮件 | space_id,可选 query, author_id, channel_id, limit |
导航(12个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
select_space | 切换活动空间 | space_id |
select_channel | 切换活动频道 | channel_id |
open_dm | 打开DM对话 | user_id |
open_settings | 打开设置 | 可选 page |
open_discovery | 开放式服务器发现 | _(无)_ |
open_thread | 打开螺纹面板 | message_id |
open_voice_view | 打开语音视图 | _(无)_ |
toggle_member_list | 切换成员列表 | _(无)_ |
toggle_search | 切换搜索 | _(无)_ |
navigate_to_surface | 导航到UI表面 | surface_id,可选 state |
open_dialog | 打开命名对话框 | dialog_name |
set_viewport_size | 调整视口大小 | 可选 preset, width, height |
屏幕截图(3个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
take_screenshot | 捕获视口PNG | 可选 save_path |
list_surfaces | 列出可审计的UI表面 | 可选 section |
get_surface_info | 表面先决条件 | surface_id |
消息(4个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
send_message | 以用户身份发送消息 | channel_id, content,可选 reply_to |
edit_message | 编辑自己的消息 | message_id, content |
delete_message | 删除邮件 | message_id |
add_reaction | 对消息作出反应 | message_id, emoji |
中等(4个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
kick_member | Kick会员 | space_id, user_id |
ban_user | 禁止用户 | space_id, user_id,可选 reason |
unban_user | 取消阻止用户 | space_id, user_id |
timeout_member | 超时成员 | space_id, user_id, duration_seconds |
语音(4个工具)
| 工具 | 描述 | 必需参数 |
|---|---|---|
join_voice_channel | 加入语音频道 | channel_id |
leave_voice | 留下声音 | _(无)_ |
toggle_mute | 切换静音 | _(无)_ |
toggle_deafen | 切换静音 | _(无)_ |
协议细节
两个客户端使用相同的MCP协议:
- 运输:流式HTTP(POST)
- 认证:
Authorization: Bearer - 协议版本:
2025-03-26 - 格式:JSON-RPC 2.0
主要区别
| 特性 | 服务器MCP | 客户端MCP |
|---|---|---|
| 端点 | POST /mcp 在accordserver上 | POST /mcp daccord客户端 |
| 默认端口 | 39099 | 39101 |
| 身份验证令牌 | 服务器范围 MCP_API_KEY env var | 来自开发人员设置的每个帐户令牌 |
| 权限 | 完全管理员访问权限 | 仅限用户自己的权限 |
| 消息归因 | "mcp" author | 当前登录用户 |
| UI控件 | N/A | 全导航+截图 |
| 网络 | 可以是远程 | 仅本地主机(127.0.0.1) |
| 刀具数量 | 15 | 35 |
安全须知
服务器MCP
- MCP API密钥授予对服务器的完全管理访问权限
- 将其视为根凭据——不要在客户端代码或日志中公开它
- 除非满足以下条件,否则将完全禁用终结点
MCP_API_KEY已在服务器上设置 - 通过MCP发送的消息归作者所有
"mcp"可审计性
客户端MCP
- 需要两个明确的选择加入步骤:开发人员模式+MCP切换
- 令牌按照配置文件加密存储;在UI中隐藏显示
- 监听器绑定到
127.0.0.1只是——从未接触过网络 - 破坏性工具组(消息、温和、声音)需要明确的选择加入
- 审核工具在执行之前还会检查用户的服务器权限
- 速率限制为每秒60个请求,读取超时5秒
- 令牌可以随时从开发人员设置中旋转
TypeScript库使用
两个客户端都可以作为库导入:
// Server MCP
import { AccordMCPClient } from "accordserver-mcp-client";
const server = new AccordMCPClient({
url: "http://localhost:39099/mcp",
apiKey: "your-api-key",
});
await server.connect();
const spaces = await server.listSpaces();
// Client MCP
import { DaccordClientMCPClient } from "accordserver-mcp-client/client-mcp";
const client = new DaccordClientMCPClient({
url: "http://localhost:39101/mcp",
token: "dk_a1b2...c3d4",
});
await client.connect();
const state = await client.getCurrentState();
await client.selectSpace("123");
const screenshot = await client.takeScreenshot("/tmp/audit.png");