使用说明
协议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 <MCP_API_KEY> - 客户:
http://localhost:39101/mcp+Authorization: Bearer <DACCORD_TOKEN> - 运输:流式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 <id> |
空间详细信息 |
channels <space_id> |
列出空间中的频道 |
members <space_id> [limit] |
列出空间成员 |
user <user_id> |
用户详细信息 |
messages <channel_id> [limit] |
最近的消息 |
search <space_id> <query> |
搜索邮件 |
send <channel_id> <message> |
发送消息 |
create-channel <space_id> <name> [topic] |
创建频道 |
delete-channel <channel_id> |
删除频道 |
delete-message <message_id> |
删除消息 |
kick <space_id> <user_id> |
踢会员 |
ban <space_id> <user_id> [reason] |
禁止用户 |
unban <space_id> <user_id> |
取消阻止用户 |
tools |
列出所有MCP工具 |
call <tool> [json_args] |
直接调用任何工具 |
help |
显示帮助 |
exit |
退出 |
客户端CLI命令
| 命令 | 描述 |
|---|---|
| 阅读 | |
state |
当前应用程序状态(空间、频道、布局) |
spaces |
列出连接的空间 |
space <id> |
空间详细信息 |
channels <space_id> |
列出频道 |
members <space_id> [limit] |
列出成员 |
user <user_id> |
用户信息 |
messages <channel_id> [limit] |
列出消息 |
search <space_id> <query> |
搜索邮件 |
| 导航 | |
select-space <space_id> |
切换到空间 |
select-channel <channel_id> |
切换到频道 |
open-dm <user_id> |
打开DM |
open-settings [page] |
打开设置 |
open-discovery |
开放式服务器发现 |
open-thread <message_id> |
打开一个线程 |
open-voice |
打开语音视图 |
toggle-members |
切换成员列表 |
toggle-search |
切换搜索面板 |
navigate <surface_id> [state] |
导航到UI表面 |
dialog <name> |
打开一个命名对话框 |
viewport <preset|WxH> |
调整视口大小 |
| 截图 | |
screenshot [save_path] |
捕获视口 |
surfaces [section] |
列出UI表面 |
surface-info <surface_id> |
表面先决条件 |
| 消息 | |
send <channel_id> <message> |
发送消息 |
edit <message_id> <content> |
编辑消息 |
delete-message <message_id> |
删除消息 |
react <message_id> <emoji> |
添加反应 |
| 节制 | |
kick <space_id> <user_id> |
踢会员 |
ban <space_id> <user_id> [reason] |
禁止用户 |
unban <space_id> <user_id> |
取消阻止用户 |
timeout <space_id> <user_id> <s> |
成员超时 |
| 语音 | |
join-voice <channel_id> |
加入语音频道 |
leave-voice |
留下声音 |
mute |
切换静音 |
deafen |
切换静音 |
| 其他 | |
tools |
列出可用的MCP工具 |
call <tool> [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 <token> - 协议版本:
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");
