[STK6-01] Spring AI MCP Server 의존성 추가 및 기본 설정

작업 내용 (설계 의도)

변경 사항

build.gradle.kts에 Spring AI BOM과 MCP Server 스타터만 추가한다 (Anthropic·Tavily 스타터 제외). application.yml에 MCP 서버 메타 설정을 추가하고, stock-mcp.jsonresources/에 생성한다. McpServerConfig.kt에서 빈 설정을 확인한다. 이 티켓이 완료되어야 STK6-02~04가 병렬 착수 가능하다.

추가 파일

  • backend/src/main/resources/stock-mcp.jsonclaude -p 실행 시 전달할 MCP 서버 목록 (stock SSE + Brave Search stdio)

stock-mcp.json 내용

{
  "mcpServers": {
    "stock": {
      "type": "sse",
      "url": "http://localhost:8080/mcp/sse"
    },
    "brave-search": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": { "BRAVE_API_KEY": "${BRAVE_API_KEY}" }
    }
  }
}

다이어그램

처리 흐름

flowchart LR
    Build[build.gradle.kts] --> BOM[spring-ai-bom:1.0.0]
    BOM --> MCP[spring-ai-starter-mcp-server-webmvc]
    Config[application.yml] --> McpMeta[MCP 서버 메타]
    Config --> ChatProp[chat.mcp-config-path]
    McpJson[stock-mcp.json] --> StockSSE[stock MCP SSE]
    McpJson --> BraveStdio[brave-search MCP stdio]

클래스 의존

flowchart LR
    SpringAiAutoConfig -->|creates| McpServer[SseMcpServerTransport]
    McpServer -->|exposes| SSEEndpoint[/mcp/sse]

테스트 케이스

  • 빌드 성공 시 /mcp/sse GET 요청에 200 응답을 반환한다.
  • spring.ai.mcp.server.enabled=false 설정 시 /mcp/sse가 404를 반환한다.
  • stock-mcp.json이 유효한 JSON 형식임을 파싱으로 확인한다.
  • claude --version이 PATH에서 정상 실행된다 (환경 사전 확인).