Discord服务器管理协议

一个基于FastMCP和discord.py的生产级Discord模型上下文协议(MCP)服务器,提供管理频道、角色、权限、消息、审核和服务器设置的完整API。

  • by ExilProductions
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 ExilProductions/discord-mcp

使用说明

断开MCP服务器

A生产级 模型上下文协议(MCP) Discord服务器使用 FastMCP 和 不一致.py. 提供一个完整的API表面,用于通过MCP管理渠道、角色、权限、消息、审核和服务器设置。


特性

  • 具有自动会话管理的每令牌机器人会话
  • 渠道管理:通过位置创建、编辑、删除、移动和重新排序
  • 角色管理:创建、编辑(包括职位)、删除、分配、删除
  • 通道、类别和角色的权限配置
  • 跨帮会和渠道的“以角色/成员身份查看”权限检查
  • 消息操作:发送、编辑、删除、批量删除、检索
  • 适度操作:超时、踢、禁止、执行角色策略
  • 帮会/服务器设置管理
  • 民意调查:创建、结束和获得结果
  • 计划事件:创建、编辑、删除、列出、获取与会者
  • 主题和论坛:创建、编辑、删除、管理成员、论坛帖子
  • Webhooks:创建、发送消息、列出、删除
  • 邀请:创建、列出、删除
  • 表情符号和贴纸:创建、删除、列出
  • 反应:添加、删除、列出用户、清除
  • AutoMod:创建、编辑、删除、列出规则
  • 审核日志:带过滤器的查询
  • 会员信息:获取详细信息,列出会员,编辑昵称/静音/静音
  • 机器人会话的状态端点

安装

uv sync

配置

复制模板 .env 文件并根据需要进行修改:

cp .env.template .env

默认绑定仅限于本地:

MCP_HOST=127.0.0.1
MCP_PORT=8000

用法

在本地运行MCP服务器:

uv run python -m discord_mcp.main

或者在没有本地设置的情况下使用它:

uv run --with git+https://github.com/ExilProductions/discord-mcp discord-mcp

MCP客户端配置示例

示例配置 开源代码 使用远程MCP服务器:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "discord-mcp": {
      "type": "remote",
      "url": "http://localhost:8000/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "YOUR_DISCORD_BOT_TOKEN"
      }
    }
  }
}

任何支持MCP的客户端都可以使用此功能。

MCP工具

渠道管理

  • create_channel -创建文本、语音、新闻、舞台、论坛、媒体或类别频道
  • edit_channel -编辑频道设置
  • delete_channel -删除频道
  • move_channel -将频道移动到类别
  • edit_channel 和 position -重新订购渠道/类别
  • get_channel -获取频道信息
  • get_channels -列出帮会中的所有频道

角色管理

  • create_role -创建新角色
  • edit_role -编辑角色(包括 position 重新订购)
  • delete_role -删除角色
  • assign_role -为成员分配角色
  • remove_role -从成员中删除角色
  • get_role -获取角色信息
  • get_roles -列出公会中的所有角色

权限管理

  • set_channel_permissions -设置频道权限
  • set_category_permissions -设置类别权限
  • set_role_permissions -更新角色权限
  • get_channel_permissions -获取频道权限覆盖
  • get_category_permissions -获取类别权限覆盖
  • remove_channel_permissions -删除权限覆盖
  • inspect_role_permissions -压缩默认角色权限摘要(计数、预览、关键功能)
  • inspect_member_permissions -默认情况下压缩成员权限摘要(计数、预览、关键功能)
  • inspect_target_channel_permissions -一个通道中一个目标的完全有效权限(详细深入查看)
  • list_target_accessible_channels -角色/成员可以访问的精简频道列表
  • list_target_inaccessible_channels -角色/成员无法访问的精简频道列表

权限检查针对AI代理工作流进行了优化:首先调用摘要工具,然后仅在需要时请求通道详细信息。

消息操作

  • send_message -发送消息(支持嵌入、TTS、提及、引用)
  • edit_message -编辑消息
  • delete_message -删除消息
  • bulk_delete_messages -批量删除邮件
  • get_message -获取消息
  • get_channel_messages -获取频道消息历史记录

节制

  • timeout_user -成员超时
  • remove_timeout -从成员中删除超时
  • kick_user -踢会员
  • ban_user -禁止会员
  • unban_user -取消会员资格
  • enforce_role_policy -执行角色策略(踢/禁止缺少所需角色的成员)
  • get_guild_bans -列出公会禁令
  • get_member_timeout_status -检查超时状态

帮会管理

  • get_guild_settings -获取服务器设置(名称、描述、验证级别等)
  • edit_guild_settings -编辑服务器设置

民意调查

  • create_poll -在频道中创建投票
  • end_poll -结束活动投票
  • get_poll_results -获取投票计数和结果

预定的事件

  • create_scheduled_event -创建预定活动(语音、舞台或外部)
  • edit_scheduled_event -编辑已安排的事件
  • delete_scheduled_event -删除已安排的事件
  • list_scheduled_events -列出公会中所有已安排的活动
  • get_scheduled_event_users -让用户对活动感兴趣

主题和论坛

  • create_thread -创建一个线程(可选地从消息中创建)
  • edit_thread -编辑线程设置(名称、存档、锁定、慢模式)
  • delete_thread -删除线程
  • list_threads -列出通道中的活动线程和已存档线程
  • add_thread_member -向线程添加成员
  • remove_thread_member -从线程中删除成员
  • create_forum_post -创建带有标签的论坛帖子

网络钩子

  • create_webhook -为频道创建webhook
  • send_webhook_message -通过webhook发送消息
  • list_webhooks -列出公会或频道的webhooks
  • delete_webhook -删除webhook

邀请

  • create_invite -创建频道邀请
  • list_invites -列出所有公会邀请
  • delete_invite -删除邀请

表情符号ay;sticks

  • create_emoji -创建自定义表情符号
  • delete_emoji -删除自定义表情符号
  • list_emojis -列出公会中的所有自定义表情符号
  • list_stickers -列出公会中的所有贴纸

反应

  • add_reaction -在消息中添加反应
  • remove_reaction -从消息中删除反应
  • get_reaction_users -获取对特定表情符号做出反应的用户
  • clear_reactions -清除消息中的所有或特定反应

自动模式

  • create_automod_rule -创建automod规则(关键字、垃圾邮件、预设、提及垃圾邮件)
  • edit_automod_rule -编辑automod规则
  • delete_automod_rule -删除automod规则
  • list_automod_rules -列出公会中的所有automod规则

审计日志

  • get_audit_log -使用筛选器(用户、操作类型、限制)查询审核日志

成员

  • get_member_info -获取详细的会员资料信息
  • list_members -列出公会成员
  • edit_member -编辑成员(昵称、静音、静音)

状态

  • get_bot_status -获取机器人状态和会话信息