Discord管理协议服务器

一个基于MCP协议的Discord机器人管理服务器,提供频道、成员、权限等全面管理功能

  • by TheStranjer
  • Ruby
  • 本地部署
  • 更新于
在 GitHub 查看 TheStranjer/fracture

使用说明

骨折

提供Discord工具的MCP(模型上下文协议)服务器。与 MCP Ruby SDK 和 不和谐.

需求

安装

git clone https://github.com/yourusername/fracture.git
cd fracture
bundle install

配置

将您的Discord机器人令牌设置为环境变量:

export DISCORD_BOT_TOKEN=your_token_here

克劳德桌面

添加到您的Claude Desktop MCP配置(claude_desktop_config.json):

{
  "mcpServers": {
    "fracture": {
      "command": "ruby",
      "args": ["/path/to/fracture/fracture.rb"],
      "env": {
        "DISCORD_BOT_TOKEN": "your_token_here"
      }
    }
  }
}

在Windows上,您可能还需要设置 DISCORDRB_NONACL=1 在 env 块。

用法

直接通过stdio运行服务器:

ruby fracture.rb

服务器使用MCP JSON-RPC协议通过stdin/stdout进行通信。

工具

行会

工具 描述 参数
get_guilds 列出机器人所属的所有公会(服务器)。返回每个公会的ID和名称。 无
get_guild 获取特定公会的详细信息,包括其类别、频道和成员。对于会员人数少于100人的公会,将返回完整的会员详细信息;否则仅包括成员计数。 guild_id (字符串,必填)
get_guild_members 列出公会的所有成员。为拥有100多个成员的大型服务器保留。返回每个成员的ID、用户名和显示名称。 guild_id (字符串,必填)

禁令

工具 描述 参数
ban_user 禁止用户加入公会。 guild_id (字符串,必填), user_id (字符串,必填), reason (字符串,必填)
unban_user 解除用户与公会的绑定。 guild_id (字符串,必填), user_id (字符串,必填), reason (字符串,必填)
get_guild_bans 列出公会的所有禁令。返回每个禁令的用户ID和原因。 guild_id (字符串,必填)

成员

工具 描述 参数
get_member 获取公会成员的详细信息,包括他们的角色、状态、加入日期、声音状态等。 guild_id (字符串,必填), member_id (字符串,必填)
add_role 为公会成员添加角色。 guild_id (字符串,必填), member_id (字符串,必填), role_id (字符串,必填)
remove_role 从公会成员中删除角色。 guild_id (字符串,必填), member_id (字符串,必填), role_id (字符串,必填)

消息

工具 描述 参数
send_message 通过DM向频道或用户发送消息。指定 guild_id + channel_id 对于频道消息,或 user_id 对于DM,至少有一个 content 或 attachments 必须提供。 guild_id (字符串,可选), channel_id (字符串,可选), user_id (字符串,可选), content (字符串,可选), attachments (string[],可选)
edit_message 编辑频道或DM中的现有消息 message_id (字符串,必填), content (字符串,必填), guild_id (字符串,可选), channel_id (字符串,可选), user_id (字符串,可选)
delete_message 从频道或DM中删除消息 message_id (字符串,必填), guild_id (字符串,可选), channel_id (字符串,可选), user_id (字符串,可选)

角色

工具 描述 参数
get_guild_roles 获取公会的所有角色,包括每个角色的解码权限。 guild_id (字符串,必填)
create_role 在公会中创建新角色。 guild_id (字符串,必填), name (字符串,必填), colour (整数,可选), hoist (布尔值,可选), mentionable (布尔值,可选), permissions (string[],可选)
delete_role 从公会中删除角色。 guild_id (字符串,必填), role_id (字符串,必填)

分类

工具 描述 参数
get_categories 获取公会的所有类别,包括其频道和权限覆盖。 guild_id (字符串,必填)
create_category 在公会中创建新类别。 guild_id (字符串,必填), name (字符串,必填), position (整数,必填)
edit_category 编辑类别的名称和/或位置。至少一个 name 或 position 应该提供。 guild_id (字符串,必填), category_id (字符串,必填), name (字符串,可选), position (整数,可选)
delete_category 从公会中删除类别。 guild_id (字符串,必填), category_id (字符串,必填)

频道

工具 描述 参数
create_channel 在公会中创建一个新的文本频道,可以选择在某个类别下。 guild_id (字符串,必填), name (字符串,必填), category_id (字符串,可选)
read_channel 从频道读取消息。返回包含作者信息、内容、附件和时间戳的消息。 guild_id (字符串,必填), channel_id (字符串,必填), limit (整数,可选——默认100,最大100), offset (整数,可选--默认值0)
rename_channel 重命名公会中的频道。 guild_id (字符串,必填), channel_id (字符串,必填), name (字符串,必填)
delete_channel 从公会中删除频道。 guild_id (字符串,必填), channel_id (字符串,必填)

权限

工具 描述 参数
define_overwrite 定义频道或类别上角色或用户的权限覆盖。这 type 确定目标: role, channel, category,或 userThe target_id 是否为互补目标(例如,如果类型为 role,target_id是频道或类别)。 guild_id (字符串,必填), type (string,必填--其中之一 role, channel, category, user), id (字符串,必填), target_id (字符串,必填), allowed (string[],必填), denied (string[],必填), reason (字符串,必填)

可用权限

create_instant_invite, kick_members, ban_members, administrator, manage_channels, manage_server, add_reactions, view_audit_log, priority_speaker, stream, read_messages, send_messages, send_tts_messages, manage_messages, embed_links, attach_files, read_message_history, mention_everyone, use_external_emoji, view_server_insights, connect, speak, mute_members, deafen_members, move_members, use_voice_activity, change_nickname, manage_nicknames, manage_roles, manage_webhooks, manage_emojis

发展

# Run tests
bundle exec rspec

# Run linter
bundle exec rubocop

许可证

麻省理工学院