Connections の概要
Connections を使うと、Mastra をリモート Agent、コーディング Agent、Provider のソフトウェア開発キット(SDK)のランタイム、外部の Tool やリソースと連携できます。Agent のランタイムを管理するシステムと、やり取りする内容に応じて接続方式を選びます。
- Agent-to-Agent(A2A): サービス、フレームワーク、ベンダー、言語の境界を越えてリモート Agent を公開または利用します。
- Agent Client Protocol(ACP): 互換性のあるコーディング Agent のプロセスを、Mastra の Tool または Subagent として実行します。
- SDK Agent: Provider SDK がランタイム、Tool、権限、Agent ループを引き続き制御したまま、Claude、Cursor、OpenAI の SDK ベースの Agent を登録します。
- Model Context Protocol(MCP): Agent を外部の Tool やリソースに接続するか、Mastra の Agent、Tool、Workflow、プロンプト、リソースを MCP 互換システムに公開します。
Connections を使用する場面Connections を使用する場面への直接リンク
次の場合に Connections を使用します。
- 別のサービスまたはランタイムで動作する Agent に作業を委任する。
- プロジェクトの Workspace に対してコーディング Agent を実行する。
- Provider 固有の SDK ランタイムや Agent ループを置き換えずに、その Provider の Agent を追加する。
- Agent を外部の Tool やリソースに接続するか、Mastra の機能を他のシステムに公開する。
はじめるはじめるへの直接リンク
越える必要がある境界に応じて選択します。リモート Agent のエンドポイントには A2A、コーディング Agent のプロセスには ACP、Provider が管理するランタイムには SDK Agent、Tool とリソースには MCP を使用します。
- A2A
- ACP
- SDK Agent
- MCP
import { 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()
}