목록으로
GitHub - googleapis/genai-toolbox: MCP Toolbox for Databases is an open source MCP server for databases.
Service2025.02.16

GitHub - googleapis/genai-toolbox: MCP Toolbox for Databases is an open source MCP server for databases.

요약

MCP Toolbox for Databases는 AI 에이전트가 데이터베이스와 상호 작용하는 것을 간소화하는 오픈 소스 서버로, 인증 및 연결 풀링과 같은 복잡한 작업을 처리하며 도구 관리를 중앙 집중화합니다.
이 솔루션은 자연어 쿼리, 자동화된 데이터베이스 관리, 컨텍스트 인식 코드 생성을 통해 AI 어시스턴트가 데이터베이스 작업을 수행하도록 지원하여 개발 오버헤드를 크게 줄여줍니다.
️ Toolbox는 tools.yaml 파일을 통해 다양한 데이터베이스 소스, 도구, 툴셋 및 프롬프트를 구성하며, Python, JavaScript/TypeScript, Go 등 다양한 프로그래밍 언어 및 LangChain, Genkit 같은 AI 프레임워크를 위한 클라이언트 SDK를 제공합니다.

상세 내용

MCP Toolbox for Databases는 데이터베이스를 위한 오픈 소스 MCP (Model-Controller-Persistence) 서버입니다. 이 솔루션은 데이터베이스 관련 도구를 더 쉽고, 빠르게, 그리고 안전하게 개발할 수 있도록 돕습니다. 연결 풀링(connection pooling), 인증(authentication) 등과 같은 복잡한 요소들을 자동으로 처리합니다. 초기 개발 시 "Gen AI Toolbox for Databases"로 명명되었으나, MCP 호환성 추가 후 현재 이름으로 변경되었습니다. 이 프로젝트는 현재 베타(beta) 상태이며, v1.0의 첫 안정화 릴리스 전까지는 파괴적인 변경(breaking changes)이 있을 수 있습니다.

핵심 기능 및 이점:

* 간소화된 개발 (Simplified Development): 10줄 미만의 코드로 에이전트(agent)에 도구를 통합할 수 있으며, 여러 에이전트나 프레임워크 간에 도구를 재사용하고, 새 버전의 도구를 더 쉽게 배포할 수 있습니다.
* 향상된 성능 (Better Performance): 연결 풀링 및 통합 인증과 같은 모범 사례를 제공합니다.
* 강화된 보안 (Enhanced Security): 데이터에 대한 안전한 접근을 위해 통합 인증(integrated authentication)을 지원합니다.
* 종단 간 관측 가능성 (End-to-End Observability): OpenTelemetry를 내장하여 즉시 사용 가능한 메트릭(metrics) 및 트레이싱(tracing)을 제공합니다.
* AI 데이터베이스 어시스턴트 (AI Database Assistant): IDE를 MCP Toolbox에 연결하여 AI 어시스턴트가 데이터베이스 작업을 위임받아 수행하게 합니다. 이는 SQL 작성 없이 자연어로 데이터 질의("How many orders were delivered in 2024, and what items were in them?"), 데이터베이스 관리 자동화(쿼리 생성, 테이블 생성, 인덱스 추가 등), 실시간 데이터베이스 스키마(schema) 이해를 통한 컨텍스트 인식 코드 및 테스트 생성, 수동 설정 및 상용구(boilerplate) 감소를 가능하게 하여 개발 오버헤드를 줄입니다.

일반 아키텍처 (General Architecture):
Toolbox는 애플리케이션의 오케스트레이션 프레임워크(orchestration framework)와 데이터베이스 사이에 위치하며, 도구(tools)를 수정, 배포 또는 호출하는 데 사용되는 제어 평면(control plane)을 제공합니다. 이는 도구를 중앙에서 관리하고 업데이트할 수 있는 단일 위치를 제공함으로써 도구 관리를 간소화합니다. 이를 통해 애플리케이션을 재배포할 필요 없이 에이전트 및 애플리케이션 간에 도구를 공유하고 업데이트할 수 있습니다.

핵심 방법론 (Core Methodology) 및 구성 요소:

