通过 Discourse 内置的 MCP 服务器将您的 AI 应用连接到社区

Discourse 现在内置了 MCP 服务器,因此你可以让心仪的 AI 应用帮你查找主题、跟进讨论,或为你的社区活动生成报告。

MCP(Model Context Protocol,模型上下文协议)是一种让 AI 应用使用其他服务提供的工具的方式。Discourse 提供了这些工具,你只需使用 Discourse 账户登录并批准其请求的访问权限,即可将你的应用连接起来。:slight_smile:

该服务器作为你的 Discourse 站点的一部分运行。存在一个独立的 discourse-mcp 包,那是一个你需要在本地安装并运行的工具——它对于这项新功能并非必需。你可以直接连接到你的社区新的内置服务器,而无需设置本地开发环境。向下滚动查看一下 :backhand_index_pointing_right:t2:

你可以用它做什么?

你可以搜索和阅读主题,浏览分类和标签,查看用户资料和活动,以及检查你的书签和通知。如果启用了写入权限,你的应用还可以创建主题、回复、编辑帖子、保存草稿和上传文件。私信(PM)拥有独立的读取和写入权限。

例如,你可以这样询问:

  • “查找关于设置 SSO 的讨论,并总结人们尝试过的方案。请附上主题的链接。”
  • “阅读这个主题并给我解释一下(ELI5)”
  • “找到我保存的草稿,帮我看看我停在哪里了”

当相应的插件和 MCP 工具启用时,还有用于聊天、事件、表情回应、已解决主题和主题投票的工具。

一个很棒的功能是支持审核和站点设置。拥有相应权限的工作人员可以检查审核队列、阅读标记背后的详细信息、查看帖子修订版本以及查询用户的审核历史。管理员还可以查找站点设置并更新受支持的设置。

谁可以访问什么?

作为管理员,你可以选择你的站点公开哪些工具,以及每个组可以向应用授予哪些权限。读取和写入权限是分开的,因此你可以允许搜索和阅读,而不允许进行更改。

用户登录 Discourse 并批准应用请求的访问权限。该应用将以该用户的正常 Discourse 权限行事,并在授予它的访问范围内运行。

:warning: 授予应用读取内容的权限,并不会让用户访问他们原本无法看到的内容。 无论允许用户拥有哪些 MCP 范围,所有典型的应用权限仍然适用。再说一遍:被授予私信范围的用户将无法在应用中看到他们原本无法看到的私信。站点设置工具需要管理员账户,且秘密设置的值不会暴露。

你可以从 MCP 管理页面审查已连接的应用和授权、撤销访问权限、阻止客户端以及检查工具活动。用户也可以在 偏好设置 → 安全 → MCP 应用 下撤销他们自己的连接。

设置

MCP 服务器默认是禁用的。在包含此功能的 Discourse 版本上:

  1. 前往 /admin/config/mcp 并在 设置 中启用 mcp_server_enabled
  2. 功能 中,启用你希望你的站点公开的工具。新工具在明确启用之前是禁用的。
  3. 访问 中,选择哪些组可以连接以及它们可以授予哪些权限。管理员组已预先注册;根据需要添加其他组。
  4. 使用 概览 上显示的服务器端点连接你的 AI 应用,通常是 https://your-community.example/mcp
  5. 登录 Discourse 并批准请求的访问权限。

你的应用需要支持通过 Streamable HTTP 和 OAuth 进行的远程 MCP。一些应用可以自动识别自己。如果你的应用需要预注册的客户端,请使用 OAuth 客户端 → 添加 OAuth 客户端 并在你的应用中输入匹配的客户端详细信息。该表单包含常见应用的预设。

mcp_oauth_client_id_metadata_policy 设置控制应用是否可以通过客户端元数据 URL 识别自己。你可以允许任何域名、将此限制为批准的域名,或要求使用预注册的客户端。

这里有一个完整的录屏 [1],展示了如何将 ChatGPT 连接到 Meta 的 MCP 服务器(仅管理员可用) :video_camera:

试一试 :woman_technologist:t2:

告诉我们你正在使用哪个应用,以及哪些工具可以改进!

这里还有更多工作正在进行中:

  • 更多的范围 / 工具
  • 我们正在探索为知名应用(如 ChatGPT、Claude 等)创建官方插件。

  1. 部分片段已加速 ↩︎

18 个赞

这太棒了。我从项目最初在代码仓库中发布起就一直关注着它。它的发布时机正好赶上我在尝试使用之前的客户端通过代理来实现类似功能时遇到了一些问题(很可能源于我的知识不足)。

我会使用它,并在进行一些测试后,分享它在 Pi(一种轻量级运行环境,适合那些希望自主选择使用哪些组件、不使用哪些组件,并保持一切轻量化的用户)上的运行效果和表现。

为工作人员启用服务器功能将带来非凡的可能性,否则这些功能将难以实现。

祝贺团队!


我想知道是否有计划向用户开放内置的 Meta MCP 服务器?

我有一些工作流程、提示词以及通用使用技巧,可能对社区有所帮助,而使用 MCP 服务器可以简化发布所有这些内容所需的时间。

6 个赞

我该如何使用这个服务器工具配合特定作用域的用户?我的意思是,能否使用 MCP 执行某些任务,而无需通过管理员权限进行审批。

另一方面,我能否使用 Opencode Go 配合 OAuth 来使用它?我尝试从 MCP 服务器页面访问帮助链接,但该链接已失效

你需要进入 MCP 设置中的 Access 选项卡,然后为你的用户组添加一个“组 x 范围”(Group x Scope)(如果不存在,请新建一个)。

让我来看看 OpenCode。

1 个赞

谢谢你的回复。这是一个通过 MCP 创建的用户,用于与我的桌面工具配对。它不是普通用户,而是一个仅为此目的而存在的、具有特定权限范围的用户。

我需要创建一个真实用户,还是可以直接让这个 MCP 用户以 MCP 权限登录?

您创建的用户将需要拥有您为其授予的所有权限范围(scopes)的访问权限。

例如:(1) 如果您希望该用户能够编辑站点设置,则该用户必须是管理员。

例如:(2) 如果您希望该用户能够读取您的私信,则该用户必须已加入相关私信(或必须是管理员)

我会将这一内容(重新措辞后)添加到常见问题解答(FAQ)部分 :ok_hand:t2:

再次感谢,我明白了!我的问题是:如果用户是通过 MCP 单独创建的,而我使用的并非通常的管理员账户,该如何对其进行身份验证?

也许我遗漏了什么。

如这里所述 ^

你需要为你用户所在的组添加组访问权限。

1 个赞

我想试试 MCP。当我在设置中打开 AI 总开关时,用户那边会有什么可见的变化吗?

不,用户端看不到任何变化。改动仅限于管理界面——如果你希望用户看到相关提示,可以考虑在公告主题中添加横幅。

嗯,我最终使用了一个具有明确权限范围的用户(MCP 设置中为论坛内容的读写权限),在不到一小时内编辑了数百个帖子的标签或分类。

我原本考虑创建一个专用用户以进一步限制访问权限,但鉴于我对 Discourse 团队的实现方式很有信心,这样做其实既没必要,也比我最终采用的方案更复杂。

以前使用 API 密钥时,工作流程略有不同。我很喜欢这种新方法,并完全支持这一发展方向 :slight_smile:

谢谢 nat 的耐心!

1 个赞