关于 Commune
Commune 是为 AI Agent 提供邮箱和 SMS 访问能力的 MCP 服务。它将消息处理与邮箱、域名管理、邮件线程分诊及投递跟踪结合起来。
主要功能
- 01读取、搜索并回复邮件线程
- 02发送带附件的邮件
- 03创建邮箱并管理域名
- 04为线程添加标签、分配人员和更新状态
- 05发送 SMS 并搜索消息记录
- 06跟踪投递、退信和投诉
适用场景
- 01分诊并回复客户支持邮件
- 02按主题或内容搜索对话
- 03通过 SMS 发送订单更新
- 04查看邮件投递和抑制名单数据
MCP 相关
向 MCP 客户端提供邮件、邮箱、域名、线程分诊、投递跟踪和 SMS 工具,支持 Claude Desktop、Cursor 和 Windsurf。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Claude Desktop、Cursor 和 Windsurf 的电子邮件
为 Claude(或任何 MCP 客户端)提供真正的电子邮件收件箱和 SMS。30 秒即可安装,无需克隆。
你的 AI Agent 可以:
- 阅读电子邮件 — 列出邮件线程、按主题搜索、获取完整邮件历史记录
- 发送电子邮件 — 在现有线程中回复、撰写新邮件、附加文件
- 管理收件箱 — 创建程序化收件箱、设置自定义域名、使用标签和状态进行分类
- 跟踪投递情况 — 获取投递统计数据、抑制列表、退信和投诉事件
- 发送和接收 SMS — 配置电话号码、发送消息、搜索 SMS 历史记录
可与 Claude Desktop、Cursor、Windsurf 或任何 MCP 客户端搭配使用。
通过 Smithery 安装
Commune 已发布到 Smithery。为任何受支持的客户端一键安装:
# Install Smithery CLI (once)
npm install -g @smithery/cli@latest
# Add Commune to your client
npx @smithery/cli install commune-dev/commune --client claude # Claude Desktop
npx @smithery/cli install commune-dev/commune --client cursor # Cursor
npx @smithery/cli install commune-dev/commune --client windsurf # Windsurf
npx @smithery/cli install commune-dev/commune --client vscode # VS Code
npx @smithery/cli install commune-dev/commune --client claude-code # Claude Code
npx @smithery/cli install commune-dev/commune --client cline # Cline
npx @smithery/cli install commune-dev/commune --client roo-cline # Roo Code
npx @smithery/cli install commune-dev/commune --client goose # Goose
也可以通过 Smithery API 连接,用于 Agent 对 Agent 的场景:
https://commune--commune-dev.run.tools
示例提示词
配置完成后,你可以用自然语言向 AI 助手下达电子邮件和 SMS 相关指令:
阅读电子邮件:
- “检查我的支持收件箱是否有新邮件”
- “显示账单收件箱中的所有未读邮件线程”
- “查找本周询问退款的客户邮件”
- “搜索上个月所有关于付款问题的邮件线程”
- “conv_abc123 线程的完整对话历史记录是什么?”
- “显示所有尚未回复的邮件线程”
发送电子邮件:
- “回复 John 的邮件,告诉他我们会在 48 小时内处理退款”
- “给 [email protected] 发送一封主题为‘明天开会’的邮件,告诉她会议改到下午 3 点”
- “回复支持线程中关于登录故障的最后一条消息,并保留在线程中”
- “给上周所有未回复的潜在客户发送一封跟进邮件”
整理和分类:
- “将此线程标记为紧急,并分配给账单团队”
- “将所有超过 30 天且没有回复的线程标记为已关闭”
- “显示过去 7 天的邮件送达率统计数据”
- “列出支持收件箱中所有被抑制的电子邮件地址”
SMS:
- “为我的 Agent 配置一个电话号码”
- “向 +14155551234 发送 SMS,内容为‘你的订单已发货’”
- “显示我的所有 SMS 对话”
- “在我的 SMS 消息中搜索与配送问题有关的内容”
域名和收件箱管理:
- “在 example.com 下创建一个名为‘billing’的新收件箱”
- “验证 example.com 需要添加哪些 DNS 记录?”
- “显示我所有已验证的域名”
设置
1. 获取 API 密钥
从你的 Commune 控制面板创建 API 密钥。密钥以 comm_ 开头。
2. 添加到 MCP 客户端
选择你的客户端并添加 Commune 服务。无需本地文件 — uvx 会自动获取软件包。
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):
{
"mcpServers": {
"commune": {
"command": "uvx",
"args": ["commune-mcp"],
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
}
Cursor
打开 设置 → MCP → 添加服务器:
{
"commune": {
"command": "uvx",
"args": ["commune-mcp"],
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
Windsurf
打开 设置 → MCP,使用与 Cursor 相同的格式。
替代方案:使用 pip 安装
如果你更喜欢使用 pip 而不是 uvx:
pip install commune-mcp
然后使用 commune-mcp 作为命令:
{
"commune": {
"command": "commune-mcp",
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
工作原理
配置完成后,你的 AI agent 就可以在自然对话中使用 Commune 工具:
你: 检查我的支持邮箱,看看有没有新邮件
Agent: (调用
list_domains→list_inboxes→list_threads) [email protected] 中有 3 个新邮件线程:
- “未收到订单”——4 条消息,最后一次活动在 2 小时前
- “账单问题”——1 条消息,今天收到
- “功能请求”——2 条消息,最后一次活动在昨天
你: 订单的问题是什么?
Agent: (调用
get_thread_messages) 客户 [email protected] 表示他们的订单 #4521 已于 5 天前发货,但至今未收到。他们已跟进两次,询问追踪信息。
你: 回复说我们正在向物流部门核实,并会在 24 小时内告知进展
Agent: (调用带有
thread_id的send_email) 完成——已在现有邮件线程中向 [email protected] 发送回复。
Agent 会根据你的请求决定调用哪些工具。你无需指定工具名称。
邮件如何通过 Commune MCP 流转
入站(你收到邮件):
User sends email
|
v
Commune receives at your inbox ([email protected])
|
v
Commune fires webhook to your app (8 retries, HMAC signed)
|
v
Your MCP client reads thread via list_threads / get_thread_messages
|
v
You ask Claude: "Reply to John saying we're on it"
|
v
Claude calls send_email with thread_id --> reply appears in John's email thread
出站(你发送邮件):
You: "Send an update email to all VIP customers"
|
v
Claude calls list_threads --> get_thread_messages --> send_email (per thread)
|
v
Commune delivers via DKIM-signed SMTP
|
v
Delivery events tracked: sent --> delivered / bounced / complained
工具参考
域名工具
这些工具用于管理你的邮件域名。发送或接收邮件前,必须通过 DNS 验证域名。
list_domains
列出你账户中的所有邮件域名。
参数: 无
输出:
[
{
"id": "d_abc123",
"name": "example.com",
"status": "verified",
"region": "us-east-1"
}
]
create_domain
创建新的自定义域名。创建后,使用 get_domain_records 查看所需的 DNS 记录,然后使用 verify_domain 进行验证。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | str | 是 | 域名(例如 "example.com") |
region | str | 否 | AWS 区域(例如 "us-east-1") |
输出: 已创建的域名对象,包含其 ID 和状态。
get_domain_records
获取需要在域名注册商处添加的 DNS 记录,添加后才能通过验证。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 是 | 来自 list_domains 的域名 ID |
输出:
[
{ "type": "MX", "name": "example.com", "value": "inbound-smtp.us-east-1.amazonaws.com", "status": "pending" },
{ "type": "TXT", "name": "example.com", "value": "v=spf1 include:amazonses.com ~all", "status": "pending" }
]
verify_domain
触发 DNS 验证。在域名注册商处添加记录后调用。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 是 | 域名 ID |
收件箱工具
收件箱是域名下的邮箱。例如,example.com 下的 support → [email protected]。
list_inboxes
列出收件箱。不提供 domain_id 时,会列出所有域名下的全部收件箱。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 否 | 按域名筛选(省略时列出全部) |
输出:
[
{
"id": "i_xyz789",
"localPart": "support",
"address": "[email protected]",
"webhook": { "endpoint": "https://..." }
}
]
create_inbox
创建新收件箱。如果未提供域名,则会自动解析,无需设置 DNS。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
local_part | str | 是 | @ 前面的部分(例如 "support"、"billing") |
domain_id | str | 否 | 要在其下创建收件箱的域名。省略时会自动解析。 |
name | str | 否 | 收件箱的 Agent 名称 |
display_name | str | 否 | 在邮件客户端中显示的发件人名称 |
webhook_endpoint | str | 否 | 用于邮件通知的 URL |
delete_inbox
永久删除收件箱。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 是 | 域名 ID |
inbox_id | str | 是 | 收件箱 ID |
set_extraction_schema
使用 JSON Schema 为收件箱配置结构化提取。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 是 | Domain ID |
inbox_id | str | 是 | 收件箱 ID |
name | str | 是 | Schema 名称 |
schema | str | 是 | Schema 对象的 JSON 字符串 |
description | str | 否 | 易于理解的描述 |
enabled | bool | 否 | 启用提取(默认 true) |
remove_extraction_schema
从收件箱移除结构化提取。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
domain_id | str | 是 | Domain ID |
inbox_id | str | 是 | 收件箱 ID |
线程工具
线程是电子邮件对话,即一组相关消息。这些是最常用的工具。
list_threads
列出收件箱中的线程,支持基于游标的分页。默认按最新优先返回。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
inbox_id | str | 二选一 | 按收件箱筛选 |
domain_id | str | 必填 | 按域筛选 |
limit | int | 否 | 1–100,默认 20 |
cursor | str | 否 | 上一响应中的分页游标 |
order | str | 否 | "desc"(最新优先)或 "asc" |
输出:
{
"data": [
{
"thread_id": "conv_abc123",
"subject": "Order not received",
"message_count": 4,
"last_message_at": "2025-03-15T14:30:00Z",
"snippet": "Hi, I ordered 5 days ago and still haven't...",
"last_direction": "inbound",
"has_attachments": false
}
],
"next_cursor": "eyJsYXN0...",
"has_more": true
}
要获取下一页,请将 next_cursor 作为 cursor 参数传入。
get_thread_messages
获取线程中的所有消息。按最早优先返回(按时间顺序)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 来自 list_threads 的线程 ID |
limit | int | 否 | 1–1000,默认 50 |
order | str | 否 | "asc"(按时间顺序)或 "desc" |
输出:
[
{
"message_id": "msg_001",
"direction": "inbound",
"participants": [
{ "role": "sender", "identity": "[email protected]" },
{ "role": "to", "identity": "[email protected]" }
],
"content": "Hi, I placed order #4521 five days ago...",
"metadata": {
"subject": "Order not received",
"created_at": "2025-03-10T09:15:00Z"
}
},
{
"message_id": "msg_002",
"direction": "outbound",
"content": "We're looking into this for you...",
"metadata": {
"subject": "Re: Order not received",
"created_at": "2025-03-10T10:30:00Z"
}
}
]
搜索工具
search_threads
按主题或内容搜索电子邮件线程。有条件时使用向量搜索(语义搜索),否则回退到文本匹配。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | str | 是 | 搜索查询(自然语言) |
inbox_id | str | 二选一 | 按收件箱筛选 |
domain_id | str | 必填 | 按域筛选 |
limit | int | 否 | 1–100,默认 20 |
分诊工具
管理线程状态、标签和分配——适用于 Agent 的工作流基础操作。
get_thread_metadata
获取线程的分诊元数据:标签、状态和分配信息。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 线程 ID |
set_thread_status
设置线程的分诊状态。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 线程 ID |
status | str | 是 | "open"、"needs_reply"、"waiting" 或 "closed" |
tag_thread
为线程添加标签。标签会累加,不会移除现有标签。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 线程 ID |
tags | str | 是 | 逗号分隔的标签(例如 "urgent,vip,sales-lead") |
untag_thread
从线程移除标签。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 线程 ID |
tags | str | 是 | 要移除的逗号分隔标签 |
assign_thread
将线程分配给 Agent 或用户。传入空值可取消分配。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
thread_id | str | 是 | 线程 ID |
assigned_to | str | 否 | Agent/用户标识符(传入空值可取消分配) |
投递能力工具
get_deliverability_stats
获取投递指标:已发送、已送达、退信、投诉和失败的数量及比率。
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | str | 二选一 | 按收件箱筛选 |
domain_id | str | 必填 | 按域名筛选 |
period | str | 否 | "24h"、"7d"、"30d"(默认:"7d") |
get_suppressions
列出被抑制的电子邮件地址(退信、投诉、退订)。
| Parameter | Type | Required | Description |
|---|---|---|---|
inbox_id | str | 否 | 按收件箱筛选 |
domain_id | str | 否 | 按域名筛选 |
limit | int | 否 | 最大结果数(默认:50) |
get_delivery_events
获取投递事件日志,以跟踪单封电子邮件。
| Parameter | Type | Required | Description |
|---|---|---|---|
message_id | str | 否 | 筛选特定消息 |
inbox_id | str | 否 | 按收件箱筛选 |
domain_id | str | 否 | 按域名筛选 |
event_type | str | 否 | "sent"、"delivered"、"bounced"、"complained"、"failed" |
limit | int | 否 | 最大结果数(默认:50) |
消息工具
send_email
发送电子邮件。可发送新邮件,也可在现有会话中回复。
| Parameter | Type | Required | Description |
|---|---|---|---|
to | str | 是 | 收件人;多个收件人以逗号分隔 |
subject | str | 是 | 主题行 |
html | str | 否* | HTML 正文 |
text | str | 否* | 纯文本正文 |
from_address | str | 否 | 发件人地址 |
reply_to | str | 否 | 回复地址 |
thread_id | str | 否 | 在现有会话中回复 |
inbox_id | str | 否 | 从指定收件箱发送 |
domain_id | str | 否 | 从指定域名发送 |
attachments | str | 否 | 以逗号分隔的附件 ID |
*至少提供 html 或 text。
若要在会话中回复,请传入从 list_threads 或 get_thread_messages 获取的 thread_id。电子邮件会归入收件人邮箱中的相应会话。
附件工具
upload_attachment
上传文件。返回可用于 send_email 的 attachment_id。
| Parameter | Type | Required | Description |
|---|---|---|---|
content | str | 是 | Base64 编码的文件内容 |
filename | str | 是 | 文件名(例如 "report.pdf") |
mime_type | str | 是 | MIME 类型(例如 "application/pdf") |
输出:
{
"attachment_id": "att_abc123",
"filename": "report.pdf",
"mime_type": "application/pdf",
"size": 45230
}
get_attachment_url
获取附件的临时下载 URL。
| Parameter | Type | Required | Description |
|---|---|---|---|
attachment_id | str | 是 | 附件 ID |
expires_in | int | 否 | URL 过期前的秒数(默认:3600) |
输出:
{
"url": "https://res.cloudinary.com/...",
"expires_in": 3600,
"filename": "report.pdf",
"mime_type": "application/pdf",
"size": 45230
}
电话号码工具
管理已开通的 SMS 电话号码。
list_phone_numbers
列出账户中所有已开通的电话号码。
**参数:**无
get_phone_number
获取单个已开通电话号码的详细信息。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | 是 | 从 list_phone_numbers 获取的电话号码 ID |
list_available_phone_numbers
购买前浏览可用的电话号码。
| Parameter | Type | Required | Description |
|---|---|---|---|
type | str | 否 | "TollFree"(默认)或 "Local" |
country | str | 否 | 两字母国家代码(默认:"US") |
limit | int | 否 | 最大结果数(默认:10) |
provision_phone_number
购买一个用于接收 SMS 的电话号码。会从你的余额中扣除积分。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number | str | No | 要购买的指定 E.164 号码(省略时自动选择) |
type | str | No | "tollfree"(默认)或 "local" |
friendly_name | str | No | 易于理解的标签 |
update_phone_number
更新电话号码的易读名称或自动回复消息。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | Yes | 电话号码 ID |
friendly_name | str | No | 易于理解的标签 |
auto_reply | str | No | 对所有收到的 SMS 自动回复的文本(设为空字符串可禁用) |
release_phone_number
将已配置的电话号码释放回号码池。积分不予退还。消息历史会保留。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | Yes | 要释放的电话号码 ID |
set_phone_number_webhook
为电话号码配置 webhook,以接收 SMS 事件通知。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | Yes | 电话号码 ID |
endpoint | str | Yes | 用于接收 webhook 负载的 HTTPS URL |
secret | str | No | 用于验证负载的 webhook 签名密钥 |
events | list | No | 事件类型(默认:["sms.received", "sms.sent"]) |
set_phone_number_allow_list
设置电话号码的允许列表——只有这些号码可以向其发送 SMS。此操作会替换现有列表。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | Yes | 电话号码 ID |
numbers | list | Yes | 允许的 E.164 电话号码(使用空列表可清空) |
set_phone_number_block_list
设置电话号码的屏蔽列表——这些号码的消息将被拒绝。此操作会替换现有列表。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | Yes | 电话号码 ID |
numbers | list | Yes | 要屏蔽的 E.164 电话号码(使用空列表可清空) |
SMS 工具
send_sms
发送一条 SMS 消息。
| Parameter | Type | Required | Description |
|---|---|---|---|
to | str | Yes | E.164 格式的收件人(例如 "+15551234567") |
body | str | Yes | SMS 消息文本 |
phone_number_id | str | No | 使用指定电话号码发送(省略时自动分配) |
list_sms_conversations
列出 SMS 对话线程。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | No | 按电话号码筛选(省略时列出全部) |
limit | int | No | 1–100,默认值为 20 |
get_sms_thread
获取与指定号码之间 SMS 线程中的所有消息。
| Parameter | Type | Required | Description |
|---|---|---|---|
remote_number | str | Yes | E.164 格式的外部电话号码 |
phone_number_id | str | Yes | 你的 Commune 电话号码 ID |
search_sms
对 SMS 消息进行语义搜索。
| Parameter | Type | Required | Description |
|---|---|---|---|
query | str | Yes | 搜索查询 |
phone_number_id | str | No | 将范围限定为指定电话号码 |
limit | int | No | 1–100,默认值为 20 |
list_sms_suppressions
列出已禁止接收 SMS 的电话号码(通过 STOP 关键词选择退出)。
| Parameter | Type | Required | Description |
|---|---|---|---|
phone_number_id | str | No | 按电话号码筛选(省略时列出全部) |
remove_sms_suppression
从短信抑制列表中移除一个电话号码(重新启用短信投递)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
phone_number | str | 是 | 要从抑制列表中移除的 E.164 格式电话号码 |
积分工具
get_credit_balance
获取 Commune 账户当前的积分余额。
参数: 无
list_credit_bundles
列出可购买的积分套餐。
参数: 无
credits_checkout
创建 Stripe 结账会话以购买积分套餐。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
bundle | str | 是 | 套餐 ID:"starter"、"growth" 或 "scale" |
return_url | str | 否 | 付款后重定向到的 URL |
常见问题
如何将 Commune 添加到 Claude Desktop?
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json,并添加 commune MCP 服务配置块(见上方的设置说明)。重启 Claude Desktop。Commune 工具会自动出现在 Claude 的工具列表中。
commune-mcp 与 Python/TypeScript SDK 有什么区别? commune-mcp 用于在 Claude Desktop 或 Cursor 等 MCP 客户端中进行交互式使用——你只需用自然语言下达指令,AI 就会调用这些工具。Python/TypeScript SDK 则用于通过代码以编程方式构建自主 Agent。两者都连接到同一个 Commune 后端。
它支持 Cursor 的 Agent 模式吗? 支持。按照设置部分所示的 JSON 配置块,通过 Settings → MCP → Add Server 将 commune-mcp 添加到 Cursor。配置完成后,Cursor 的 Agent 模式可以在任何聊天或 Composer 会话中使用所有 Commune 工具——读取会话、发送电子邮件和管理收件箱。
如何通过 MCP 服务创建新收件箱?
只需提出请求:“在 example.com 下创建一个名为 support 的新收件箱。”Agent 会调用 create_inbox,并传入 local_part: "support" 和你的域名 ID。如果你未指定域名,Commune 会自动分配一个,因此你只需提供本地部分,无需配置 DNS,即可创建收件箱。
Claude 能通过它实际发送电子邮件吗?
可以。Agent 调用 send_email 时,Commune 会通过带 DKIM 签名的 SMTP 将真实电子邮件投递到收件人的收件箱。邮件显示效果与普通邮件完全相同——在 Gmail 和 Outlook 中会正确归入同一会话,支持 HTML 和附件,并会生成可供追踪的投递事件。
我不在聊天会话中时收到的邮件会怎样?
Commune 会持久保存所有收到的邮件和会话。打开新聊天并要求检查收件箱时,Agent 会调用 list_threads,检索上次会话之后收到的所有邮件。你也可以选择为每个收件箱配置 Webhook,这样你的应用就能实时收到通知(重试 8 次,使用 HMAC 签名)。
如何在会话中回复,而不是开始一封新邮件?
向 send_email 传入 thread_id。最简单的方式是先让 Agent 显示某个会话,然后说“回复此会话并写上……”。它会在上下文中保留 thread_id 并自动传入。回复会在收件人的邮件客户端中显示为同一会话中的邮件。
我的邮件内容是否私密? 你的邮件内容通过 TLS 传输,并以静态加密方式存储在 Commune 的基础设施上。每个请求都通过 API 密钥进行身份验证,Webhook 使用 HMAC 签名,因此你的应用可以验证负载未被篡改。你的内容绝不会用于训练 AI 模型。
我可以将它与自己的电子邮件域名配合使用吗?
可以。使用 create_domain 注册你的域名,然后使用 get_domain_records 查看所需的 MX、TXT 和 CNAME 记录,在域名注册商处添加这些记录,并调用 verify_domain。验证通过后,该域名下的所有收件箱都会使用你的域名作为发件人地址(例如 [email protected])。
API 密钥是什么样的?
Commune API 密钥以 comm_ 前缀开头,后接随机字符串,例如 comm_sk_live_abc123xyz。请在 Commune 控制面板 中创建密钥。请妥善保管:将其视为密码,切勿将其提交到源代码管理中。
如何在收件箱中搜索特定主题?
自然地提出请求,使用 search_threads 工具,例如:“在我的支持收件箱中搜索有关退款的邮件。”Agent 会使用你的查询调用 search_threads。Commune 使用语义搜索,因此即使确切措辞不匹配,也能找到相关邮件串。例如,“退钱”也能找到有关退款的邮件串。
多人可以共用同一个 Commune MCP 服务吗?
可以。Commune 使用组织功能,多个团队成员可以共用同一账户和 API 密钥,也可以各自拥有一个限定于同一组织的 API 密钥。所有密钥都可以访问相同的域名和收件箱。若要隔离不同项目,请创建单独的收件箱(例如 billing@、support@),并在工具调用中按 inbox_id 进行筛选。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
COMMUNE_API_KEY | 是 | 你的 API 密钥(以 comm_ 开头) |
COMMUNE_BASE_URL | 否 | 覆盖 API URL(默认:Commune 云服务) |
生态系统
| 软件包 | 描述 |
|---|---|
| commune | 电子邮件和 SMS 基础设施 — 可自托管的后端 |
| commune-ai | TypeScript/Node.js SDK |
| commune-python | Python SDK |
| commune-mcp | 适用于 Claude Desktop、Cursor、Windsurf 的 MCP 服务 |
| commune-cli | 命令行界面 |
许可证
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。