loading…
Search for a command to run...
loading…
Connects AI agents to Accord chat server instances via the Model Context Protocol to manage spaces, channels, and messages. It supports a comprehensive range of
Connects AI agents to Accord chat server instances via the Model Context Protocol to manage spaces, channels, and messages. It supports a comprehensive range of operations including searching conversation history, sending messages, and performing server moderation tasks.
MCP (Model Context Protocol) clients for the Accord ecosystem. This package provides two distinct MCP clients:
| Client | Connects to | Auth | Scope | Use case |
|---|---|---|---|---|
Server MCP (accord-mcp) |
accordserver (port 39099) | Server-wide MCP_API_KEY |
Full admin | Server automation, bots, data seeding |
Client MCP (daccord-mcp) |
daccord desktop app (port 39101) | Per-account bearer token | User's permissions + UI control | Personal AI assistant, UI auditing, testing |
MCP_API_KEY sethttp://localhost:39099)Accord exposes a streamable HTTP MCP endpoint at /mcp. The examples below assume your server is at http://localhost:39099 -- replace with your actual URL and API key.
Add a .mcp.json file to your project root (or ~/.claude/.mcp.json for global config):
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}
Or add it interactively:
claude mcp add accord --transport http http://localhost:39099/mcp \
-H "Authorization: Bearer YOUR_MCP_API_KEY"
Create or edit codex.json in your project root (or ~/.codex/codex.json for global):
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}
Add to your opencode.json (project root or ~/.config/opencode/config.json):
{
"mcp": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}
Add to ~/.claude/claude_desktop_config.json:
{
"mcpServers": {
"accord": {
"type": "streamable-http",
"url": "http://localhost:39099/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_API_KEY"
}
}
}
}
The daccord desktop app exposes a local MCP server on port 39101 when Developer Mode is enabled. This provides user-scoped access plus UI control, navigation, and screenshot capabilities.
{
"mcpServers": {
"daccord": {
"type": "streamable-http",
"url": "http://localhost:39101/mcp",
"headers": {
"Authorization": "Bearer YOUR_DACCORD_MCP_TOKEN"
}
}
}
}
Or add it interactively:
claude mcp add daccord --transport http http://localhost:39101/mcp \
-H "Authorization: Bearer YOUR_DACCORD_MCP_TOKEN"
An AI agent can use both MCP servers simultaneously -- server MCP for admin tasks and data seeding, client MCP for navigating the UI and visually verifying results:
{
"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"
}
}
}
}
Both endpoints speak standard MCP over streamable HTTP:
http://your-server:39099/mcp + Authorization: Bearer <MCP_API_KEY>http://localhost:39101/mcp + Authorization: Bearer <DACCORD_TOKEN>2025-03-26accord-mcp)Interactive client for the accordserver MCP endpoint.
npm install && npm run build
export ACCORD_MCP_API_KEY="your-key"
npm start
| Variable | Description | Default |
|---|---|---|
ACCORD_MCP_URL |
Server MCP endpoint URL | http://localhost:39099/mcp |
ACCORD_MCP_API_KEY |
Server MCP API key (required) | -- |
daccord-mcp)Interactive client for the daccord desktop app's local MCP server.
npm install && npm run build
export DACCORD_MCP_TOKEN="your-token"
npm run start:client
| Variable | Description | Default |
|---|---|---|
DACCORD_MCP_URL |
Client MCP endpoint URL | http://localhost:39101/mcp |
DACCORD_MCP_TOKEN |
Client MCP bearer token (required) | -- |
Copy the token from daccord's App Settings > Developer > MCP Server section.
curl -fsSL https://raw.githubusercontent.com/DaccordProject/accordserver-mcp/main/install.sh | bash
$ 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
$ 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
| Command | Description |
|---|---|
info |
Server info and stats |
spaces |
List all spaces |
space <id> |
Space details |
channels <space_id> |
List channels in a space |
members <space_id> [limit] |
List space members |
user <user_id> |
User details |
messages <channel_id> [limit] |
Recent messages |
search <space_id> <query> |
Search messages |
send <channel_id> <message> |
Send a message |
create-channel <space_id> <name> [topic] |
Create a channel |
delete-channel <channel_id> |
Delete a channel |
delete-message <message_id> |
Delete a message |
kick <space_id> <user_id> |
Kick a member |
ban <space_id> <user_id> [reason] |
Ban a user |
unban <space_id> <user_id> |
Unban a user |
tools |
List all MCP tools |
call <tool> [json_args] |
Call any tool directly |
help |
Show help |
exit |
Quit |
| Command | Description |
|---|---|
| Read | |
state |
Current app state (space, channel, layout) |
spaces |
List connected spaces |
space <id> |
Space details |
channels <space_id> |
List channels |
members <space_id> [limit] |
List members |
user <user_id> |
User info |
messages <channel_id> [limit] |
List messages |
search <space_id> <query> |
Search messages |
| Navigate | |
select-space <space_id> |
Switch to a space |
select-channel <channel_id> |
Switch to a channel |
open-dm <user_id> |
Open a DM |
open-settings [page] |
Open settings |
open-discovery |
Open server discovery |
open-thread <message_id> |
Open a thread |
open-voice |
Open voice view |
toggle-members |
Toggle member list |
toggle-search |
Toggle search panel |
navigate <surface_id> [state] |
Navigate to UI surface |
dialog <name> |
Open a named dialog |
viewport <preset|WxH> |
Resize viewport |
| Screenshot | |
screenshot [save_path] |
Capture viewport |
surfaces [section] |
List UI surfaces |
surface-info <surface_id> |
Surface prerequisites |
| Message | |
send <channel_id> <message> |
Send a message |
edit <message_id> <content> |
Edit a message |
delete-message <message_id> |
Delete a message |
react <message_id> <emoji> |
Add a reaction |
| Moderation | |
kick <space_id> <user_id> |
Kick a member |
ban <space_id> <user_id> [reason] |
Ban a user |
unban <space_id> <user_id> |
Unban a user |
timeout <space_id> <user_id> <s> |
Timeout a member |
| Voice | |
join-voice <channel_id> |
Join voice channel |
leave-voice |
Leave voice |
mute |
Toggle mute |
deafen |
Toggle deafen |
| Other | |
tools |
List available MCP tools |
call <tool> [json_args] |
Call any tool directly |
help |
Show help |
exit |
Quit |
| Tool | Description | Required Params |
|---|---|---|
server_info |
Server version, space count, online users, voice status | (none) |
list_spaces |
List all spaces on the server | (none) |
get_space |
Get details about a specific space | space_id |
list_channels |
List channels in a space | space_id |
list_members |
List members of a space | space_id, optional limit |
get_user |
Get user info by ID | user_id |
list_messages |
List recent messages in a channel | channel_id, optional limit, after |
search_messages |
Search messages in a space | space_id, optional query, author_id, channel_id, limit |
| Tool | Description | Required Params |
|---|---|---|
send_message |
Send a message to a channel | channel_id, content, optional reply_to |
create_channel |
Create a channel in a space | space_id, name, optional channel_type, topic |
delete_channel |
Delete a channel | channel_id |
delete_message |
Delete a message | message_id |
| Tool | Description | Required Params |
|---|---|---|
kick_member |
Remove a member from a space | space_id, user_id |
ban_user |
Ban a user from a space | space_id, user_id, optional reason |
unban_user |
Remove a ban | space_id, user_id |
Tools are organized into 6 groups. Only read, navigate, and screenshot are enabled by default; destructive groups (message, moderate, voice) require opt-in in daccord's Developer settings.
| Tool | Description | Required Params |
|---|---|---|
get_current_state |
Current app state | (none) |
list_spaces |
Connected spaces | (none) |
get_space |
Space details | space_id |
list_channels |
Channels in a space | space_id |
list_members |
Space members | space_id, optional limit |
get_user |
User info | user_id |
list_messages |
Channel messages | channel_id, optional limit, after |
search_messages |
Search messages | space_id, optional query, author_id, channel_id, limit |
| Tool | Description | Required Params |
|---|---|---|
select_space |
Switch active space | space_id |
select_channel |
Switch active channel | channel_id |
open_dm |
Open DM conversation | user_id |
open_settings |
Open settings | optional page |
open_discovery |
Open server discovery | (none) |
open_thread |
Open thread panel | message_id |
open_voice_view |
Open voice view | (none) |
toggle_member_list |
Toggle member list | (none) |
toggle_search |
Toggle search | (none) |
navigate_to_surface |
Navigate to UI surface | surface_id, optional state |
open_dialog |
Open named dialog | dialog_name |
set_viewport_size |
Resize viewport | optional preset, width, height |
| Tool | Description | Required Params |
|---|---|---|
take_screenshot |
Capture viewport PNG | optional save_path |
list_surfaces |
List auditable UI surfaces | optional section |
get_surface_info |
Surface prerequisites | surface_id |
| Tool | Description | Required Params |
|---|---|---|
send_message |
Send message as user | channel_id, content, optional reply_to |
edit_message |
Edit own message | message_id, content |
delete_message |
Delete message | message_id |
add_reaction |
React to message | message_id, emoji |
| Tool | Description | Required Params |
|---|---|---|
kick_member |
Kick member | space_id, user_id |
ban_user |
Ban user | space_id, user_id, optional reason |
unban_user |
Unban user | space_id, user_id |
timeout_member |
Timeout member | space_id, user_id, duration_seconds |
| Tool | Description | Required Params |
|---|---|---|
join_voice_channel |
Join voice channel | channel_id |
leave_voice |
Leave voice | (none) |
toggle_mute |
Toggle mute | (none) |
toggle_deafen |
Toggle deafen | (none) |
Both clients use the same MCP protocol:
Authorization: Bearer <token>2025-03-26| Aspect | Server MCP | Client MCP |
|---|---|---|
| Endpoint | POST /mcp on accordserver |
POST /mcp on daccord client |
| Default port | 39099 | 39101 |
| Auth token | Server-wide MCP_API_KEY env var |
Per-account token from Developer settings |
| Permissions | Full admin access | User's own permissions only |
| Message attribution | "mcp" author |
Current logged-in user |
| UI control | N/A | Full navigation + screenshot |
| Network | Can be remote | Localhost only (127.0.0.1) |
| Tool count | 15 | 35 |
MCP_API_KEY is set on the server"mcp" for auditability127.0.0.1 only -- never exposed to the networkBoth clients can be imported as libraries:
// 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");
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"accord-server-mcp": {
"command": "npx",
"args": []
}
}
}Read, send and search emails from Claude
Send, search and summarize Slack messages
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)