变量输入
变量定义
| 变量名 | 数据类型 | 默认值 | 是否可空 | 说明 |
|---|---|---|---|---|
discord_mcp_address |
string | http://localhost:8000/sse |
True | Discord MCP 服务地址 |
proxy |
string | False | 链接MCP服务器使用的代理 |
输入异常处理
| 异常类型 | 处理方式 |
|---|---|
| 变量输入数据类型不一致 | 提示用户:传入数据类型与定义不一致 |
| 非空变量未提供 | 提示用户:未提供必填变量 |
执行流程
1. 检测服务状态
检查 discord-mcp 是否已在运行(注意:MCP 使用 SSE 端点,需使用正确的端点路径):
Linux/macOS:
当$proxy未提供时:
curl -s -m 2 $discord_mcp_address | head -1 | grep -q "event:" && echo "running" || echo "not running"
当$proxy有提供时:
curl -s -m 2 -x $proxy $discord_mcp_address | head -1 | grep -q "event:" && echo "running" || echo "not running"
说明:
Windows PowerShell 先使用
Test-NetConnection检测端口是否开放,再使用.NET WebRequest发送 GET 请求并检查状态码.NET WebRequest比Invoke-WebRequest更轻量级,对 SSE 长连接的处理更好Linux/macOS 使用
curl发送 GET 请求,并用head -1获取第一行响应,检查是否包含 SSE 事件格式超时设置为 2 秒,避免 SSE 长连接导致的问题
端口使用 8000(根据日志显示的实际端口)
已运行 → 记录 SSE 端点地址
$discord_mcp_address,跳到步骤 3未运行 → 询问用户:服务是否部署在其他地址/端口?
- 用户提供地址 → 验证可达后跳到步骤 3
- 未部署 → 进入步骤 2
2. 部署服务
确认操作系统(macOS / Linux / Windows)和是否已安装 Docker。
3. 检测 MCP 连接配置
检查当前客户端是否已配置 Discord MCP 连接。
Claude Code:
Linux/MacOS: 读取 ~/.claude/settings.json 和项目级 .claude/settings.json,查找 mcpServers 中是否有 discord 配置。
Windows: 读取 %USERPROFILE%\.claude\settings.json 和项目级 .claude\settings.json,查找 mcpServers 中是否有 discord 配置。
- 已配置且地址正确 → 跳到步骤 5
- 已配置但地址不匹配 → 修正地址
- 未配置 → 进入步骤 4
4. 配置 MCP 连接
询问用户:
连接地址:如果步骤 1 已确认可达的地址,用该地址作为默认值,否则默认 http://localhost:8000/sse。
使用的客户端:
Claude Code:
claude mcp add discord --transport sse <地址>
或写入配置文件:
- 全局:
~/.claude/settings.json - 项目级:
.claude/settings.json
{
"mcpServers": {
"discord": {
"url": "http://localhost:8000/sse",
"transport": "sse"
}
}
}
Cursor(.cursor/mcp.json):
{
"mcpServers": {
"discord": {
"url": "http://localhost:8000/sse",
"transport": "sse"
}
}
}
其他客户端:告知用户 Discord MCP 服务的 SSE 端点地址,让用户按客户端文档自行配置。
5. 验证与提示
- 提示用户重启当前会话 — MCP 配置变更后需重启客户端才能加载新的 MCP 工具
- 重启后调用
channels验证连接正常
失败处理
| 场景 | 处理 |
|---|---|
| 已有配置但地址错误 | 修正地址并重启 |
| SSE 连接失败 | 检查网络连接和服务状态 |