SDK Agent
SDK Agent를 사용하면 Mastra 내에서 다른 Agent SDK 프레임워크를 사용할 수 있습니다. 공급자 SDK가 자체 런타임, Tool, 권한 및 Agent 루프를 유지하는 동안 이를 사용하여 Mastra 프로젝트에 SDK 지원 Agent를 등록합니다.
SDK Agent를 사용하는 경우SDK Agent를 사용하는 경우에 대한 직접 링크
- 공급업체 SDK가 이미 Agent 루프, Tool, 권한 또는 로컬 런타임을 소유하고 있습니다.
- 해당 SDK 기반 Agent를 Mastra 프로젝트에 등록하려고 합니다.
- Mastra 호환
generate()및stream()출력이 필요합니다. - SDK 실행의 사용량, 비용 및 Tool 활동을 Mastra Observability에서 확인하려고 합니다.
지원되는 SDK Agent지원되는 SDK Agent에 대한 직접 링크
- Claude Agent SDK:
@mastra/claude를 사용해 Claude SDK Agent를 등록하고 Mastra의generate()및stream()으로 호출합니다. - Cursor Agent SDK:
@mastra/cursor를 사용해 Cursor SDK Agent를 등록하고 Mastra의generate()및stream()으로 호출합니다. - OpenAI Agent SDK:
@mastra/openai를 사용해 OpenAI SDK Agent를 등록하고 Mastra의generate()및stream()으로 호출합니다.
클로드 Agent SDK클로드 Agent SDK에 대한 직접 링크
Claude Code 런타임 구성, 권한, Tool 및 Agent 루프 동작에는 @mastra/claude를 사용하세요.
클로드 패키지 설치클로드 패키지 설치에 대한 직접 링크
Mastra 패키지와 Claude Agent SDK 피어 종속성을 설치합니다.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/claude @anthropic-ai/claude-agent-sdk
pnpm add @mastra/claude @anthropic-ai/claude-agent-sdk
yarn add @mastra/claude @anthropic-ai/claude-agent-sdk
bun add @mastra/claude @anthropic-ai/claude-agent-sdk
Claude SDK 자격 증명을 설정합니다.
export ANTHROPIC_API_KEY="..."
Claude SDK Agent 만들기Claude SDK Agent 만들기에 대한 직접 링크
Claude Agent SDK를 다음을 통해 구성하세요.sdkOptions.
import { ClaudeSDKAgent } from '@mastra/claude'
export const claudeSDKAgent = new ClaudeSDKAgent({
id: 'claude-sdk-agent',
name: 'Claude SDK Agent',
description: 'Use Claude Agent SDK through Mastra.',
sdkOptions: {
model: 'claude-sonnet-4-6',
cwd: process.cwd(),
},
})
Claude SDK Tool 추가Claude SDK Tool 추가에 대한 직접 링크
Claude Agent SDK Tool은 Claude SDK MCP(Model Context Protocol) 서버를 통해 제공됩니다. Claude SDK로 서버를 생성한 후 해당 서버를 전달하세요.sdkOptions.mcpServers.
import { createSdkMcpServer } from '@anthropic-ai/claude-agent-sdk'
import { ClaudeSDKAgent } from '@mastra/claude'
import { getTemperature } from '../tools/get-temperature'
const weatherServer = createSdkMcpServer({
name: 'weather',
version: '1.0.0',
tools: [getTemperature],
})
export const claudeSDKAgent = new ClaudeSDKAgent({
id: 'claude-sdk-agent',
name: 'Claude SDK Agent',
description: 'Use Claude Agent SDK through Mastra.',
sdkOptions: {
model: 'claude-sonnet-4-6',
cwd: process.cwd(),
mcpServers: {
weather: weatherServer,
},
allowedTools: ['mcp__weather__get_temperature'],
},
})
allowedTools 값은 Claude Agent SDK의 MCP Tool 명명 규칙인 mcp__<server name>__<tool name>을 사용합니다.
커서 Agent SDK커서 Agent SDK에 대한 직접 링크
Cursor 관련 설정은 Cursor SDK 옵션에 유지하면서 Mastra에 Cursor SDK Agent를 등록하려면 @mastra/cursor를 사용하세요.
커서 패키지 설치커서 패키지 설치에 대한 직접 링크
Mastra 패키지와 Cursor SDK 피어 종속성을 설치합니다.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/cursor @cursor/sdk
pnpm add @mastra/cursor @cursor/sdk
yarn add @mastra/cursor @cursor/sdk
bun add @mastra/cursor @cursor/sdk
커서 SDK 자격 증명을 설정합니다.
export CURSOR_API_KEY="..."
커서 SDK Agent 만들기커서 SDK Agent 만들기에 대한 직접 링크
다음을 통해 커서 Agent SDK를 구성합니다.sdkOptions.
import { CursorSDKAgent } from '@mastra/cursor'
export const cursorSDKAgent = new CursorSDKAgent({
id: 'cursor-sdk-agent',
name: 'Cursor SDK Agent',
description: 'Use Cursor Agent SDK through Mastra.',
sdkOptions: {
apiKey: process.env.CURSOR_API_KEY,
model: {
id: 'gpt-5',
},
local: {
cwd: process.cwd(),
},
},
})
커서 로컬 Agent에는 명시적 Model이 필요합니다. 설정하세요sdkOptions.model.
기존 Cursor SDK Agent 사용기존 Cursor SDK Agent 사용에 대한 직접 링크
앱이 이미 Cursor SDK Agent를 생성한 경우 해당 Agent를CursorSDKAgent instead:
import { Agent as CursorAgent } from '@cursor/sdk'
import { CursorSDKAgent } from '@mastra/cursor'
const cursorAgent = CursorAgent.create({
apiKey: process.env.CURSOR_API_KEY,
model: {
id: 'gpt-5',
},
local: {
cwd: process.cwd(),
},
})
export const cursorSDKAgent = new CursorSDKAgent({
id: 'cursor-sdk-agent',
name: 'Cursor SDK Agent',
description: 'Use Cursor Agent SDK through Mastra.',
agent: cursorAgent,
})
커서 SDK Tool 추가커서 SDK Tool 추가에 대한 직접 링크
커서 Agent SDK Tool은 커서 SDK 옵션으로 구성됩니다. MCP(Model Context Protocol) 서버를 다음을 통해 전달합니다.sdkOptions.mcpServers:
import { CursorSDKAgent } from '@mastra/cursor'
import { mcpServers } from '../mcp/cursor'
export const cursorSDKAgent = new CursorSDKAgent({
id: 'cursor-sdk-agent',
name: 'Cursor SDK Agent',
description: 'Use Cursor Agent SDK through Mastra.',
sdkOptions: {
apiKey: process.env.CURSOR_API_KEY,
model: {
id: 'gpt-5',
},
local: {
cwd: process.cwd(),
},
mcpServers,
},
})
OpenAI Agent SDKOpenAI Agent SDK에 대한 직접 링크
OpenAI 관련 Agent 설정을 OpenAI SDK 옵션에 유지하면서 Mastra에 OpenAI Agents SDK Agent를 등록하려면 @mastra/openai를 사용하세요.
OpenAI 패키지 설치OpenAI 패키지 설치에 대한 직접 링크
Mastra 패키지와 OpenAI Agents SDK 피어 종속성을 설치합니다.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/openai @openai/agents zod
pnpm add @mastra/openai @openai/agents zod
yarn add @mastra/openai @openai/agents zod
bun add @mastra/openai @openai/agents zod
OpenAI SDK 자격 증명을 설정합니다.
export OPENAI_API_KEY="..."
OpenAI SDK Agent 만들기OpenAI SDK Agent 만들기에 대한 직접 링크
sdkOptions를 통해 OpenAI Agent SDK를 구성하세요. OpenAISDKAgent는 처음 사용할 때 OpenAI SDK Agent를 생성합니다.
import { OpenAISDKAgent } from '@mastra/openai'
export const openaiSDKAgent = new OpenAISDKAgent({
id: 'openai-sdk-agent',
name: 'OpenAI SDK Agent',
description: 'Use OpenAI Agents SDK through Mastra.',
sdkOptions: {
name: 'Repository assistant',
instructions: 'Answer clearly and cite the relevant files.',
model: 'gpt-5',
},
})
기존 OpenAI SDK Agent 사용기존 OpenAI SDK Agent 사용에 대한 직접 링크
앱이 이미 OpenAI SDK Agent를 생성한 경우 해당 Agent를OpenAISDKAgent instead:
import { Agent as OpenAIAgent } from '@openai/agents'
import { OpenAISDKAgent } from '@mastra/openai'
const sdkAgent = new OpenAIAgent({
name: 'Repository assistant',
instructions: 'Answer clearly and cite the relevant files.',
model: 'gpt-5',
})
export const openaiSDKAgent = new OpenAISDKAgent({
id: 'openai-sdk-agent',
name: 'OpenAI SDK Agent',
description: 'Use OpenAI Agents SDK through Mastra.',
agent: sdkAgent,
})
OpenAI SDK Tool 추가OpenAI SDK Tool 추가에 대한 직접 링크
OpenAI Agents SDK Tool은 OpenAI SDK 옵션으로 구성됩니다. OpenAI SDK로 Tool을 만든 후 전달하세요.sdkOptions.tools.
import { tool } from '@openai/agents'
import { OpenAISDKAgent } from '@mastra/openai'
import { z } from 'zod'
const getTemperature = tool({
name: 'get_temperature',
description: 'Get the current temperature for a city.',
parameters: z.object({
city: z.string(),
}),
execute: async ({ city }) => {
return `${city}: 27 C`
},
})
export const openaiSDKAgent = new OpenAISDKAgent({
id: 'openai-sdk-agent',
name: 'OpenAI SDK Agent',
description: 'Use OpenAI Agents SDK through Mastra.',
sdkOptions: {
name: 'Weather assistant',
model: 'gpt-5',
tools: [getTemperature],
},
})
SDK Agent 등록SDK Agent 등록에 대한 직접 링크
다른 Agent와 마찬가지로 Mastra 인스턴스에 SDK Agent를 등록합니다.
import { Mastra } from '@mastra/core'
import { claudeSDKAgent } from './agents/claude-sdk-agent'
import { cursorSDKAgent } from './agents/cursor-sdk-agent'
import { openaiSDKAgent } from './agents/openai-sdk-agent'
export const mastra = new Mastra({
agents: {
claudeSDKAgent,
cursorSDKAgent,
openaiSDKAgent,
},
})
등록 후 전화로 문의하세요mastra.getAgentById():
import { mastra } from './index'
const agent = mastra.getAgentById('cursor-sdk-agent')
const stream = await agent.stream('Inspect this project and describe the test setup.')
for await (const chunk of stream.textStream) {
process.stdout.write(chunk)
}
SDK 실행 재개SDK 실행 재개에 대한 직접 링크
SDK Agent는 Provider 네이티브 재개 데이터와 함께 Mastra의 resumeGenerate() 및 resumeStream()을 지원합니다. 계속할 메시지와 기반 SDK에서 사용하는 재개 식별자를 전달하세요.
Claude SDK Agent는 다음을 통해 알려진 세션을 재개할 수 있습니다.sessionId:
const result = await claudeSDKAgent.resumeGenerate({
message: 'Continue the previous task.',
sessionId: 'claude-session-id',
})
console.log(result.text)
OpenAI SDK Agent는 이전 응답, 대화 또는 세션을 재개할 수 있습니다.
const stream = await openaiSDKAgent.resumeStream({
message: 'Continue the previous task.',
previousResponseId: 'resp_123',
})
for await (const chunk of stream.textStream) {
process.stdout.write(chunk)
}
Cursor SDK Agent는 래핑된 SDK Agent를 계속 사용할 수 있습니다. 저장된 Cursor SDK Agent를 ID로 재개해야 한다면 resumeData에 agentId를 포함하세요.
구조화된 출력구조화된 출력에 대한 직접 링크
Claude 및 OpenAI SDK Agent는 각 Provider의 네이티브 구조화 출력 API를 통해 Mastra의 structuredOutput을 지원합니다. 검증된 값은 result.object에서 사용할 수 있습니다.
import { z } from 'zod'
const result = await openaiSDKAgent.generate<{ summary: string }>('Summarize this project.', {
structuredOutput: {
schema: z.object({
summary: z.string(),
}),
},
})
console.log(result.object.summary)
Cursor TypeScript SDK는 스키마로 제한된 출력 API를 제공하지 않으므로 Cursor SDK Agent에서 structuredOutput을 요청하면 명확한 오류가 발생합니다.
ObservabilityObservability에 대한 직접 링크
SDK Agent는 generate() 및 stream() 호출을 위한 Mastra Agent 및 Model 범위를 생성합니다. 공급업체 SDK에서 관련 이벤트를 제공하면 Mastra는 SDK가 제공한 사용량, Tool 활동 및 Provider 메타데이터를 기록합니다.
Claude SDK 실행에는 Claude 결과 메시지의 SDK 추정 비용이 포함될 수 있습니다. Cursor SDK 실행에는 Cursor 상호 작용 업데이트의 토큰 사용이 포함됩니다. OpenAI SDK 실행에는 OpenAI 실행 상태의 토큰 사용이 포함됩니다.
저장소 및 대시보드 설정에 대해서는 다음을 참조하세요.Observability.