chun-wei0413/mcp-registry
3.2
If you are the rightful owner of mcp-registry and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This project provides a comprehensive MCP solution for intelligent database operations, featuring enterprise-grade MCP Servers for PostgreSQL and MySQL.
Tools
5
Resources
0
Prompts
0
MCP Registry - Java Edition
企業級 Model Context Protocol (MCP) Server 的 Java 實現,專為現代資料庫操作和智能資料遷移設計。
🎯 專案概述
此專案提供基於 Java 17 + Spring Boot 3.x 的企業級 MCP Server,支援:
- PostgreSQL MCP Server: 針對現代 PostgreSQL 資料庫的完整操作和管理
- MySQL MCP Server: 專為 MySQL 資料庫設計的企業級操作工具
- 智能資料遷移: LLM 驅動的跨資料庫遷移和同步方案
- 反應式程式設計: 基於 Project Reactor 的高效能非同步操作
🏗️ 專案結構
mcp-registry-java/
├── 📁 mcp-common/ # 共用模組
│ ├── src/main/java/ # 共用程式碼
│ │ ├── models/ # 資料模型 (ConnectionInfo, QueryResult)
│ │ ├── validators/ # 安全驗證 (SqlValidator)
│ │ └── exceptions/ # 例外處理
│ └── pom.xml # Maven 配置
├── 📁 mcp-postgresql-server/ # PostgreSQL MCP Server
│ ├── src/main/java/ # PostgreSQL 服務實現
│ │ ├── controllers/ # MCP 工具控制器
│ │ ├── services/ # 業務服務層
│ │ └── config/ # 配置管理
│ └── pom.xml # Maven 配置
├── 📁 mcp-mysql-server/ # MySQL MCP Server
│ ├── src/main/java/ # MySQL 服務實現
│ │ ├── controllers/ # MCP 工具控制器
│ │ ├── services/ # 業務服務層
│ │ └── config/ # 配置管理
│ └── pom.xml # Maven 配置
├── 📁 testing-tools/ # 測試工具模組
│ ├── src/main/java/ # 測試工具實現
│ └── pom.xml # Maven 配置
├── 📁 deployment/ # 部署相關檔案
│ ├── docker-compose.yml # Docker Compose 配置
│ └── 📁 k8s/ # Kubernetes 部署檔案
├── 📁 docs/ # 技術文檔目錄
│ ├── ARCHITECTURE.md # 架構設計文檔
│ ├── JAVA_MIGRATION_PLAN.md # Java 遷移計畫
│ └── API_REFERENCE.md # API 參考文檔
├── 📄 pom.xml # 主 Maven 配置
├── 📄 QUICK_START.md # 快速開始指南
└── 📄 README.md # 主專案說明 (本檔案)
🛠️ 技術棧
核心技術
- Java 17: 現代語言特性和效能優化
- Spring Boot 3.x: 企業級應用框架
- Spring AI MCP: 原生 MCP 協議支援
- Project Reactor: 反應式程式設計
資料庫與連接
- R2DBC: 非同步資料庫連接
- Connection Pooling: R2DBC 連線池管理
- PostgreSQL: 支援 PostgreSQL 12+
- MySQL: 支援 MySQL 8.0+
開發與部署
- Maven: 專案管理和建置工具
- TestContainers: 整合測試環境
- Jib Plugin: 優化的 Docker 映像建置
- Spring Boot Actuator: 監控和健康檢查
🚀 特性
- 🔒 安全性第一: 參數化查詢、SQL 注入防護、危險操作阻擋
- ⚡ 高效能: 反應式程式設計、非同步連線池、批次操作
- 🔍 可觀測性: Spring Boot Actuator 監控、結構化日誌、健康檢查
- 🛡️ 安全配置: 只讀模式、操作白名單、查詢長度限制
- 🔧 易於部署: Docker 支援、Kubernetes 配置、一鍵部署
- 🧪 完整測試: 單元測試、整合測試、TestContainers 支援
📋 系統需求
- Java 17+
- Maven 3.8+
- PostgreSQL 12+ 或 MySQL 8.0+
- Docker & Docker Compose (可選)
🔧 快速開始
使用 Maven 建置
# 克隆專案
git clone <repository-url>
cd mcp-registry
# 建置所有模組
mvn clean install
# 執行 PostgreSQL MCP Server
cd mcp-postgresql-server
mvn spring-boot:run
# 執行 MySQL MCP Server (另一個終端)
cd mcp-mysql-server
mvn spring-boot:run
使用 Docker Compose
# 部署完整環境
cd deployment/
docker-compose up -d
# 查看服務狀態
docker-compose ps
使用 Jib 建置 Docker 映像
# 建置 PostgreSQL MCP Server Docker 映像
cd mcp-postgresql-server
mvn jib:dockerBuild
# 建置 MySQL MCP Server Docker 映像
cd mcp-mysql-server
mvn jib:dockerBuild
⚙️ 配置
應用程式配置 (application.yml)
# PostgreSQL MCP Server
spring:
r2dbc:
url: r2dbc:postgresql://localhost:5432/mydb
username: user
password: password
application:
name: postgresql-mcp-server
mcp:
server:
port: 8080
security:
readonly-mode: false
allowed-operations: SELECT,INSERT,UPDATE,DELETE
blocked-keywords: DROP,TRUNCATE,ALTER
max-query-length: 10000
management:
endpoints:
web:
exposure:
include: health,metrics,info
環境變數
# 伺服器配置
MCP_SERVER_PORT=8080
SPRING_PROFILES_ACTIVE=production
# 資料庫連線
R2DBC_URL=r2dbc:postgresql://localhost:5432/mydb
R2DBC_USERNAME=user
R2DBC_PASSWORD=password
# 安全配置
MCP_SECURITY_READONLY_MODE=false
MCP_SECURITY_ALLOWED_OPERATIONS=SELECT,INSERT,UPDATE,DELETE
MCP_SECURITY_BLOCKED_KEYWORDS=DROP,TRUNCATE,ALTER
MCP_SECURITY_MAX_QUERY_LENGTH=10000
🛠️ MCP 工具
連線管理
addConnection
- 建立資料庫連線testConnection
- 測試連線狀態listConnections
- 列出所有連線
查詢執行
executeQuery
- 執行 SELECT 查詢executeTransaction
- 事務執行batchExecute
- 批次操作
Schema 檢查
getTableSchema
- 獲取表結構listTables
- 列出所有表explainQuery
- 查詢執行計畫
監控工具
healthCheck
- 健康檢查getMetrics
- 伺服器指標
🔍 使用範例
建立連線
@Autowired
private ConnectionController connectionController;
ConnectionRequest request = ConnectionRequest.builder()
.connectionId("main_db")
.host("localhost")
.port(5432)
.database("myapp")
.username("myuser")
.password("mypassword")
.build();
Mono<ConnectionResult> result = connectionController.addConnection(request);
執行查詢
@Autowired
private QueryController queryController;
QueryRequest request = QueryRequest.builder()
.connectionId("main_db")
.query("SELECT * FROM users WHERE created_at > ?")
.params(List.of("2024-01-01"))
.build();
Mono<QueryResult> result = queryController.executeQuery(request);
事務操作
TransactionRequest request = TransactionRequest.builder()
.connectionId("main_db")
.queries(List.of(
QueryRequest.builder()
.query("INSERT INTO orders (user_id, total) VALUES (?, ?)")
.params(List.of(1, 100.50))
.build(),
QueryRequest.builder()
.query("UPDATE inventory SET stock = stock - ? WHERE id = ?")
.params(List.of(1, 123))
.build()
))
.build();
Mono<TransactionResult> result = queryController.executeTransaction(request);
🧪 測試
單元測試
# 執行所有單元測試
mvn test
# 執行特定模組測試
cd mcp-postgresql-server
mvn test
整合測試 (使用 TestContainers)
# 執行整合測試
mvn integration-test
# 執行特定的整合測試
mvn test -Dtest=PostgreSqlIntegrationTest
🐳 Docker 部署
Docker Compose 部署
cd deployment/
docker-compose up -d
# 查看服務狀態
docker-compose ps
# 查看日誌
docker-compose logs postgresql-mcp-server
docker-compose logs mysql-mcp-server
Kubernetes 部署
cd deployment/k8s/
kubectl apply -f .
# 查看 Pod 狀態
kubectl get pods
# 查看服務
kubectl get services
📊 監控
健康檢查
curl http://localhost:8080/actuator/health
指標查詢
curl http://localhost:8080/actuator/metrics
應用程式資訊
curl http://localhost:8080/actuator/info
🛡️ 安全最佳實務
- 永遠使用參數化查詢
- 啟用 Spring Security (生產環境)
- 定期更新依賴
- 使用最小權限原則
- 啟用審計日誌
🔄 從 Python 版本遷移
此 Java 版本相比於 Python 版本提供:
- 更好的效能: JVM 效能優化和反應式程式設計
- 企業級特性: Spring Boot 生態系統支援
- 強型別安全: 編譯時型別檢查
- 更好的工具: Maven 生態系統和 IDE 支援
- 更好的可維護性: 企業級架構和設計模式
詳見 。
📚 文檔
完整文檔請參閱 。
快速連結
📄 授權
此專案使用 MIT 授權 - 詳見 檔案
🤝 支援
- 📧 Email: a910413frank@gmail.com
- 🐛 Issues:
- 💬 Discussions:
注意: 這是一個純工具層的 MCP Server,設計用於與 LLM 配合進行智能資料遷移和資料庫操作。請確保在生產環境中正確配置安全設定。