mcp-gateway
๐ Enterprise-grade API Gateway for MCP Protocol, built with Java Spring Boot. Supports authentication, proxy, and traffic management for AI tool calling.
GitHub Stars
5
User Rating
Not Rated
Favorites
0
Views
1
Forks
3
Issues
0
MCP Gateway - ไผไธ็บงMCP API็ฝๅ ณ
MCP Gateway - Enterprise-grade MCP API Gateway
๐ ไธบMCP็ๆ็ณป็ปๆไพ้ซๆง่ฝๅ่ฎฎ่ฝฌๆขใๆๅก็ฎก็ใ้ดๆๅๆต้ๆฒป็็ๅฎๆด่งฃๅณๆนๆก
้กน็ฎๆฆ่ฟฐ
MCP GatewayๆฏไธไธชๅบไบSpring Boot 3.x็ไผไธ็บงAPI็ฝๅ ณ็ณป็ป๏ผไธ้จไธบModel Context Protocol (MCP)ๆๅกๆไพ็ปไธ็ๆฅๅ ฅใ็ฎก็ๅไปฃ็ๅ่ฝใ็ณป็ป้็จๆจกๅๅๆถๆ่ฎพ่ฎก๏ผ็กฎไฟ้ซๅฏๆฉๅฑๆงใๅฏ็ปดๆคๆงๅๅฎๅ จๆงใ
ๆ ธๅฟ็นๆง
- ๐ ็ปไธ้ดๆ: ๆฏๆๅฏ้ฅ่ฎค่ฏใIP็ฝๅๅใ่ทฏๅพ็ฝๅๅ
- ๐ ้ซๆง่ฝไปฃ็: ๅบไบWebFluxๅๅบๅผๆถๆ๏ผๆฏๆๅผๆญฅ่ฏทๆฑๅค็
- ๐ ๆๅกๆฒป็: ๆๅกๅ็ฐใๅฅๅบทๆฃๆฅใ็ป่ฎก็ๆง
- ๐ก๏ธ ๆต้ๆงๅถ: ๅค็ปดๅบฆ้ๆตใ็ๆญ้็บง
- ๐พ ๆฐๆฎๆไน ๅ: MySQLๅญๅจ้ ็ฝฎๆฐๆฎ๏ผRedis็ผๅญ็ญ็นๆฐๆฎ
- ๐ ๅฎๆถ็ๆง: ๆๅก่ฐ็จ็ป่ฎกใๆง่ฝ็ๆง
ๆถๆ่ฎพ่ฎก
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Client Applications โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTP/HTTPS Requests
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Gateway โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Auth โ โ Proxy โ โ Management โ โ
โ โ Module โ โ Module โ โ Module โ โ
โ โ โ โ โ โ โ โ
โ โ - ๅฏ้ฅ่ฎค่ฏ โ โ - ๅ่ฎฎ่ฝฌๆข โ โ - ๆๅก็ฎก็ โ โ
โ โ - IP็ฝๅๅ โ โ - ่ฏทๆฑไปฃ็ โ โ - ้
็ฝฎ็ๆ โ โ
โ โ - ่ฐ็จ่ฎฐๅฝ โ โ - ๆต้็ป่ฎก โ โ - ๅฏ้ฅ็ฎก็ โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Protocol
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Backend MCP Services โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Weather โ โ HR โ โ File โ โ
โ โ Service โ โ Service โ โ Service โ โ
โ โ :8081 โ โ :8082 โ โ :8083 โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๆๆฏๆ
- ๅ็ซฏๆกๆถ: Spring Boot 3.5.4, Spring WebFlux
- ๆฐๆฎๅบ: MySQL 8.0+ (ไธปๅญๅจ), Redis 6.0+ (็ผๅญ)
- ORMๆกๆถ: MyBatis
- ๆๅปบๅทฅๅ ท: Maven 3.8+
- JDK็ๆฌ: Java 17+
- ๅฎนๅจๅ: Docker (ๅฏ้)
ๆจกๅ็ปๆ
mcp-gateway/
โโโ auth/ # ้ดๆๆจกๅ
โ โโโ src/main/java/
โ โ โโโ org/jdt/mcp/gateway/auth/
โ โ โโโ config/ # ่ฎค่ฏ้
็ฝฎ็ฑป
โ โ โโโ filter/ # ่ฎค่ฏ่ฟๆปคๅจ
โ โ โโโ service/ # ่ฎค่ฏๆๅกๅฎ็ฐ
โ โ โโโ tool/ # ่ฎค่ฏๅทฅๅ
ท็ฑป
โ โโโ pom.xml
โโโ proxy/ # ไปฃ็ๆจกๅ
โ โโโ src/main/java/
โ โ โโโ org/jdt/mcp/gateway/proxy/
โ โ โโโ config/ # ไปฃ็้
็ฝฎ็ฑป
โ โ โโโ ctl/ # RESTๆงๅถๅจ
โ โ โโโ handler/ # ่ฏทๆฑๅค็ๅจ
โ โ โโโ service/ # ไปฃ็ๆๅกๅฎ็ฐ
โ โ โโโ scheduler/ # ๅฎๆถไปปๅก่ฐๅบฆๅจ
โ โโโ pom.xml
โโโ management/ # ็ฎก็ๆจกๅ ๐
โ โโโ src/main/java/
โ โ โโโ org/jdt/mcp/gateway/management/
โ โ โโโ ManagementApp.java # ไธปๅฏๅจ็ฑป
โ โ โโโ config/ # ้
็ฝฎ็ฑป
โ โ โโโ ctl/ # RESTๆงๅถๅจ
โ โ โโโ service/ # ไธๅกๆๅกๅฑ
โ โโโ src/main/resources/
โ โ โโโ application.yml # ็ฎก็ๆจกๅ้
็ฝฎๆไปถ
โ โโโ pom.xml
โโโ core/ # ๆ ธๅฟๅ
ฑไบซๆจกๅ
โ โโโ src/main/java/
โ โ โโโ org/jdt/mcp/gateway/core/
โ โ โโโ entity/ # ๅฎไฝ็ฑป๏ผๆฐๆฎๅบๆ ๅฐ๏ผ
โ โ โโโ dto/ # ๆฐๆฎไผ ่พๅฏน่ฑก
โ โ โโโ tool/ # ้็จๅทฅๅ
ท็ฑป
โ โ โโโ exception/ # ่ชๅฎไนๅผๅธธ็ฑป
โ โโโ pom.xml
โโโ persist/ # ๆฐๆฎๆไน
ๅๆจกๅ
โ โโโ src/main/java/
โ โ โโโ org/jdt/mcp/gateway/
โ โ โโโ mapper/ # MyBatis Mapperๆฅๅฃ
โ โโโ pom.xml
โโโ ddl.sql # ๆฐๆฎๅบๅปบ่กจ่ๆฌ
โโโ pom.xml # ไธปPOMๆไปถ
โโโ README.md # ้กน็ฎ่ฏดๆๆๆกฃ
# ๅๆจกๅๅ
ณ็ณป่ฏดๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Frontend/Client โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Auth โ โ Proxy โ โ Management โ
โ Module โโโโโบโ Module โโโโโบโ Module โ
โ :8080 โ โ :8080 โ โ :9080 โ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ โ โ
โ โโโโโโโโโโผโโโโโโโโโ โ
โ โ โ โ โ
โผ โผ โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Core Module โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Entity โ โ DTO โ โ Tool โ โ
โ โ Classes โ โ Classes โ โ Classes โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Persist Module โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ MyBatis โ โ Mapper โ โ Database โ โ
โ โ Config โ โ Interfaces โ โ Scripts โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๆจกๅๅ่ฝ่ฏดๆ
๐ Auth ๆจกๅ
- ็ซฏๅฃ: 8080๏ผ้ๆๅจProxyๆจกๅไธญ๏ผ
- ๅ่ฝ: ๆไพ็ปไธ็่ฎค่ฏๅ้ดๆๆๅก
- ็นๆง: ๅฏ้ฅ่ฎค่ฏใIP็ฝๅๅใ่ทฏๅพ็ฝๅๅใ่ฐ็จๆฅๅฟ่ฎฐๅฝ
๐ Proxy ๆจกๅ
- ็ซฏๅฃ: 8080
- ๅ่ฝ: ้ซๆง่ฝ็MCPๅ่ฎฎไปฃ็่ฝฌๅ
- ็นๆง: ๅบไบWebFluxๅๅบๅผๆถๆใ่ฏทๆฑ็ป่ฎกใๆต้็ๆง
๐ Management ๆจกๅ
- ็ซฏๅฃ: 9080
- ๅ่ฝ: MCPๆๅกๅ็จๆทๆ้็็ฎก็็้ข
- ๆ ธๅฟAPI:
- MCPๆๅก็ฎก็๏ผๆๅกๆณจๅใๆดๆฐใ็ถๆ็ฎก็
- ่ฎค่ฏๅฏ้ฅ็ฎก็๏ผๅฏ้ฅ็ณ่ฏทใๆค้ใ็ปญๆ
- ้ ็ฝฎ็ๆ๏ผSpring AI MCP Client้ ็ฝฎๆไปถ็ๆ
๐ฏ Core ๆจกๅ
- ๅ่ฝ: ๆไพๅ ฑไบซ็ๅฎไฝ็ฑปใDTOๅๅทฅๅ ท็ฑป
- ๅ
ๅซ:
- Entity: ๆฐๆฎๅบๅฎไฝๆ ๅฐ็ฑป
- DTO: API่ฏทๆฑ/ๅๅบๅฏน่ฑก
- Tool: ้็จๅทฅๅ ท็ฑป๏ผๅฆๅฏ้ฅ็ๆๅจ๏ผ
๐พ Persist ๆจกๅ
- ๅ่ฝ: ๆฐๆฎๆไน ๅๅฑๆฝ่ฑก
- ๆๆฏ: MyBatis + MySQL + Redis
- ๅ ๅซ: Mapperๆฅๅฃใๆฐๆฎๅบ่ฟๆฅ้ ็ฝฎ
ๅฟซ้ๅผๅง
็ฏๅข่ฆๆฑ
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+
1. ๅ ้้กน็ฎ
git clone <repository-url>
cd mcp-gateway
2. ๆฐๆฎๅบๅๅงๅ
# ๅๅปบๆฐๆฎๅบ
mysql -u root -p -e "CREATE DATABASE mcp_gateway CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# ๅฏผๅ
ฅ่กจ็ปๆ
mysql -u root -p mcp_gateway < ddl.sql
3. ้ ็ฝฎๆไปถ
ไฟฎๆนๅๆจกๅ็application.yml
้
็ฝฎ๏ผ
spring:
datasource:
url: jdbc:mysql://localhost:3306/mcp_gateway
username: your_username
password: your_password
data:
redis:
host: localhost
port: 6379
4. ็ผ่ฏๆๅปบ
# ็ผ่ฏๆดไธช้กน็ฎ
mvn clean compile
# ๆๅ
mvn clean package
5. ๅฏๅจๆๅก
# ๅฏๅจไปฃ็ๆจกๅ
java -jar proxy/target/proxy-0.0.1-SNAPSHOT.jar
# ๅฏๅจ็ฎก็ๆจกๅ
java -jar management/target/management-0.0.1-SNAPSHOT.jar
6. ้ช่ฏๆๅก
# ๆฃๆฅไปฃ็ๆๅก
curl http://localhost:8080/mcp/health
# ๆฃๆฅ็ฎก็ๆๅก
curl http://localhost:9080/api/management/services
ไฝฟ็จๆๅ
1. ๆณจๅMCPๆๅก
curl -X POST http://localhost:9080/api/management/services \
-H "Content-Type: application/json" \
-d '{
"serviceId": "weather-service",
"name": "ๅคฉๆฐๆฅ่ฏขๆๅก",
"description": "ๆไพๅ
จ็ๅคฉๆฐๆฅ่ฏขๅ่ฝ",
"endpoint": "http://localhost:8081",
"status": "ACTIVE",
"maxQps": 1000
}'
2. ็ณ่ฏท่ฎค่ฏๅฏ้ฅ
curl -X POST http://localhost:9080/api/management/auth-keys/apply \
-H "Content-Type: application/json" \
-d '{
"userId": "user001",
"serviceId": "weather-service",
"remarks": "ๅผๅๆต่ฏไฝฟ็จ"
}'
3. ็ๆๅฎขๆท็ซฏ้ ็ฝฎ
curl -X POST http://localhost:9080/api/management/config/yaml \
-H "Content-Type: application/json" \
-d '{
"userId": "user001",
"serviceIds": ["weather-service"],
"baseUrl": "http://localhost:8080"
}'
4. ไปฃ็่ฎฟ้ฎMCPๆๅก
# ไฝฟ็จ็ๆ็ๅฏ้ฅ่ฎฟ้ฎๆๅก
curl "http://localhost:8080/mcp/weather-service/api/weather?city=Beijing&key=YOUR_AUTH_KEY"
้ ็ฝฎ่ฏดๆ
่ฎค่ฏ้ ็ฝฎ
jdt:
mcp:
auth:
enabled: true
authType: db # ๆฏๆ: db, staticKey
validKeys:
- "admin-key-jdt"
whitelist:
- "/health"
- "/actuator/**"
enableIpWhitelist: false
allowedIps:
- "127.0.0.1"
- "::1"
ไปฃ็้ ็ฝฎ
jdt:
mcp:
proxy:
timeout: 300s
maxInMemorySize: 262144 # 256KB
connectTimeout: 5s
readTimeout: 30s
enableStatistics: true
enableRequestLogging: true
็ๆงๅ่ฟ็ปด
ๅฅๅบทๆฃๆฅ
# ไปฃ็ๆๅกๅฅๅบทๆฃๆฅ
curl http://localhost:8080/mcp/health
# ็ฎก็ๆๅกๅฅๅบทๆฃๆฅ
curl http://localhost:9080/actuator/health
ๆๅก็ป่ฎก
# ๆฅ็ๆๅกๅฎๆถ็ป่ฎก
curl http://localhost:8080/mcp/stats/weather-service/realtime
# ๆฅ็ๆๅกๅๅฒ็ป่ฎก
curl http://localhost:8080/mcp/stats/weather-service
ๆฅๅฟ้ ็ฝฎ
logging:
level:
org.jdt.mcp.gateway: INFO
file:
name: logs/gateway.log
้จ็ฝฒๅปบ่ฎฎ
Docker้จ็ฝฒ
FROM openjdk:17-jdk-slim
COPY proxy/target/proxy-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
็ไบง็ฏๅข้ ็ฝฎ
ๆฐๆฎๅบ่ฟๆฅๆฑ ่ฐไผ
spring: datasource: hikari: maximum-pool-size: 50 minimum-idle: 10
JVMๅๆฐ่ฐไผ
java -Xms2g -Xmx4g -XX:+UseG1GC -jar app.jar
Redis้ซๅฏ็จ
spring: data: redis: cluster: nodes: - redis1:6379 - redis2:6379 - redis3:6379
APIๆๆกฃ
่ฏฆ็ป็APIๆๆกฃ่ฏทๅ่ๅๆจกๅ็README๏ผ
ๆ ้ๆๆฅ
ๅธธ่ง้ฎ้ข
่ฎค่ฏๅคฑ่ดฅ
- ๆฃๆฅ่ฎค่ฏๅฏ้ฅๆฏๅฆๆญฃ็กฎ
- ็กฎ่ฎคๆๅกๆฏๅฆๅคไบๆฟๆดป็ถๆ
- ้ช่ฏIP็ฝๅๅ้ ็ฝฎ
ไปฃ็่ถ ๆถ
- ๆฃๆฅๅ็ซฏๆๅกๆฏๅฆๆญฃๅธธ
- ่ฐๆดไปฃ็่ถ ๆถ้ ็ฝฎ
- ็กฎ่ฎค็ฝ็ป่ฟ้ๆง
ๆฐๆฎๅบ่ฟๆฅ้ฎ้ข
- ๆฃๆฅ่ฟๆฅๆฑ ้ ็ฝฎ
- ้ช่ฏๆฐๆฎๅบๆ้
- ็กฎ่ฎค้ฒ็ซๅข่ฎพ็ฝฎ
RoadMap
- ็ฎๅmanagementๅproxy็น็็ไปฃ็
- ๆดๅฎๅ็ๆๆ ้้ๅ่ฝ
- ๅขๅ ๆต้ๆงๅถๆจกๅ
่ดก็ฎๆๅ
- Fork ้กน็ฎ
- ๅๅปบๅ่ฝๅๆฏ (
git checkout -b feature/AmazingFeature
) - ๆไบคๆดๆน (
git commit -m 'Add some AmazingFeature'
) - ๆจ้ๅฐๅๆฏ (
git push origin feature/AmazingFeature
) - ๆ Pull Request ๐
็ๆฌๅๅฒ
- v0.0.1-SNAPSHOT: ๅๅง็ๆฌ๏ผๅ ๅซๅบ็ก็่ฎค่ฏใไปฃ็ๅ็ฎก็ๅ่ฝ
ๆฏๆ
ๅฆๆไฝ ๅจไฝฟ็จ่ฟ็จไธญ้ๅฐ้ฎ้ข๏ผๅฏไปฅ้่ฟไปฅไธๆนๅผ่ทๅๆฏๆ๏ผ
- ๆไบค [GitHub Issue]
- ๅ้้ฎไปถ่ณ: 876989946@qq.com
Made with โค๏ธ by JDT Team
A powerful MCP server that lets you have natural language conversations with your database. Ask it to do complex analysis, generate beautiful visualizations, or build custom interactive dashboards based your data. Works with any JDBC-compatible database with support for most SQL DBs like PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB, etc
A powerful MCP server that lets you have natural language conversations with your database. Ask it to do complex analysis, generate beautiful visualizations, or build custom interactive dashboards based your data. Works with any JDBC-compatible database with support for most SQL DBs like PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB, etc