Step 07: Extension
advanced 120 min

Extension

확장(Extension) 등록과 MCP 클라이언트를 학습합니다.

Execute this step

Run from step folder:
cd steps/07_extension && cargo run
Run from project root:
cargo run -p step07_extension

Step 7: Extension

학습 목표

  • 확장 등록, MCP 클라이언트
  • 커스텀 Extension 작성

참조 소스

| 파일 | 내용 | |------|------| | crates/goose/src/agents/extension.rs | Extension 정의 | | crates/goose-mcp/ | MCP 확장 |

핵심 개념

Extension은 Agent의 기능을 확장하는 플러그인입니다. MCP(Model Context Protocol)를 통해 외부 서비스와 통신합니다.

Extension 등록

agent.register_extension(MyExtension::new()).await?;

ExtensionConfig

1pub struct ExtensionConfig {
2    pub name: String,
3    pub transport: TransportConfig,  // stdio 또는 HTTP
4}

MCP 클라이언트

MCP는 표준화된 프로토콜로 다양한 도구와 서비스를 Agent에 연결합니다.

1Agent ──▶ MCP Client ──▶ MCP Server (외부 서비스)
23                              ├── 파일 시스템 접근
4                              ├── 데이터베이스 쿼리
5                              └── 웹 검색

전송 방식

  • stdio: 로컬 프로세스와 stdin/stdout으로 통신
  • HTTP/SSE: 원격 서버와 HTTP로 통신

goose-mcp 크레이트에서 구현을 확인할 수 있습니다.

소스 코드

1//! Sample Step 7: Extension
2
3fn main() {
4    println!("=== Step 7: Extension ===\n");
5    println!("TODO: 확장 등록, MCP 클라이언트");
6}

체크리스트

  • [ ] Extension 등록 방법 이해
  • [ ] ExtensionConfig 구조 파악
  • [ ] MCP 프로토콜 이해 (stdio / HTTP)
  • [ ] 커스텀 Extension 작성 시도

Did you find this helpful? Give it a cheer!