Missive MCP服务器
一个MCP(模型上下文协议)服务器,与 导弹API,使Claude能够管理电子邮件对话、联系人和团队协作。
先决条件
- Node.js 18+
- 与以下机构建立通信帐户 生产计划 (API访问需要)
- 导弹API令牌
安装
npm install
npm run build模式
服务器以两种模式运行: 标准 供本地单用户使用,以及 远程 用于托管多用户部署。
标准模式(本地)
设置 MISSIVE_API_TOKEN 环境变量:
export MISSIVE_API_TOKEN="your_api_token_here"
npm start获取API令牌:打开导弹,进入设置>API,单击“创建新令牌”。
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"missive": {
"command": "/path/to/node",
"args": ["/path/to/missive-mcp/dist/index.js"],
"env": {
"MISSIVE_API_TOKEN": "your_api_token_here"
}
}
}
}重要提示: 使用完整路径 node (奔跑 which node 找到它)。Claude Desktop具有受限的PATH,否则可能无法找到节点。
远程模式(托管)
使用OAuth运行HTTP服务器。每个用户通过基于浏览器的授权流提供自己的Missive PAT。
export ENCRYPTION_KEY="$(openssl rand -hex 32)"
export BASE_URL="https://missive-mcp.example.com"
npm run remote| 变量 | 必填 | 描述 |
|---|---|---|
ENCRYPTION_KEY | 是 | AES-256-GCM PAT加密的32字节十六进制字符串 |
BASE_URL | 是 | 服务器的公共URL |
PORT | 无 | HTTP端口(默认3000) |
DATA_DIR | 否 | 存储文件目录(默认 ./data) |
将MCP客户端指向 {BASE_URL}/mcp服务器自动处理OAuth:
- 客户端通过以下方式发现端点
/.well-known/oauth-authorization-server - 客户端通过以下方式动态注册
/register - 用户被重定向到表单以粘贴其导弹API令牌
- 服务器验证令牌,加密并存储它,发出OAuth令牌
- 客户端使用承载令牌进行呼叫
/mcp
PAT在静态时使用AES-256-GCM进行加密。OAuth令牌在1小时后过期(刷新令牌持续30天)。
工具
参考数据
| 工具 | 说明 |
|---|---|
list_organizations | 列出您所属的组织 |
list_teams | 列出团队(用于任务) |
list_users | 列出用户(用于分配) |
list_contact_books | 列出联系人簿(创建联系人前需要) |
list_shared_labels | 列出标签(用于过滤和标记) |
对话
| 工具 | 说明 |
|---|---|
list_conversations | 列出带有过滤器的对话(收件箱、已分配、已关闭、团队、标签、电子邮件、域) |
get_conversation | 按ID获取单个对话 |
消息
| 工具 | 说明 |
|---|---|
get_conversation_timeline | 以统一的时间线获取所有消息、帖子和评论 |
get_message | 获取完整的邮件内容(带有正文截断选项) |
草稿
| 工具 | 说明 |
|---|---|
list_drafts | 列出对话中的草稿 |
create_draft | 创建草稿(未发送) |
send_message | 立即发送消息(速率受限) |
delete_draft | 删除未发送的草稿 |
联系人
| 工具 | 说明 |
|---|---|
list_contacts | 在书中列出联系人(带搜索功能) |
get_contact | 获取一个联系人 |
create_contact | 创建新联系人 |
update_contact | 更新现有联系人 |
管理
| 工具 | 说明 |
|---|---|
create_post | 在对话中添加帖子;关闭、标记、分配或移动到团队 |
例子
阅读收件箱
Use list_conversations with inbox=true to see recent conversations.回复电子邮件
1. Use list_conversations to find the conversation
2. Use get_conversation_timeline to see the full thread (messages + team activity)
3. Use send_message with the conversation ID to reply搜索来自域的电子邮件
Use list_conversations with domain="example.com"指定对话
1. Use list_users to find the user ID
2. Use list_organizations to get the org ID
3. Use create_post with add_assignees=[user_id]速率限制
send_message:每分钟10次,每小时100次(客户强制执行)- 导弹API速率限制没有记录;客户端处理429个响应
安全
- API令牌在启动(stdio)或授权(远程)时进行验证
- 令牌从不被记录或包含在错误消息中
- 在远程模式下,PAT在静止时使用AES-256-GCM进行加密
- 电子邮件正文内容从未被记录
- 所有工具参数的输入验证
许可证
麻省理工学院
