MCP 服务器
Bird MCP 服务器将 Bird API 以 Model Context Protocol 工具的形式暴露出来。支持的客户端包括 Claude Code、Cursor、VS Code、Codex、Claude Desktop、ChatGPT 和 Muse。它们可以通过 Bird 运行的所有渠道发送消息、配置这些渠道,以及查看你的工作区,无需复制 cURL 命令。你可以通过两种方式运行,大多数人选择第一种:
- 托管模式 (mcp.bird.com):只需一个 URL 和浏览器登录。无需安装任何东西,不需要 CLI,不需要 API 密钥。这是推荐方式。
- 本地 stdio 模式 (bird mcp):工具在你的机器上通过 bird CLI 运行,适用于 shell 代理或自行运行的场景。
托管服务器不包含以下仅限 stdio 的工具:
- auth_signup、auth_verify_email 和 auth_create_org:这些工具用于创建你的第一个凭据,在你能够向托管服务器进行身份验证之前使用。
- compliance_attachments_upload:该工具读取本地文件路径。在托管服务器上,该路径会指向服务器的文件系统,可能上传错误的文件。
托管模式:连接到 mcp.bird.com
选择端点
大多数连接使用 https://mcp.bird.com。这是推荐端点:大多数 MCP 客户端已能从完整目录中自行搜索和选择工具。部分客户端不支持内部搜索工具,或对服务器可暴露的工具数量有硬性限制。/dynamic 专为这些客户端设计。
两个托管端点都使用 Streamable HTTP 和相同的 Bird OAuth 登录:
| 端点 | 客户端可见的工具 | 何时使用 |
|---|---|---|
| https://mcp.bird.com | 完整的托管工具目录 | 推荐大多数客户端使用,它们可在内部搜索和选择工具。同时支持 MCP Apps 小组件。 |
| https://mcp.bird.com/dynamic | 仅 search 和 execute | 仅适用于不支持内部工具搜索或对服务器可暴露工具数量有硬性限制的客户端。 |
动态端点通过 execute 让你访问相同的托管操作。标准端点和本地 stdio 服务器保留各自的独立工具,不会列出 search 或 execute。
你无需安装二进制文件或创建令牌。连接只需两步,两步都是必需的:
- 添加服务器:将你选择的端点 URL 提供给客户端。
- 身份验证:通过浏览器登录,让客户端持有一个以你身份操作的令牌。
两个端点都要求身份验证。仅有 URL 的客户端在你登录之前会收到 401。部分客户端会在首次连接服务器时自动发起登录;另一些会将服务器标记为 "needs login" 并等待你点击。具体行为取决于你的客户端。
使用动态工具发现
如果客户端因工具过多而拒绝服务器,请连接到 https://mcp.bird.com/dynamic 并完成 OAuth 登录。客户端会列出两个工具:
- search 按名称或描述关键词查找工具。每条匹配结果包含名称、描述、输入模式,以及标注该工具是读取还是修改数据的注解。
- execute 使用指定参数调用一个已选工具。它可以读取数据、发送消息、修改记录或删除记录,具体取决于所选工具。
例如,你的代理可以通过以下工具调用找到工作区工具:
代码示例
{
"name": "search",
"arguments": { "query": "workspace_get", "limit": 3 }
}读取返回的输入模式后,代理通过 execute 调用该工具:
代码示例
{
"name": "execute",
"arguments": { "tool": "workspace_get", "arguments": {} }
}结果包含你当前的工作区。你还可以使用任务关键词进行搜索,例如 send email。搜索默认返回五条匹配结果,limit 接受 1 到 10 的值,查询最多 500 个字符。如果结果包含 has_more: true,请缩小查询范围以找到更相关的匹配。
搜索结果不会将工具添加到客户端的目录中。结果或恢复指引中提到的工具名称也需通过 execute 调用。执行使用你现有的权限;如果操作需要更多权限,客户端可能会请求你授权。找到工具并不意味着获得了访问权限。
动态执行会为原本显示小组件的工具返回数据。如需交互式 MCP Apps 小组件,请使用标准端点。客户端只看到一个执行工具,因此逐工具审批设置整体应用于 execute;在批准调用前请检查所选操作。该端点执行工具调用,不运行 JavaScript 或其他提供的代码。
连接客户端
以下示例使用标准端点。如需动态发现,将 https://mcp.bird.com/dynamic 替换为服务器 URL,并按相同的登录步骤操作。
Claude Code
添加服务器:
代码示例
claude mcp add --transport http bird https://mcp.bird.comclaude mcp list 现在将 bird 报告为 ! Needs authentication。Claude Code 不会自动打开浏览器,因此需要在会话内登录:
- 运行 /mcp。
- 选择 bird 并按 Enter。
- 选择 Authenticate。浏览器打开 Bird 的授权确认页面,在那里批准。
服务器随即显示为已连接,工具可以使用。无界面运行(claude -p)没有 /mcp 面板,因此请先在 shell 中通过 claude mcp login bird 进行身份验证。之后如需重新登录,/mcp 提供 Re-authenticate;Clear authentication 会删除已存储的令牌。
安装 bird-ai 插件 会自动为你声明此服务器,替代 claude mcp add 命令。仍需进行身份验证,因为插件可以携带服务器但无法签发授权。安装后选择 /mcp > bird > Authenticate。
Cursor
在 ~/.cursor/mcp.json 中:
代码示例
{
"mcpServers": {
"bird": {
"url": "https://mcp.bird.com"
}
}
}然后打开 Cursor Settings > Tools & Integrations。在 MCP Tools 下,bird 显示 Needs login:点击它,在浏览器中批准 Bird 的授权确认页面,然后返回 Cursor。
OpenCode
Bird 的 OpenCode 插件会为你注册服务器,同时包含 Bird 的 agent skills:
代码示例
opencode plugin github:messagebird/bird-ai --globalOpenCode 会将每个 MCP 工具添加到模型的上下文中,因此插件连接的是动态端点。当 OpenCode 的实验性代码模式开启时(OPENCODE_EXPERIMENTAL_CODE_MODE=1 或 OPENCODE_EXPERIMENTAL=1),OpenCode 会将 MCP 工具放在自身的搜索之后,此时插件改为连接 https://mcp.bird.com 的完整工具目录。
如果不使用插件而手动添加服务器,请在 opencode.json 中添加以下内容,可以放在项目目录或 ~/.config/opencode/opencode.json 中:
代码示例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"bird": {
"type": "remote",
"url": "https://mcp.bird.com/dynamic"
}
},
"permission": {
"bird_execute": "ask"
}
}然后登录,浏览器会打开 Bird 的授权同意页面:
代码示例
opencode mcp auth bird重启 OpenCode 以加载插件。授权通过后,opencode mcp list 会将 bird 显示为已连接。与上面的 permission 条目一样,插件会让 OpenCode 在每次 execute 调用前征求确认,因为运行的工具可能会更改你的工作区。
VS Code
在项目的 .vscode/mcp.json 中:
代码示例
{
"servers": {
"bird": {
"type": "http",
"url": "https://mcp.bird.com"
}
}
}VS Code 在首次启动服务器时会要求你信任它,然后自行运行 OAuth 流程:在弹出的浏览器窗口中批准 Bird 的授权同意页面。如果没有弹出窗口,请通过 MCP: List Servers 命令启动或重启 bird,然后进行授权。生成的授权记录位于 Accounts > Manage Trusted MCP Servers 下,你也可以在那里撤销 VS Code 的访问权限。
Codex
在 ~/.codex/config.toml 中:
代码示例
[mcp_servers.bird]
url = "https://mcp.bird.com"然后在终端中登录,浏览器会自动打开:
代码示例
codex mcp login birdClaude Desktop
打开 Settings > Connectors,点击 Add custom connector,粘贴 https://mcp.bird.com,然后点击 Add。接着在 Bird 连接器上点击 Connect 来执行登录并批准授权同意页面。在 Team 和 Enterprise 计划中,所有者为组织添加一次连接器,每位成员仍需点击 Connect 获取自己的授权。通过 + > Connectors 可在每个对话中开启连接器。
ChatGPT
自定义 MCP 连接器需要开发者模式:Settings > Apps > Advanced settings > Developer mode。然后前往 Settings > Connectors > Create,为连接器指定名称和描述,粘贴 https://mcp.bird.com,并选择 OAuth 作为身份验证方式。ChatGPT 会自行运行登录流程,并在你首次使用连接器时以弹窗形式打开 Bird 的授权同意页面。
Muse
Muse 将 Bird 添加为自定义连接器。在 Muse 聊天中,要求它设置一个:
代码示例
Set up a custom connector to the Bird MCP server at https://mcp.bird.com following https://bird.com/docs/ai/mcp-server.md so you can work with my Bird workspace.Muse 会回复一个用于此会话的连接链接。打开链接并在浏览器中批准 Bird 的授权同意页面。该链接仅对你有效,并随会话过期。如果链接失效,请让 Muse 生成一个新的。
Factory Droid
代码示例
droid mcp add bird https://mcp.bird.com --type http然后在 droid 中运行 /mcp,并从服务器管理器完成浏览器登录。
Agent Plugins
bird-ai plugin 在遵循 Agent Plugins 规范的 mcp.json 中声明了此服务器。实现该规范的宿主在插件安装时会读取该文件,因此无需手动编写服务器配置:安装插件并登录即可。
其他任何宿主
找到添加 remote、HTTP 或 custom MCP 服务器的设置项,通常位于 Connectors 或 Integrations 菜单下,然后填入 URL。字段位置因客户端而异;使用你选择的托管端点 URL。接下来找到该客户端的登录入口:服务器旁的 Connect、Authorize 或 Needs login 按钮、login 子命令,或客户端自动打开的浏览器窗口。如果客户端列出了 Bird 的工具但每次调用都失败,说明它有 URL 但仍需要授权。
登录时会发生什么
浏览器会打开 Bird 的授权同意页面。登录后,选择授予工作区还是组织权限,并选择要委派的具体权限。由于 MCP 客户端是自行注册的,客户端名称为自行声明,因此页面会标记为 not verified by Bird。在批准前请确认这是你实际启动的客户端。之后工具会出现在代理的列表中,令牌会自动静默刷新,因此每个客户端只需执行一次此步骤。
验证连接是否成功的最快方式是让代理调用 whoami:它会返回已登录的用户,收到真实响应即表示授权已生效。在动态端点上,通过 execute 调用它,使用 tool: "whoami" 和空的 arguments。
授权范围取客户端请求的权限、你批准的权限和你实际持有的权限三者的交集;org:owner 和 platform-admin 作用域永远不可委派。授权记录出现在你个人资料的已连接应用列表中,在那里撤销会立即断开客户端的连接。
握手流程
连接客户端不需要了解这些。它在你调试无法认证的客户端或自行编写客户端时才有用。
托管层使用 Streamable HTTP,且无需预置凭据:它不存储任何密钥,自身也不做校验。每个请求携带你自己的 OAuth bearer 令牌,由 Bird 的 API 逐请求验证。服务器无状态,区域流量自动路由,因此同一个 URL 在任何地方都可用。
登录流程使用标准 MCP。客户端的区别仅在于触发方式:首次工具调用或选择 Authenticate。流程开始后,认证步骤无需额外配置:
- 客户端发送未认证的请求,收到 401 响应,其中 WWW-Authenticate 请求头指向 Bird 的 RFC 9728 受保护资源元数据(/.well-known/oauth-protected-resource)。
- 客户端从中发现授权服务器,然后动态注册自身(RFC 7591)。动态注册免去了预共享客户端 ID 或手动配置的需要。
- 浏览器打开 Bird 的授权同意页面。
- 客户端用结果换取访问令牌(PKCE;自动刷新),Bird 工具随即可用。
本地运行:通过 stdio 使用 CLI
在 bird CLI 中运行本地 MCP 服务器,适用于支持 shell 的代理或需要访问本机文件的场景。安装 CLI,运行一次 bird auth login,然后将客户端指向 bird mcp 命令。
你不需要自己运行 bird mcp:客户端会启动它并通过 stdin/stdout 与之通信。每个客户端只需要两个信息:命令(bird)和参数(mcp)。此方式无需为每个客户端单独登录,因为 bird auth login 已持有授权。
Cursor
代码示例
{
"mcpServers": {
"bird": {
"command": "bird",
"args": ["mcp"]
}
}
}VS Code
代码示例
{
"servers": {
"bird": {
"command": "bird",
"args": ["mcp"]
}
}
}Claude Code
代码示例
claude mcp add bird -- bird mcp本地服务器如何认证
本地服务器以你的身份运行,复用 CLI 已存储的登录凭据。bird auth login 会打开浏览器 OAuth 流程,你在其中授予工作区权限的一个子集。签发的令牌受托管授权的权限上限约束。org:owner 和 platform-admin 作用域均不可用。bird mcp 从 CLI 凭据文件中读取并刷新已存储的登录信息,该文件权限为 0600。与托管层一样,客户端配置中没有 BIRD_API_KEY 或其他密钥。如果登录信息缺失,bird mcp 会拒绝启动并提示你运行 bird auth login。
你不会暴露监听端口:服务器在你的机器上、客户端的沙箱内运行,持续时间与客户端需要它的时间完全一致。API 主机会自动跟随你登录所在的区域;--base-url(或 BIRD_API_URL)可覆盖区域设置,用于针对非生产环境进行测试。
工具覆盖范围
工具集涵盖 Bird 运行的每个渠道,以及围绕它们的账户和配置任务。它是经过精选的,并非完整的 API 接口:每个工具都对应代理实际执行的任务,破坏性操作带有注解,以便宿主在执行前征求确认。
Email 拥有最多的工具,因为它有最多的配置项。其他渠道具有相同的发送和读取结构。
消息发送
- 发送和查看 email:email_send、email_send_batch、email_list 和 email_get,后者返回消息及其汇总投递状态。每个收件人的投递状态和事件日志是单独的工具调用。
- 发送和查看 SMS:sms_send、sms_send_batch、sms_get、sms_list 和 sms_list_events,与 email 结构一致。sms_templates_list 和 sms_templates_get 用于读取模板目录。
- 发送和查看 WhatsApp:whatsapp_send、whatsapp_get、whatsapp_list、whatsapp_list_events 和 whatsapp_media。模板在 whatsapp_templates_* 下提供完整的编辑功能,包括按版本和按语言的内容。
- 查看语音通话分支:voice_legs_get 和 voice_legs_list 读取通话分支,voice_stats_* 提供按国家和响应码分类的统计数据。voice_session_credentials_create 创建工作区凭据,供 SIP 或软电话客户端进行身份验证。
- 验证收件人:verify_verifications_create 发送一次性验证码,verify_verifications_check 验证收件人提交的内容,verify_verifications_next_channel 回退到另一个渠道。
- 创建语音通话(预览版):voice_calls_create 使用已启用且未归档序列的当前有效发布版本准备外呼请求。需要有人在浏览器中审核并执行请求;仅准备请求不会发起通话。有关权限和重试说明,请参阅创建语音通话。本地 bird mcp 服务器需要使用包含此工具的 CLI 版本。
为渠道做好发送准备
- 设置发送域名:email_domains_create 添加发送域名并返回需要发布的 DNS 记录;email_domains_verify 重新检查记录;另有 email_domains_list 和 email_domains_get。
- 认领和注册 SMS 发送者:sms_senders_create 认领发送者,sms_senders_requirements 报告所在国家对发送者的要求,sms_senders_registrations_create 进行注册。美国 A2P 流量通过 sms_10dlc_* 的品牌、活动和提交工具处理。
- 配置号码:numbers_available_list 搜索,numbers_orders_create 购买,numbers_release 退还。whatsapp_numbers_precheck 在下单前报告 WhatsApp 是否接受该号码。
- 检查账户是否可以发送:trust_* 工具报告购买号码或注册发送者前需要满足的组织级要求。
Email 可送达性
- 编写 email 模板:email_templates_create、email_templates_list、email_templates_get、email_templates_update、email_templates_duplicate 和 email_templates_preview(使用示例值渲染草稿而不实际发送)。版本位于 email_templates_versions_* 下,其中 email_templates_versions_submit 冻结草稿并将其设为发送时使用的版本,email_templates_versions_languages_* 编辑草稿的按语言内容。代理编写的任何内容在提交前都不会到达收件人。
- 管理屏蔽列表:email_suppressions_list、email_suppressions_check(此地址是否可以安全发送?)、email_suppressions_add 和 email_suppressions_remove(标记为破坏性操作,因为无故移除屏蔽会损害发送者信誉)。
- 管理专用 IP 和 IP 池:email_dedicated_ips_create、email_dedicated_ips_list、email_dedicated_ips_get、email_dedicated_ips_assign(将 IP 移入池中)和 email_dedicated_ips_delete;另有 email_ip_pools_create、email_ip_pools_list、email_ip_pools_get、email_ip_pools_update 和 email_ip_pools_delete,用于管理你路由发送的 IP 池。
受众和配置
- 管理联系人和受众:contacts_* 和 contact_properties_* 管理发送对象,audiences_* 管理发送列表,preferences_* 管理同意授权和退订。
- 配置 Realtime:realtime_apps_* 和 realtime_apps_keys_* 创建 Realtime 客户端连接所需的应用和密钥。
- 查询某人:lookup_phone_number 和 lookup_email 报告 Bird 在发送前已知的地址信息。
- 查看配置:webhooks_list、workspace_get 和 whoami(已登录用户的 id、email、name)。
你的客户端会显示实时工具列表,包含名称、描述和输入模式。以该列表为权威清单。一个适合端到端尝试的入门任务:
Call whoami to find my email, then send me a test email from onboarding@messagebird.dev and tell me when it's delivered.
MCP 还是 CLI?
相同的功能面,相同的认证模型,不同的调用方。对于支持 shell 的代理(Claude Code、Cursor 终端、CI),CLI 更精简:JSON 输出、语义退出码,每次操作消耗的 token 少得多。MCP 面向调用工具而非运行 shell 的宿主,而托管端点还能覆盖完全无法执行二进制文件的客户端(Claude Desktop、ChatGPT、移动端)。你不必提前选择:托管 URL 无需安装,而 CLI 安装后本地 bird mcp 就已就绪。
后续步骤
- AI onboarding:本页的快速入门版本,外加机器可读的文档语料库。
- Agent skills:bird-ai 市场插件,skills 加此 MCP 服务器,一步安装。
- CLI for agents:从支持 shell 的代理驱动 Bird,无需 MCP:JSON 输出、语义退出码、OAuth 登录。
- Authentication:API 密钥、区域以及请求的授权方式。