进阶 mastra.ai 2026-10-12 10:15:56 · 29 阅读
第16章 连接(Connections)
# 第16章 Connections
Connections 让 Mastra 可以对接远程 agent、编码 agent、各类 provider 的 SDK 运行时,以及外部工具和资源。根据 agent 运行时归哪个系统所有、需要交换什么内容,来选择合适的连接类型。
Model Context Protocol (MCP):把 agent 接入外部工具和资源,或将 Mastra 的 agent、工具、workflow、prompt 和资源暴露给兼容 MCP 的系统。
Agent-to-Agent (A2A):跨服务、框架、厂商和语言的边界,暴露或调用远程 agent。
Agent Client Protocol (ACP):把兼容的编码 agent 进程(如 Claude Code、Cline、OpenCode)作为 Mastra 的工具或子 agent 运行。
SDK agents:注册基于 Claude、Cursor 或 OpenAI SDK 的 agent,同时由 provider SDK 继续掌控运行时、工具、权限和 agent loop。
## 何时使用 connections
需要在以下场景中使用 connections:
- 把工作委派给运行在其他服务或运行时中的 agent。
- 让编码 agent 操作项目工作区。
- 接入 provider 原生的 agent,但不替换其 SDK 运行时和 agent loop。
- 让 agent 连接外部工具和资源,或把 Mastra 的能力发布给其他系统。
## 快速上手
先确定你要跨越的边界:远程 agent 端点用 A2A,编码 agent 进程用 ACP,provider 自有运行时用 SDK agents,工具和资源用 MCP。
A2AACPSDK agentsMCPimport { A2AAgent } from '@mastra/core/a2a'
const agent = new A2AAgent({
url: 'https://agent.example.com/.well-known/agent-card.json',
})
const result = await agent.generate('Summarize the latest report')
console.log(result.text)
import { AcpAgent } from '@mastra/acp'
const agent = new AcpAgent({
id: 'coding-agent',
description: 'Inspects and edits code',
command: 'claude',
args: ['--acp'],
persistSession: false,
})
const result = await agent.generate('Review this project')
console.log(result.text)
import { OpenAISDKAgent } from '@mastra/openai'
const agent = new OpenAISDKAgent({
id: 'openai-agent',
description: 'Answers project questions',
sdkOptions: {
name: 'Project assistant',
model: 'gpt-5',
},
})
const result = await agent.generate('Explain agent loops in one sentence')
console.log(result.text)
import { MCPClient } from '@mastra/mcp'
const client = new MCPClient({
id: 'wikipedia-client',
servers: {
wikipedia: {
command: 'npx',
args: ['-y', 'wikipedia-mcp'],
},
},
})
try {
const tools = await client.listTools()
console.log(Object.keys(tools))
} finally {
await client.disconnect()
}
const agent = new A2AAgent({
url: 'https://agent.example.com/.well-known/agent-card.json',
})
const result = await agent.generate('Summarize the latest report')
console.log(result.text)
import { AcpAgent } from '@mastra/acp'
const agent = new AcpAgent({
id: 'coding-agent',
description: 'Inspects and edits code',
command: 'claude',
args: ['--acp'],
persistSession: false,
})
const result = await agent.generate('Review this project')
console.log(result.text)
import { OpenAISDKAgent } from '@mastra/openai'
const agent = new OpenAISDKAgent({
id: 'openai-agent',
description: 'Answers project questions',
sdkOptions: {
name: 'Project assistant',
model: 'gpt-5',
},
})
const result = await agent.generate('Explain agent loops in one sentence')
console.log(result.text)
import { MCPClient } from '@mastra/mcp'
const client = new MCPClient({
id: 'wikipedia-client',
servers: {
wikipedia: {
command: 'npx',
args: ['-y', 'wikipedia-mcp'],
},
},
})
try {
const tools = await client.listTools()
console.log(Object.keys(tools))
} finally {
await client.disconnect()
}