본문으로 건너뛰기

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 install @mastra/claude @anthropic-ai/claude-agent-sdk

Claude SDK 자격 증명을 설정합니다.

export ANTHROPIC_API_KEY="..."

Claude SDK Agent 만들기
Claude SDK Agent 만들기에 대한 직접 링크

Claude Agent SDK를 다음을 통해 구성하세요.sdkOptions.

src/mastra/agents/claude-sdk-agent.ts
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.

src/mastra/agents/claude-sdk-agent.ts
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 install @mastra/cursor @cursor/sdk

커서 SDK 자격 증명을 설정합니다.

export CURSOR_API_KEY="..."

커서 SDK Agent 만들기
커서 SDK Agent 만들기에 대한 직접 링크

다음을 통해 커서 Agent SDK를 구성합니다.sdkOptions.

src/mastra/agents/cursor-sdk-agent.ts
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:

src/mastra/agents/cursor-sdk-agent.ts
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:

src/mastra/agents/cursor-sdk-agent.ts
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 SDK
OpenAI Agent SDK에 대한 직접 링크

OpenAI 관련 Agent 설정을 OpenAI SDK 옵션에 유지하면서 Mastra에 OpenAI Agents SDK Agent를 등록하려면 @mastra/openai를 사용하세요.

OpenAI 패키지 설치
OpenAI 패키지 설치에 대한 직접 링크

Mastra 패키지와 OpenAI Agents SDK 피어 종속성을 설치합니다.

npm install @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를 생성합니다.

src/mastra/agents/openai-sdk-agent.ts
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:

src/mastra/agents/openai-sdk-agent.ts
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.

src/mastra/agents/openai-sdk-agent.ts
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를 등록합니다.

src/mastra/index.ts
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():

src/mastra/run-sdk-agent.ts
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:

src/mastra/resume-claude.ts
const result = await claudeSDKAgent.resumeGenerate({
message: 'Continue the previous task.',
sessionId: 'claude-session-id',
})

console.log(result.text)

OpenAI SDK Agent는 이전 응답, 대화 또는 세션을 재개할 수 있습니다.

src/mastra/resume-openai.ts
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로 재개해야 한다면 resumeDataagentId를 포함하세요.

구조화된 출력
구조화된 출력에 대한 직접 링크

Claude 및 OpenAI SDK Agent는 각 Provider의 네이티브 구조화 출력 API를 통해 Mastra의 structuredOutput을 지원합니다. 검증된 값은 result.object에서 사용할 수 있습니다.

src/mastra/run-openai-structured-output.ts
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을 요청하면 명확한 오류가 발생합니다.

Observability
Observability에 대한 직접 링크

SDK Agent는 generate()stream() 호출을 위한 Mastra Agent 및 Model 범위를 생성합니다. 공급업체 SDK에서 관련 이벤트를 제공하면 Mastra는 SDK가 제공한 사용량, Tool 활동 및 Provider 메타데이터를 기록합니다. Claude SDK 실행에는 Claude 결과 메시지의 SDK 추정 비용이 포함될 수 있습니다. Cursor SDK 실행에는 Cursor 상호 작용 업데이트의 토큰 사용이 포함됩니다. OpenAI SDK 실행에는 OpenAI 실행 상태의 토큰 사용이 포함됩니다.

저장소 및 대시보드 설정에 대해서는 다음을 참조하세요.Observability.