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 연결 템플릿