콘텐츠로 이동

데이터베이스용 MCP 도구 상자

ADK에서 지원PythonTypescriptGo

데이터베이스용 MCP 도구 상자는 데이터베이스용 오픈 소스 MCP 서버입니다. 엔터프라이즈급 및 프로덕션 품질을 염두에 두고 설계되었습니다. 연결 풀링, 인증 등과 같은 복잡성을 처리하여 도구를 더 쉽고 빠르고 안전하게 개발할 수 있습니다.

Google의 에이전트 개발 키트(ADK)는 도구 상자를 기본적으로 지원합니다. 도구 상자 시작하기 또는 구성하기에 대한 자세한 내용은 설명서를 참조하세요.

GenAI 도구 상자

지원되는 데이터 소스

MCP 도구 상자는 다음 데이터베이스 및 데이터 플랫폼에 대한 즉시 사용 가능한 도구 세트를 제공합니다.

Google Cloud

관계형 및 SQL 데이터베이스

NoSQL 및 키-값 저장소

그래프 데이터베이스

  • Neo4j (Cypher 쿼리 및 스키마 검사용 도구 포함)
  • Dgraph

데이터 플랫폼 및 연합

  • Looker (Looker API를 통해 Look, 쿼리 및 대시보드 빌드 실행용)
  • Trino (여러 소스에서 연합 쿼리 실행용)

기타

구성 및 배포

도구 상자는 직접 배포하고 관리하는 오픈 소스 서버입니다. 배포 및 구성에 대한 자세한 내용은 공식 도구 상자 설명서를 참조하세요.

ADK용 클라이언트 SDK 설치

ADK는 도구 상자를 사용하기 위해 toolbox-core python 패키지에 의존합니다. 시작하기 전에 패키지를 설치하세요.

pip install toolbox-core

도구 상자 도구 로드

도구 상자 서버가 구성되고 실행되면 ADK를 사용하여 서버에서 도구를 로드할 수 있습니다.

from google.adk.agents import Agent
from toolbox_core import ToolboxSyncClient

toolbox = ToolboxSyncClient("https://127.0.0.1:5000")

# 특정 도구 세트 로드
tools = toolbox.load_toolset('my-toolset-name'),
# 단일 도구 로드
tools = toolbox.load_tool('my-tool-name'),

root_agent = Agent(
    ...,
    tools=tools # 에이전트에 도구 목록 제공

)

ADK는 MCP Toolbox를 사용하기 위해 @toolbox-sdk/adk TypeScript 패키지를 사용합니다. 시작하기 전에 패키지를 설치하세요.

npm install @toolbox-sdk/adk

MCP Toolbox 도구 로드

MCP Toolbox 서버가 구성되어 실행 중이면 ADK를 사용해 서버에서 도구를 로드할 수 있습니다.

import {InMemoryRunner, LlmAgent} from '@google/adk';
import {Content} from '@google/genai';
import {ToolboxClient} from '@toolbox-sdk/adk';

const toolboxClient = new ToolboxClient('http://127.0.0.1:5000');
const loadedTools = await toolboxClient.loadToolset();

export const rootAgent = new LlmAgent({
  name: 'weather_time_agent',
  model: 'gemini-flash-latest',
  description: '도시의 시간과 날씨에 대한 질문에 답하는 에이전트입니다.',
  instruction:
    '도시의 시간과 날씨에 관한 사용자 질문에 답할 수 있는 유용한 에이전트입니다.',
  tools: loadedTools,
});

async function main() {
  const userId = 'test_user';
  const appName = rootAgent.name;
  const runner = new InMemoryRunner({agent: rootAgent, appName});
  const session = await runner.sessionService.createSession({
    appName,
    userId,
  });

  const prompt = '뉴욕의 날씨는 어떤가요? 시간도 알려주세요.';
  const content: Content = {
    role: 'user',
    parts: [{text: prompt}],
  };
  console.log(content);
  for await (const e of runner.runAsync({
    userId,
    sessionId: session.id,
    newMessage: content,
  })) {
    if (e.content?.parts?.[0]?.text) {
      console.log(`${e.author}: ${JSON.stringify(e.content, null, 2)}`);
    }
  }
}

main().catch(console.error);

ADK는 도구 상자를 사용하기 위해 mcp-toolbox-sdk-go go 모듈에 의존합니다. 시작하기 전에 모듈을 설치하세요.

go get github.com/googleapis/mcp-toolbox-sdk-go

도구 상자 도구 로드

도구 상자 서버가 구성되고 실행되면 ADK를 사용하여 서버에서 도구를 로드할 수 있습니다.

package main

import (
    "context"
    "fmt"

    "github.com/googleapis/mcp-toolbox-sdk-go/tbadk"
    "google.golang.org/adk/agent/llmagent"
)

func main() {

  toolboxClient, err := tbadk.NewToolboxClient("https://127.0.0.1:5000")
    if err != nil {
        log.Fatalf("MCP 도구 상자 클라이언트를 만드는 데 실패했습니다: %v", err)
    }

  // 특정 도구 세트 로드
  toolboxtools, err := toolboxClient.LoadToolset("my-toolset-name", ctx)
  if err != nil {
    return fmt.Sprintln("도구 상자 도구 세트를 로드할 수 없습니다", err)
  }

  toolsList := make([]tool.Tool, len(toolboxtools))
    for i := range toolboxtools {
      toolsList[i] = &toolboxtools[i]
    }

  llmagent, err := llmagent.New(llmagent.Config{
    ...,
    Tools:       toolsList,
  })

  // 단일 도구 로드
  tool, err := client.LoadTool("my-tool-name", ctx)
  if err != nil {
    return fmt.Sprintln("도구 상자 도구를 로드할 수 없습니다", err)
  }

  llmagent, err := llmagent.New(llmagent.Config{
    ...,
    Tools:       []tool.Tool{&toolboxtool},
  })
}

고급 도구 상자 기능

도구 상자에는 데이터베이스용 Gen AI 도구를 개발하기 위한 다양한 기능이 있습니다. 자세한 내용은 다음 기능에 대해 자세히 알아보세요.

  • 인증된 매개변수: 도구 입력을 OIDC 토큰의 값에 자동으로 바인딩하여 잠재적으로 데이터 유출 없이 민감한 쿼리를 쉽게 실행할 수 있습니다.
  • 승인된 호출: 사용자 인증 토큰을 기반으로 도구 사용에 대한 액세스를 제한합니다.
  • OpenTelemetry: OpenTelemetry를 사용하여 도구 상자에서 메트릭 및 추적을 가져옵니다.