go-mcp-server-gateway

duddn2012/go-mcp-server-gateway

3.2

If you are the rightful owner of go-mcp-server-gateway and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

This is a Go-based project for implementing an MCP (Model Context Protocol) server.

Tools
1
Resources
0
Prompts
0

Brio

Multi-tenant MCP(Model Context Protocol) 서버. 테넌트별로 독립된 DB를 사용하며, 동적으로 MCP 서버 인스턴스를 생성/관리합니다.

Prerequisites

Crypto Library Setup

이 프로젝트는 Rust로 작성된 암호화 라이브러리를 Git 서브모듈로 포함합니다.

지원 플랫폼:

  • macOS: lib/darwin/libcrypt_rap_key_internal.dylib
  • Linux: lib/linux/libcrypt_rap_key_internal.so

초기 설정:

# 서브모듈 초기화 (저장소 클론 후 최초 1회)
git submodule update --init --recursive

빌드:

# 빌드 스크립트가 자동으로 서브모듈에서 라이브러리를 빌드합니다
./build.sh build-dev   # 개발 환경
./build.sh build-prd   # 프로덕션 환경

서브모듈 업데이트:

# 최신 암호화 로직으로 업데이트
./build.sh update-crypto

장점:

  • ✅ 배포 환경에서 직접 빌드하여 ABI 호환성 문제 해결
  • ✅ glibc 버전 미스매치 방지
  • ✅ Git을 통한 버전 동기화 및 추적

자세한 내용은 참조

Quick Start

# 빌드
./build.sh build-dev    # 개발용
./build.sh build-prd    # 프로덕션용

# 실행
./build.sh run          # 자동 빌드 + 실행
./build.sh run prd      # 프로덕션 모드
./bin/run.sh            # 직접 실행

# 테스트
./build.sh test

암호화 설정

민감한 설정 값(API 키, 비밀번호)은 암호화하여 사용:

# 값 암호화 (OS별로 라이브러리 경로가 자동 설정됨)
go run cmd/encrypt/main.go "your-secret-value"

# .env 파일에 추가
X_MCP_KEY=ENC(암호화된값...)

자세한 내용은 참조

핵심 개념

Multi-Tenant Architecture

  • Base DB: 테넌트 메타데이터 관리
  • Tenant DB: 테넌트별 독립 DB (tools, tool_versions 테이블 포함)
  • 런타임에 테넌트 DB 연결 생성 및 MCP 서버 인스턴스 동적 생성

Registry Manager (Facade Pattern)

  • MCP 서버 인스턴스를 메모리에 캐싱하고 관리
  • {tenant}/{server}/{version} 키로 서버 조회
  • 테넌트별 서버 로드/동기화 담당

API Endpoints

MCP Protocol

GET/POST /{tenant}/{server}/{version}
  • MCP SSE 연결 및 프로토콜 요청 처리
  • 예: POST /OMS_TEST9999/rails-server/1

Tool 정의

tool_versions.object 컬럼에 JSON으로 정의:

{
  "tools": [
    {
      "name": "example_tool",
      "description": "Tool description",
      "run_type": "api_call",
      "connection": {
        "url": "https://api.example.com",
        "method": "POST"
      },
      "tool_declaration": {
        "type": "object",
        "properties": { ... }
      }
    }
  ]
}

개발

# 테스트
go test ./...

# 특정 패키지 테스트
go test ./internal/infrastructure/registry/...

환경 설정

.env 파일에 DB 연결 정보 설정 필요:

  • Base DB 연결 정보
  • Tenant DB 연결 템플릿