本地MCP服务器——Discord、微软待办事项和Otter.ai
本地 模型上下文协议 将Discord、Microsoft待办事项和Otter.ai操作作为工具公开的服务器 stdio传输 --不需要HTTP服务器。
______________________________________________________________________
全局架构
每个服务器都是由Claude Desktop(或Claude Code)启动的独立Python进程。Claude通过stdin/stdout发送JSON-RPC消息;服务器将它们转换为API调用。
Claude (Desktop / Code)
│
├─► mcp_discord/server.py ──► Bot "Claude_MCP" ──► Discord
│
├─► mcp_todo/server.py ──► Microsoft Graph API ──► Microsoft To Do
│
└─► mcp-otter/run_otter.py ──► Otter.ai API ──► Meeting transcripts没有打开网络端口。每台服务器的寿命只与其父级Claude会话的寿命一样长。
______________________________________________________________________
mcp_dunch--discord工具
工具
| 工具 | 说明 |
|---|---|
send_message | 向频道发送短信 |
read_messages | 从频道获取最近的消息 |
list_channels | 列出公会/服务器中的所有频道 |
add_reaction | 在消息中添加表情符号反应 |
需求
- Python 3.11+
- 不和 机器人令牌 具有以下权限:
- Read Messages / View Channels - Send Messages - Add Reactions - Read Message History
- 机器人必须被邀请到你的服务器(公会)。
- 消息内容意图 必须在Discord开发者门户(Bot)中启用→ 特权网关意图)。
设置
1.创建虚拟环境并安装依赖项
cd mcp_discord
:: Find the uv-managed Python (adjust path if different)
set PY=C:\Users\%USERNAME%\AppData\Roaming\uv\python\cpython-3.14.3-windows-x86_64-none\python.exe
%PY% -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt2.配置凭据 --编辑 mcp_discord/.env:
DISCORD_TOKEN=your-bot-token-here
DISCORD_GUILD_ID=your-guild-id-here- 不一致标记 --Discord开发者门户→ 您的应用程序→ Bot → 令牌。
- confirm_GUILD_ID --在Discord中右键单击服务器→ “复制服务器ID”(需要开发人员模式:设置→ 高级→ 开发者模式)。
3.烟雾测试
cd mcp_discord
.venv\Scripts\python.exe server.py进程连接到Discord,然后在stdin上等待。按 Ctrl+C 停止。
______________________________________________________________________
mcp_todo——微软待办事项工具
工具
| 工具 | 说明 |
|---|---|
get_task_lists | 返回已验证用户的所有任务列表 |
get_tasks | 返回特定列表中的所有任务 |
create_task | 创建新任务(可选截止日期) |
complete_task | 将任务标记为已完成 |
需求
- Python 3.11+
- 一 Azure应用程序注册 与:
- 平台: 移动和桌面应用程序 (公共客户) - 委托的API权限: Tasks.ReadWrite (微软图形) - 重定向URI: https://login.microsoftonline.com/common/oauth2/nativeclient
TENANT_ID留下common对于个人Microsoft帐户,或设置为工作/学校帐户的租户ID。
客户端密码 存储在 .env 仅供参考,但不用于设备流程 (这是一个公共客户端流)。它可以保持原样。设置
1.创建虚拟环境并安装依赖项
cd mcp_todo
set PY=C:\Users\%USERNAME%\AppData\Roaming\uv\python\cpython-3.14.3-windows-x86_64-none\python.exe
%PY% -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt2.配置凭据 --编辑 mcp_todo/.env:
CLIENT_ID=your-azure-app-client-id-here
CLIENT_SECRET=your-azure-app-client-secret-here
TENANT_ID=common3.首次运行身份验证
在第一次启动时,服务器会打印一条设备流消息到 标准错误:
To sign in, use a web browser to open https://microsoft.com/devicelogin
and enter the code XXXXXXXX to authenticate.打开URL,输入代码,使用您的Microsoft帐户登录,授予 Tasks.ReadWrite 许可。令牌保存到 mcp_todo/token_cache.json 并在后续运行中自动刷新。
4.烟雾测试
cd mcp_todo
.venv\Scripts\python.exe server.py______________________________________________________________________
mcp-otter-otter.ai转录工具
工具
| 工具 | 说明 |
|---|---|
otter_search | 在所有Otter成绩单中进行全文搜索 |
otter_list_transcripts | 列出最近的成绩单和摘要 |
otter_get_transcript | 获取特定成绩单的全文(带说话者标签) |
otter_get_user | 获取经过身份验证的Otter.ai帐户的信息 |
需求
- Python 3.11+
- 一 Otter.ai帐户 (电子邮件+密码)
设置
1.创建虚拟环境并安装
cd mcp-otter
set PY=C:\Users\%USERNAME%\AppData\Roaming\uv\python\cpython-3.14.3-windows-x86_64-none\python.exe
%PY% -m venv .venv
.venv\Scripts\activate
pip install -e .
pip install python-dotenv2.配置凭据 --创建 mcp-otter/.env:
OTTER_EMAIL=your@email.com
OTTER_PASSWORD=your-otter-password3.烟雾测试
cd mcp-otter
.venv\Scripts\python.exe run_otter.py有关底层服务器的更多详细信息(可用工具、示例查询、 advanced_search API工作)参见 mcp-otter/README.md.
______________________________________________________________________
连接到克劳德桌面
打开配置文件:
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
两台服务器同时运行
{
"mcpServers": {
"discord": {
"command": "C:\\delivery\\Local-Host-Discord-MCP-server\\mcp_discord\\.venv\\Scripts\\python.exe",
"args": ["C:\\delivery\\Local-Host-Discord-MCP-server\\mcp_discord\\server.py"]
},
"todo": {
"command": "C:\\delivery\\Local-Host-Discord-MCP-server\\mcp_todo\\.venv\\Scripts\\python.exe",
"args": ["C:\\delivery\\Local-Host-Discord-MCP-server\\mcp_todo\\server.py"]
},
"otter": {
"command": "C:\\delivery\\Local-Host-Discord-MCP-server\\mcp-otter\\.venv\\Scripts\\python.exe",
"args": ["C:\\delivery\\Local-Host-Discord-MCP-server\\mcp-otter\\run_otter.py"]
}
}
}如果您的仓库位于不同的位置,请调整路径,然后 重新启动克劳德桌面。两组工具都将出现在工具选择器中。
______________________________________________________________________
连接到克劳德代码(CLI)
claude mcp add discord \
--command "C:/delivery/Local-Host-Discord-MCP-server/mcp_discord/.venv/Scripts/python.exe" \
--args "C:/delivery/Local-Host-Discord-MCP-server/mcp_discord/server.py"
claude mcp add todo \
--command "C:/delivery/Local-Host-Discord-MCP-server/mcp_todo/.venv/Scripts/python.exe" \
--args "C:/delivery/Local-Host-Discord-MCP-server/mcp_todo/server.py"
claude mcp add otter \
--command "C:/delivery/Local-Host-Discord-MCP-server/mcp-otter/.venv/Scripts/python.exe" \
--args "C:/delivery/Local-Host-Discord-MCP-server/mcp-otter/run_otter.py"______________________________________________________________________
项目结构
Local-Host-Discord-MCP-server/
├── mcp_discord/
│ ├── server.py # MCP server — Discord tool definitions and handlers
│ ├── discord_client.py # discord.py wrapper with error handling
│ ├── .env # DISCORD_TOKEN, DISCORD_GUILD_ID (not committed)
│ └── requirements.txt
│
├── mcp_todo/
│ ├── server.py # MCP server — To Do tool definitions and handlers
│ ├── todo_client.py # Microsoft Graph API async wrapper
│ ├── auth.py # MSAL device-flow + token cache management
│ ├── .env # CLIENT_ID, CLIENT_SECRET, TENANT_ID (not committed)
│ ├── token_cache.json # Generated on first auth run (not committed)
│ └── requirements.txt
│
└── mcp-otter/ # Vendored from https://github.com/DarrenZal/otter-mcp (MIT)
├── run_otter.py # Local .env-loading wrapper around otter_mcp.main()
├── src/otter_mcp/ # Upstream server (search + transcript retrieval)
├── .env # OTTER_EMAIL, OTTER_PASSWORD (not committed)
├── pyproject.toml
└── LICENSE # MIT — Copyright (c) 2025 Darren Zal______________________________________________________________________
故障排除
| 症状 | 修复 |
|---|---|
DISCORD_TOKEN is not set | 填写 mcp_discord/.env |
Missing permissions (不一致) | 重新邀请具有所需权限的机器人 |
Message Content Intent errors | 在Discord开发人员门户中启用意图 |
CLIENT_ID is not set | 填写 mcp_todo/.env |
| 设备流消息从未出现 | 检查stderr是否可见;Claude Desktop在日志中显示它 |
AADSTS 设备流期间出错 | 验证Azure应用程序是否具有 Tasks.ReadWrite 授权权限和正确的重定向URI |
ModuleNotFoundError | 快跑 pip install -r requirements.txt 在正确的内部 .venv |
| 服务器立即退出 | 确保venv python.exe 配置中的路径正确 |
OTTER_EMAIL is not set | 填写 mcp-otter/.env |
| Otter登录失败 | 直接在Otter.ai上检查电子邮件/密码是否有效;API是非官方的,可能会限制 |
______________________________________________________________________
