项目简介
Discourse MCP服务器是一个专门为大型语言模型(LLM)客户端设计的后端服务。它能够将Discourse论坛的各项功能(如搜索、阅读、创建内容等)封装成标准化的工具,并通过Model Context Protocol (MCP) 与AI代理进行通信。这使得AI代理可以像调用本地函数一样,在Discourse论坛上执行各种操作,从而实现智能化的论坛内容管理、信息查询和自动化交互。
主要功能点
- 丰富工具集: 提供一系列与Discourse论坛交互的工具,包括:
- 内容查询: 搜索论坛帖子、阅读特定主题或帖子内容、列出分类和标签。
- 内容创建: 创建新帖子、新主题、新用户和新分类(需启用写入权限)。
- 用户信息: 获取特定用户的基本信息。
- 话题筛选: 通过复杂的查询语言筛选话题。
- 灵活的站点选择:
- 动态选择: 运行时通过工具调用选择目标Discourse站点。
- 启动时绑定: 在服务器启动时直接绑定到特定Discourse站点。
- 安全与权限管理:
- 默认以只读模式运行,保护论坛数据安全。
- 通过配置API密钥和用户名,可以在指定站点上启用写入操作(需显式授权)。
- 内置速率限制机制,确保写入操作的安全性。
- 动态工具发现: 支持从Discourse论坛的 '/ai/tools' API 自动发现并注册远程工具,扩展功能。
- 稳健性与日志: 包含HTTP请求重试、轻量级缓存,并提供可配置的日志级别,日志中的敏感信息会自动脱敏。
安装步骤
- 准备环境: 确保您的系统已安装 'Node.js' (版本 '18' 或更高) 和 'pnpm' 包管理器。
- 通过npx运行 (推荐): 这是最简单、无需全局安装的方式。每次运行都会使用最新版本:
npx -y @discourse/mcp@latest - 可选:全局安装: 如果您希望在命令行中直接使用 'discourse-mcp' 命令:
npm install -g @discourse/mcp # 安装后,您可以使用 'discourse-mcp' 命令启动服务器
服务器配置(供MCP客户端使用)
MCP客户端(如Claude Desktop)需要以下JSON格式的配置来连接Discourse MCP服务器。请根据您的需求调整 'command' 和 'args' 参数。
{ "mcpServers": { "discourse": { "command": "npx", "args": ["-y", "@discourse/mcp@latest"], "env": {} } } }
- 'mcpServers': 这是MCP客户端中用于定义所有MCP服务器的顶级键。
- 'discourse': 这是您为该服务器实例定义的名称,可自定义(例如,可以命名为 "myDiscourseForum")。
- 'command': 启动MCP服务器的命令行指令。这里使用 'npx' 来运行最新版本的 '@discourse/mcp' 包。如果您已全局安装,可以替换为 '"discourse-mcp"'。
- 'args': 传递给启动命令的参数列表。这些参数用于配置服务器的行为:
- '["-y", "@discourse/mcp@latest"]': 默认参数,启动只读服务器。
- '["-y", "@discourse/mcp@latest", "--site", "https://try.discourse.org"]': 将服务器绑定到指定Discourse站点 'https://try.discourse.org',并隐藏站点选择工具。
- '["-y", "@discourse/mcp@latest", "--allow_writes", "--read_only=false", "--auth_pairs", "[{"site":"https://try.discourse.org","api_key":"您的API密钥","api_username":"system"}]"]': 启用写入功能,并为 'https://try.discourse.org' 配置API密钥。请将 '您的API密钥' 替换为实际的Discourse API密钥。
- 'env': 一个可选的JSON对象,用于设置服务器进程的环境变量。例如,您可以在这里传递API密钥,而不是直接在 'args' 中显示。
基本使用方法
- 启动Discourse MCP服务器: 在您的终端中,使用上述安装步骤中的命令启动服务器。例如:
npx -y @discourse/mcp@latest --log_level info - 在MCP客户端中连接: 将上述 "服务器配置" 部分的JSON配置添加到您的MCP客户端中。
- 选择Discourse站点:
- 运行时选择: 如果服务器未绑定特定站点,您的AI代理需要首先调用 'discourse_select_site' 工具,并提供目标Discourse论坛的URL,例如 '{ "site": "https://try.discourse.org" }'。
- 启动时绑定: 如果您在启动服务器时已使用 '--site <URL>' 参数绑定了站点,则无需此步骤,'discourse_select_site' 工具将不可用。
- 调用论坛工具: 一旦站点被选中,AI代理即可调用已注册的Discourse工具。例如:
- 搜索内容: AI代理可以调用 'discourse_search' 工具,并提供搜索查询,例如 '{ "query": "AI Agents" }'。
- 阅读主题: 调用 'discourse_read_topic' 工具,提供主题ID,例如 '{ "topic_id": 123 }'。
- 启用写入功能 (可选): 如果您需要在论坛上创建内容(如帖子、主题),请确保在启动服务器时添加 '--allow_writes --read_only=false' 参数,并配置 '--auth_pairs' 提供有效的API密钥进行身份验证。然后,AI代理可以调用:
- 创建帖子: 'discourse_create_post' 工具,输入 '{ "topic_id": 123, "raw": "这是我的新帖子内容。" }'。
- 创建主题: 'discourse_create_topic' 工具,输入 '{ "title": "新的讨论主题", "raw": "这是主题的初始内容。", "category_id": 1 }'。
常见问题
- 为什么无法创建帖子?: 服务器默认以只读模式运行。请参阅“基本使用方法”中的“启用写入功能”部分进行配置。
- 如何禁用远程工具发现?: 在启动服务器时添加 '--tools_mode=discourse_api_only' 参数。
- 如何避免暴露 'discourse_select_site' 工具?: 在启动服务器时使用 '--site <URL>' 参数绑定到单个站点。
信息
分类
AI与计算