骨折
需求
安装
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
许可证
麻省理工学院