邮件管理服务器

Missive MCP Server是一个接口服务器,通过与Missive API交互,使Claude能够管理电子邮件对话、联系人和团队协作。

  • by grncdr
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 grncdr/missive-mcp

使用说明

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:

  1. 客户端通过以下方式发现端点 /.well-known/oauth-authorization-server
  2. 客户端通过以下方式动态注册 /register
  3. 用户被重定向到表单以粘贴其导弹API令牌
  4. 服务器验证令牌,加密并存储它,发出OAuth令牌
  5. 客户端使用承载令牌进行呼叫 /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进行加密
  • 电子邮件正文内容从未被记录
  • 所有工具参数的输入验证

许可证

麻省理工学院