使用说明
Claude Desktop、Cursor和Windsurf的电子邮件
给Claude(或任何MCP客户端)一个真正的电子邮件收件箱和短信。30秒内安装——不需要克隆。
您的AI代理可以:
- 阅读电子邮件 --列出线程,按主题搜索,获取完整的消息历史记录
- 发送邮件 --在现有线程中回复、撰写新消息、附加文件
- 管理收件箱 --创建程序化收件箱,设置自定义域,用标签和状态进行分类
- 跟踪交货 --获取交货统计数据、抑制列表、退货和投诉事件
- 发送和接收短信 --提供电话号码、发送消息、搜索短信历史记录
适用于Claude Desktop、Cursor、Windsurf或任何 主控程序 客户。
通过Smithery安装
《公社》在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进行连接,以供代理使用:
https://commune--commune-dev.run.tools
示例提示
配置后,您可以为AI助手提供电子邮件和短信的自然语言指令:
正在阅读电子邮件:
- “检查我的支持收件箱以获取新电子邮件”
- “显示账单收件箱中的所有未读帖子”
- “查找本周客户询问退款的电子邮件”
- “搜索上个月有关付款问题的所有帖子”
- “线程conv_abc123的完整对话历史记录是什么?”
- “显示所有尚未回复的帖子”
发送电子邮件:
- “回复约翰的电子邮件,说我们将在48小时内处理他的退款”
- “发送电子邮件至alice@example.com主题为“明天开会”,并告诉她会议已移至下午3点
- “回复支持线程中关于登录失败的最后一条消息,留在线程中”
- “对上周没有回复的所有线索进行跟进”
组织和分类:
- “将此线程标记为紧急,并将其分配给计费团队”
- “将所有超过30天没有回复的线程标记为已关闭”
- “显示过去7天的送达率统计数据”
- “列出支持收件箱中所有被抑制的电子邮件地址”
短讯服务:
- “为我的代理人提供电话号码”
- “发送短信至+14155551234,告知'您的订单已发货'”
- “显示我的所有短信对话”
- “在我的短信中搜索有关传递问题的任何信息”
域和收件箱管理:
- “在example.com下创建一个名为‘billion’的新收件箱”
- “我需要添加哪些DNS记录来验证example.com?”
- “显示我所有已验证的域”
设置
1.获取API密钥
从您的 公社仪表板。它始于 comm_.
2.添加到您的MCP客户端
选择您的客户端并添加Commune服务器。不需要本地文件-- uvx 自动提取包裹。
克劳德桌面版
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"commune": {
"command": "uvx",
"args": ["commune-mcp"],
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
}
光标
打开 设置→ MCP → 添加服务器:
{
"commune": {
"command": "uvx",
"args": ["commune-mcp"],
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
帆板运动
打开 设置→ MCP,格式与游标相同。
替代方案:pip安装
如果你愿意 pip 超过 uvx:
pip install commune-mcp
然后使用 commune-mcp 作为命令:
{
"commune": {
"command": "commune-mcp",
"env": {
"COMMUNE_API_KEY": "comm_your_key_here"
}
}
}
运作原理
配置后,您的AI代理可以在自然对话中使用Commune工具:
你: 查看我的支持收件箱以获取新电子邮件
代理人: (电话
list_domains→list_inboxes→list_threads) 您在中有3个新线程support@example.com:
- “订单未收到”--4条消息,最后一个活动发生在2小时前
- “账单问题”--今天收到1条消息
- “功能请求”--2条消息,昨天的最后一个活动
你: 订单问题是关于什么的?
代理人: (电话
get_thread_messages) 客户john@gmail.com说他们的订单#4521 5天前发货,但还没有到。他们已经跟进了两次,要求提供追踪信息。
你: 回复我们正在检查发货情况,并将在24小时内更新
代理人: (电话
send_email随着thread_id) 已完成--回复已发送至john@gmail.com在现有线程中。
代理根据您的请求决定调用哪些工具。您不需要指定工具名称。
电子邮件如何在Commune MCP中流动
入站(您收到电子邮件):
User sends email
|
v
Commune receives at your inbox (support@yourdomain.com)
|
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 |
是 | 域ID来自 list_domains |
输出:
[
{ "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 |
收件箱工具
收件箱是域下的邮箱。 support 在...之下 example.com → support@example.com.
list_inboxes
列出收件箱。没有 domain_id,列出所有域中的所有收件箱。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
domain_id |
str |
否 | 按域筛选(如果省略,则列出所有) |
输出:
[
{
"id": "i_xyz789",
"localPart": "support",
"address": "support@example.com",
"webhook": { "endpoint": "https://..." }
}
]
create_inbox
创建新收件箱。域名是 自动解决 如果没有提供,则不需要DNS设置。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
local_part |
str |
是 | 之前的部分 @ (例如。 "support", "billing") |
domain_id |
str |
无 | 要创建的域。如果省略,则自动解析。 |
name |
str |
否 | 收件箱的代理名称 |
display_name |
str |
否 | 电子邮件客户端中显示发件人显示名称 |
webhook_endpoint |
str |
没有 | 电子邮件通知的URL |
delete_inbox
永久删除收件箱。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
domain_id |
str |
是 | 域ID |
inbox_id |
str |
是 | 收件箱ID |
set_extraction_schema
使用JSON模式为收件箱配置结构化提取。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
domain_id |
str |
是 | 域ID |
inbox_id |
str |
是 | 收件箱ID |
name |
str |
是 | 架构名称 |
schema |
str |
是 | 模式对象的JSON字符串 |
description |
str |
否 | 人类可读的描述 |
enabled |
bool |
否 | 启用提取(默认为true) |
remove_extraction_schema
从收件箱中删除结构化提取。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
domain_id |
str |
是 | 域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 |
是 | 来自的线程ID list_threads |
limit |
int |
否 | 1–1000,默认值50 |
order |
str |
没有 | "asc" (按时间顺序)或 "desc" |
输出:
[
{
"message_id": "msg_001",
"direction": "inbound",
"participants": [
{ "role": "sender", "identity": "john@gmail.com" },
{ "role": "to", "identity": "support@example.com" }
],
"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 |
分类工具
管理线程状态、标签和分配——代理本机工作流原语。
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
为代理或用户分配线程。将空传递给未分配。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
thread_id |
str |
是 | 线程ID |
assigned_to |
str |
否 | 代理/用户标识符(空表示取消分配) |
交付工具
get_deliverability_stats
获取交付指标:发送、交付、退回、投诉、失败计数和比率。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
inbox_id |
str |
其中之一 | 按收件箱筛选 |
domain_id |
str |
必需 | 按域筛选 |
period |
str |
没有 | "24h", "7d", "30d" (默认值: "7d") |
get_suppressions
列出被屏蔽的电子邮件地址(跳出、投诉、取消订阅)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
inbox_id |
str |
否 | 按收件箱筛选 |
domain_id |
str |
否 | 按域筛选 |
limit |
int |
否 | 最大结果(默认值:50) |
get_delivery_events
获取用于跟踪单个电子邮件的传递事件日志。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
message_id |
str |
否 | 筛选特定邮件 |
inbox_id |
str |
否 | 按收件箱筛选 |
domain_id |
str |
否 | 按域筛选 |
event_type |
str |
没有 | "sent", "delivered", "bounced", "complained", "failed" |
limit |
int |
否 | 最大结果(默认值:50) |
消息工具
send_email
发送一封电子邮件。可以发送新邮件或在现有帖子中回复。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
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.
在帖子中回复,通过 thread_id 从 list_threads 或 get_thread_messages。电子邮件将被插入收件人的邮箱。
随机工具
upload_attachment
上传文件。返回一个 attachment_id 与一起使用 send_email.
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
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。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
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
}
电话号码工具
管理短信的预设电话号码。
list_phone_numbers
列出您帐户中所有已配置的电话号码。
参数: 无
get_phone_number
获取单个已配置电话号码的详细信息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 来自的电话号码ID list_phone_numbers |
list_available_phone_numbers
购买前浏览可用的电话号码。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
str |
没有 | "TollFree" (默认)或 "Local" |
country |
str |
否 | 两个字母的国家代码(默认值: "US") |
limit |
int |
否 | 最大结果(默认值:10) |
provision_phone_number
购买短信电话号码。从您的余额中扣除积分。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number |
str |
否 | 要购买的特定E.164号码(如果省略,则自动选择) |
type |
str |
没有 | "tollfree" (默认)或 "local" |
friendly_name |
str |
否 | 人类可读标签 |
update_phone_number
更新电话号码的友好名称或自动回复消息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 电话号码ID |
friendly_name |
str |
否 | 人类可读标签 |
auto_reply |
str |
否 | 所有入站短信的自动回复文本(禁用空字符串) |
release_phone_number
将已配置的电话号码释放回池中。不退款。保留消息历史记录。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 要发布的电话号码ID |
set_phone_number_webhook
为接收短信事件通知的电话号码配置webhook。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 电话号码ID |
endpoint |
str |
是 | 用于接收webhook有效负载的HTTPS URL |
secret |
str |
否 | 用于有效载荷验证的Webhook签名密钥 |
events |
list |
否 | 事件类型(默认值: ["sms.received", "sms.sent"]) |
set_phone_number_allow_list
设置电话号码的允许列表——只有这些号码可以向其发送短信。替换现有列表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 电话号码ID |
numbers |
list |
是 | E.164允许使用的电话号码(清除空列表) |
set_phone_number_block_list
设置电话号码的阻止列表——这些号码将被拒绝。替换现有列表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
是 | 电话号码ID |
numbers |
list |
是 | E.164要阻止的电话号码(要清除空列表) |
短信工具
send_sms
发送短信。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
to |
str |
是 | E.164格式的收件人(例如。 "+15551234567") |
body |
str |
是 | 短信文本 |
phone_number_id |
str |
否 | 从特定电话号码发送(如果省略,则自动分配) |
list_sms_conversations
列出短信对话线程。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
否 | 按电话号码筛选(如果省略,则列出所有号码) |
limit |
int |
否 | 1-100,默认值20 |
get_sms_thread
获取具有特定号码的短信线程中的所有消息。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
remote_number |
str |
是 | E.164格式的外部电话号码 |
phone_number_id |
str |
是 | 您的公社电话号码ID |
search_sms
跨短信的语义搜索。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
str |
是 | 搜索查询 |
phone_number_id |
str |
否 | 适用于特定电话号码 |
limit |
int |
否 | 1-100,默认值20 |
list_sms_suppressions
列出被禁止接收短信的电话号码(通过STOP关键字选择退出)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number_id |
str |
否 | 按电话号码筛选(如果省略,则列出所有号码) |
remove_sms_suppression
从短信抑制列表中删除电话号码(重新启用短信传递)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
phone_number |
str |
是 | 要从抑制中删除的E.164电话号码 |
信用工具
get_credit_balance
获取您公社账户的当前信用余额。
参数: 无
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 并添加公社MCP服务器块(请参阅上面的设置)。重新启动克劳德桌面。Commune工具将自动出现在Claude的工具列表中。
commune mcp和Python/TypeScript SDK之间有什么区别? commune mcp是用于mcp客户端(如Claude Desktop或Cursor)的交互式使用——你给出自然语言指令,人工智能调用这些工具。Python/TypeScript SDK用于在代码中以编程方式构建自治代理。两者都连接到同一个Commune后端。
它是否适用于Cursor的代理模式? 对。通过设置将commune mcp添加到游标→ MCP → 使用设置部分中显示的JSON块添加服务器。配置后,Cursor的代理模式可以在任何聊天或Composer会话期间使用所有Commune工具——读取线程、发送电子邮件和管理收件箱。
如何通过MCP服务器创建新收件箱?
只需问:“在example.com下创建一个名为support的新收件箱。”客服将致电 create_inbox 随着 local_part: "support" 以及您的域ID。如果您没有指定域,Commune会自动分配一个域,这样您就可以创建一个只有本地部分而没有DNS配置的收件箱。
克劳德真的能通过这个发送真正的电子邮件吗?
对。当代理人来电时 send_email,Commune通过DKIM签名的SMTP将真实的电子邮件发送到收件人的收件箱。这封电子邮件看起来和普通电子邮件完全一样——它在Gmail和Outlook中正确地运行,支持HTML和附件,并生成可以跟踪的传递事件。
当我不在聊天会话中时,收到的电子邮件会发生什么?
Commune持久存储所有入站电子邮件和线程。当你打开一个新的聊天室并要求查看收件箱时,客服会打电话给你 list_threads 并检索自上次会话以来到达的所有内容。您可以在每个收件箱上配置一个webhook,以便您的应用程序实时收到通知(8次重试,HMAC签名)。
我如何在帖子中回复,而不是开始新的电子邮件?
通过 thread_id 到 send_email。最简单的方法是在要求代理向您展示一个线程后说“回复这个线程说…”——它将保留 thread_id 在上下文中自动传递。回复显示在收件人的电子邮件客户端中。
我的电子邮件内容是私人的吗? 您的电子邮件内容通过TLS传输,并加密存储在Commune的基础设施上。API密钥对每个请求进行身份验证,并且webhook是HMAC-签名的,因此您的应用程序可以验证有效负载没有被篡改。你的内容永远不会用于训练人工智能模型。
我可以将其用于我自己的电子邮件域吗?
对。使用 create_domain 注册您的域名,然后 get_domain_records 要查看所需的MX、TXT和CNAME记录,请在您的注册商处添加它们,然后致电 verify_domain。一旦验证,该域下的所有收件箱都将使用您的域作为发件人地址(例如。 support@yourdomain.com).
API密钥是什么样子的?
公共API密钥以前缀开头 comm_ 后面跟着一个随机字符串——例如, comm_sk_live_abc123xyz.从您的 公社仪表板。保密:将其视为密码,永远不要将其提交给源代码管理。
如何在收件箱中搜索特定主题?
使用 search_threads 该工具自然地问:“在我的支持收件箱中搜索有关退款的电子邮件。”客服打电话给 search_threads 与您的查询。Commune使用语义搜索,因此即使确切的单词不匹配,它也会找到相关的线索——例如,“退款”会出现关于退款的线索。
多个人可以使用同一个Commune MCP服务器吗?
对。Commune使用组织-多个团队成员可以共享同一个帐户和API密钥,或者每个成员可以在同一组织中拥有自己的API密钥。所有密钥都访问相同的域和收件箱。为了在项目之间进行隔离,请创建单独的收件箱(例如。 billing@, support@)并按以下方式过滤 inbox_id 在工具调用中。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
COMMUNE_API_KEY |
是 | 您的API密钥(以 comm_) |
COMMUNE_BASE_URL |
否 | 覆盖API URL(默认值:Commune cloud) |
生态系统
| 包装 | 描述 |
|---|---|
| 公社 | 电子邮件和短信基础设施——可自托管后端 |
| 公社ai | Types/Node.js SDK |
| 公社python | Python SDK |
| 公社mcp | 适用于Claude Desktop、Cursor、Windsurf的MCP服务器 |
| 公社气候 | 命令行界面 |
许可证
阿帕奇-2.0