Toolbox의 주요 설정은 YAML 파일을 통해 이루어집니다. 특히 tools.yaml 파일이 핵심적인 역할을 합니다.

  • Sources (소스):
  • tools.yamlsources 섹션은 Toolbox가 접근할 데이터 소스를 정의합니다. 대부분의 도구는 하나 이상의 소스를 대상으로 실행됩니다. 이는 데이터베이스의 종류(e.g., postgres, mysql), 호스트, 포트, 데이터베이스 이름, 사용자, 비밀번호 등 연결 세부 정보를 명시합니다.
    yamlsources: my-pg-source: kind: postgres host: 127.0.0.1 port: 5432 database: toolbox_db user: toolbox_user password: my-password

  • Tools (도구):
  • tools 섹션은 에이전트가 취할 수 있는 특정 동작들을 정의합니다. 각 도구는 다음과 같은 속성을 가집니다.
    * kind: 도구의 유형(e.g., postgres-sql). 이는 특정 데이터 소스에 대한 SQL 쿼리 실행을 의미합니다.
    * source: 이 도구가 동작할 소스(sources 섹션에 정의된 이름).
    * description: LLM(Large Language Model)이 도구의 목적을 이해하는 데 사용되는 자연어 설명입니다.
    * parameters: 도구에 필요한 입력 매개변수(input parameters)를 정의합니다. 각 매개변수는 name, type, description을 가집니다. 이는 도구의 입력 스키마(input schema)를 구성합니다.
    * statement: 도구가 실행할 실제 명령 또는 쿼리(e.g., SQL 쿼리). 매개변수는 __INLINE_FORMULA_4__1).
    yamltools: search-hotels-by-name: kind: postgres-sql source: my-pg-source description: Search for hotels based on name. parameters: - name: name type: string description: The name of the hotel. statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';

  • Toolsets (도구 세트):
  • toolsets 섹션은 함께 로드하고 싶은 도구들의 그룹을 정의합니다. 특정 에이전트나 애플리케이션에 따라 다른 도구 그룹을 정의할 때 유용합니다. 클라이언트 SDK를 통해 load_toolset() 함수를 사용하여 특정 도구 세트(toolset_name)를 로드할 수 있습니다.
    yamltoolsets: my_first_toolset: - my_first_tool - my_second_tool

  • Prompts (프롬프트):
  • prompts 섹션은 LLM과의 상호작용에 사용될 프롬프트 템플릿을 정의합니다.
    * description: 프롬프트의 목적 설명.
    * messages: LLM에 보낼 메시지의 내용. {{.variable_name}}과 같은 플레이스홀더를 사용하여 동적인 값을 삽입할 수 있습니다.
    * arguments: 메시지 내용에 사용될 입력 변수들을 정의합니다.
    yamlprompts: code_review: description: "Asks the LLM to analyze code quality and suggest improvements." messages: - content: "Please review the following code for quality, correctness, and potential improvements:\n\n {{.code}}" arguments: - name: "code" description: "The code to review"

    사용 방법 (Getting Started):

    * 설치: 바이너리(Linux, macOS, Windows), 컨테이너 이미지(Docker), Homebrew, 소스 코드 컴파일, NPM (npx @toolbox-sdk/server) 등 다양한 방법으로 Toolbox 서버를 설치할 수 있습니다.
    * 서버 실행: toolbox --tools-file "tools.yaml" 명령어를 통해 서버를 실행할 수 있습니다. 기본적으로 동적 리로드(dynamic reloading)가 활성화되어 있습니다.
    * 애플리케이션 통합: 서버가 실행되면, Python, JavaScript/TypeScript, Go 등 다양한 언어의 클라이언트 SDK를 사용하여 애플리케이션에 도구를 로드하고 통합할 수 있습니다. SDK는 Toolbox 서버와 통신하여 정의된 도구들을 가져와 LangChain, LlamaIndex, Genkit, OpenAI 등 다양한 AI 프레임워크와 연동될 수 있도록 변환하는 기능을 제공합니다.

    버전 관리 (Versioning):
    이 프로젝트는 시맨틱 버저닝(semantic versioning) (MAJOR.MINOR.PATCH)을 사용합니다. 현재 0.x.y 형태의 pre-1.0.0 버전 단계에 있으며, 이 단계에서는 주 버전이 0인 경우 퍼블릭 API가 불안정하다고 간주됩니다. 0.MINOR.PATCH에서 MINOR 버전은 새로운 기능 추가 또는 하위 호환성을 깨는 API 변경 시 증가하며, PATCH 버전은 하위 호환성 버그 수정 시 증가합니다. 1.0.0 이후에는 일반적인 시맨틱 버저닝 규칙을 따릅니다.

    커뮤니티 (Community):
    기여(contributions)를 환영하며, Discord 커뮤니티를 통해 개발자들과 소통할 수 있습니다.

    원본 보기
    GitHub
    Shared by Anonymous