universal-db-mcp 2.5.0 โ†’ 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -53,7 +53,7 @@ AI: Let me query that for you...
53
53
  ## โœจ Features
54
54
 
55
55
  - **17 Database Support** - MySQL, PostgreSQL, Redis, Oracle, SQL Server, MongoDB, SQLite, and 10 Chinese domestic databases
56
- - **Dual Mode Architecture** - MCP mode for Claude Desktop, HTTP API mode for Coze, n8n, Dify, and custom integrations
56
+ - **Flexible Architecture** - 2 startup modes (stdio/http) with 4 access methods: MCP stdio, MCP SSE, MCP Streamable HTTP, and REST API
57
57
  - **Security First** - Read-only mode by default prevents accidental data modifications
58
58
  - **Intelligent Caching** - Schema caching with configurable TTL for blazing-fast performance
59
59
  - **Batch Query Optimization** - Up to 100x faster schema retrieval for large databases
@@ -123,6 +123,38 @@ npx universal-db-mcp
123
123
  curl http://localhost:3000/api/health
124
124
  ```
125
125
 
126
+ ### MCP SSE Mode (Dify and Remote Access)
127
+
128
+ When running in HTTP mode, the server also exposes MCP protocol endpoints via SSE (Server-Sent Events) and Streamable HTTP. This allows platforms like Dify to connect using the MCP protocol directly.
129
+
130
+ **SSE Endpoint (Legacy):**
131
+ ```
132
+ GET http://localhost:3000/sse?type=mysql&host=localhost&port=3306&user=root&password=xxx&database=mydb
133
+ ```
134
+
135
+ **Streamable HTTP Endpoint (MCP 2025 Spec, Recommended):**
136
+ ```
137
+ POST http://localhost:3000/mcp
138
+ Headers:
139
+ X-DB-Type: mysql
140
+ X-DB-Host: localhost
141
+ X-DB-Port: 3306
142
+ X-DB-User: root
143
+ X-DB-Password: your_password
144
+ X-DB-Database: your_database
145
+ Body: MCP JSON-RPC request
146
+ ```
147
+
148
+ | Endpoint | Method | Description |
149
+ |----------|--------|-------------|
150
+ | `/sse` | GET | Establish SSE connection (legacy) |
151
+ | `/sse/message` | POST | Send message to SSE session |
152
+ | `/mcp` | POST | Streamable HTTP endpoint (recommended) |
153
+ | `/mcp` | GET | SSE stream for Streamable HTTP |
154
+ | `/mcp` | DELETE | Close session |
155
+
156
+ See [Dify Integration Guide](./docs/integrations/DIFY.md) for detailed setup instructions.
157
+
126
158
  ## ๐Ÿ“Š Supported Databases
127
159
 
128
160
  | Database | Type | Default Port | Category |
@@ -148,29 +180,36 @@ curl http://localhost:3000/api/health
148
180
  ## ๐Ÿ—๏ธ Architecture
149
181
 
150
182
  ```
151
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
152
- โ”‚ Universal DB MCP โ”‚
153
- โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
154
- โ”‚ โ”‚
155
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
156
- โ”‚ โ”‚ MCP Mode โ”‚ โ”‚ HTTP API Mode โ”‚ โ”‚
157
- โ”‚ โ”‚ (Claude Desktop)โ”‚ โ”‚ (Coze/n8n/Dify) โ”‚ โ”‚
158
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
159
- โ”‚ โ”‚ โ”‚ โ”‚
160
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
161
- โ”‚ โ–ผ โ”‚
162
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
163
- โ”‚ โ”‚ Core Business Logic โ”‚ โ”‚
164
- โ”‚ โ”‚ โ€ข Query Execution โ€ข Schema Caching โ”‚ โ”‚
165
- โ”‚ โ”‚ โ€ข Safety Validation โ€ข Connection Management โ”‚ โ”‚
166
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
167
- โ”‚ โ–ผ โ”‚
168
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
169
- โ”‚ โ”‚ Database Adapter Layer โ”‚ โ”‚
170
- โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚... โ”‚ โ”‚
171
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
172
- โ”‚ โ”‚
173
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
183
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
184
+ โ”‚ Universal DB MCP โ”‚
185
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
186
+ โ”‚ โ”‚
187
+ โ”‚ Startup Modes: โ”‚
188
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
189
+ โ”‚ โ”‚ stdio mode โ”‚ http mode โ”‚ โ”‚
190
+ โ”‚ โ”‚ (npm run start:mcp) โ”‚ (npm run start:http) โ”‚ โ”‚
191
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
192
+ โ”‚ โ”‚ โ”‚ โ”‚
193
+ โ”‚ Access Methods: โ”‚ โ”‚
194
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
195
+ โ”‚ โ”‚ MCP stdio โ”‚ โ”‚ MCP SSE โ”‚ MCP Streamable โ”‚ REST โ”‚ โ”‚
196
+ โ”‚ โ”‚ (Claude Desktop) โ”‚ โ”‚ (legacy) โ”‚ HTTP (recommended)โ”‚ API โ”‚ โ”‚
197
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ”‚
198
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
199
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
200
+ โ”‚ โ”‚ โ”‚
201
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
202
+ โ”‚ โ”‚ Core Business Logic โ”‚ โ”‚
203
+ โ”‚ โ”‚ โ€ข Query Execution โ€ข Schema Caching โ”‚ โ”‚
204
+ โ”‚ โ”‚ โ€ข Safety Validation โ€ข Connection Management โ”‚ โ”‚
205
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
206
+ โ”‚ โ–ผ โ”‚
207
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
208
+ โ”‚ โ”‚ Database Adapter Layer โ”‚ โ”‚
209
+ โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚ ... โ”‚ โ”‚
210
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
211
+ โ”‚ โ”‚
212
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
174
213
  ```
175
214
 
176
215
  ## ๐Ÿ”’ Security
package/README.zh-CN.md CHANGED
@@ -53,7 +53,7 @@ AI: ่ฎฉๆˆ‘ๅธฎไฝ ๆŸฅ่ฏขไธ€ไธ‹...
53
53
  ## โœจ ็‰นๆ€ง
54
54
 
55
55
  - **ๆ”ฏๆŒ 17 ็งๆ•ฐๆฎๅบ“** - MySQLใ€PostgreSQLใ€Redisใ€Oracleใ€SQL Serverใ€MongoDBใ€SQLite๏ผŒไปฅๅŠ 10 ็งๅ›ฝไบงๆ•ฐๆฎๅบ“
56
- - **ๅŒๆจกๅผๆžถๆž„** - MCP ๆจกๅผ็”จไบŽ Claude Desktop๏ผŒHTTP API ๆจกๅผ็”จไบŽ Cozeใ€n8nใ€Dify ็ญ‰ๅนณๅฐ้›†ๆˆ
56
+ - **็ตๆดปๆžถๆž„** - 2 ็งๅฏๅŠจๆจกๅผ๏ผˆstdio/http๏ผ‰๏ผŒ4 ็งๆŽฅๅ…ฅๆ–นๅผ๏ผšMCP stdioใ€MCP SSEใ€MCP Streamable HTTPใ€REST API
57
57
  - **ๅฎ‰ๅ…จ็ฌฌไธ€** - ้ป˜่ฎคๅช่ฏปๆจกๅผ๏ผŒ้˜ฒๆญขๆ„ๅค–็š„ๆ•ฐๆฎไฟฎๆ”น
58
58
  - **ๆ™บ่ƒฝ็ผ“ๅญ˜** - Schema ็ผ“ๅญ˜ๆ”ฏๆŒๅฏ้…็ฝฎ็š„ TTL๏ผŒๆ€ง่ƒฝๆž้€Ÿ
59
59
  - **ๆ‰น้‡ๆŸฅ่ฏขไผ˜ๅŒ–** - ๅคงๅž‹ๆ•ฐๆฎๅบ“็š„ Schema ่Žทๅ–้€Ÿๅบฆๆๅ‡้ซ˜่พพ 100 ๅ€
@@ -123,6 +123,38 @@ npx universal-db-mcp
123
123
  curl http://localhost:3000/api/health
124
124
  ```
125
125
 
126
+ ### MCP SSE ๆจกๅผ๏ผˆDify ๅ’Œ่ฟœ็จ‹่ฎฟ้—ฎ๏ผ‰
127
+
128
+ ๅœจ HTTP ๆจกๅผไธ‹่ฟ่กŒๆ—ถ๏ผŒๆœๅŠกๅ™จ่ฟ˜ไผš้€š่ฟ‡ SSE๏ผˆServer-Sent Events๏ผ‰ๅ’Œ Streamable HTTP ๆšด้œฒ MCP ๅ่ฎฎ็ซฏ็‚นใ€‚่ฟ™ไฝฟๅพ— Dify ็ญ‰ๅนณๅฐๅฏไปฅ็›ดๆŽฅไฝฟ็”จ MCP ๅ่ฎฎ่ฟžๆŽฅใ€‚
129
+
130
+ **SSE ็ซฏ็‚น๏ผˆไผ ็ปŸๆ–นๅผ๏ผ‰๏ผš**
131
+ ```
132
+ GET http://localhost:3000/sse?type=mysql&host=localhost&port=3306&user=root&password=xxx&database=mydb
133
+ ```
134
+
135
+ **Streamable HTTP ็ซฏ็‚น๏ผˆMCP 2025 ่ง„่Œƒ๏ผŒๆŽจ่๏ผ‰๏ผš**
136
+ ```
137
+ POST http://localhost:3000/mcp
138
+ ่ฏทๆฑ‚ๅคด๏ผš
139
+ X-DB-Type: mysql
140
+ X-DB-Host: localhost
141
+ X-DB-Port: 3306
142
+ X-DB-User: root
143
+ X-DB-Password: your_password
144
+ X-DB-Database: your_database
145
+ ่ฏทๆฑ‚ไฝ“๏ผšMCP JSON-RPC ่ฏทๆฑ‚
146
+ ```
147
+
148
+ | ็ซฏ็‚น | ๆ–นๆณ• | ่ฏดๆ˜Ž |
149
+ |------|------|------|
150
+ | `/sse` | GET | ๅปบ็ซ‹ SSE ่ฟžๆŽฅ๏ผˆไผ ็ปŸๆ–นๅผ๏ผ‰ |
151
+ | `/sse/message` | POST | ๅ‘ SSE ไผš่ฏๅ‘้€ๆถˆๆฏ |
152
+ | `/mcp` | POST | Streamable HTTP ็ซฏ็‚น๏ผˆๆŽจ่๏ผ‰ |
153
+ | `/mcp` | GET | Streamable HTTP ็š„ SSE ๆต |
154
+ | `/mcp` | DELETE | ๅ…ณ้—ญไผš่ฏ |
155
+
156
+ ่ฏฆ็ป†้…็ฝฎ่ฏดๆ˜Ž่ฏทๅ‚้˜… [Dify ้›†ๆˆๆŒ‡ๅ—](./docs/integrations/DIFY.zh-CN.md)ใ€‚
157
+
126
158
  ## ๐Ÿ“Š ๆ”ฏๆŒ็š„ๆ•ฐๆฎๅบ“
127
159
 
128
160
  | ๆ•ฐๆฎๅบ“ | ็ฑปๅž‹ๅ‚ๆ•ฐ | ้ป˜่ฎค็ซฏๅฃ | ๅˆ†็ฑป |
@@ -148,29 +180,36 @@ curl http://localhost:3000/api/health
148
180
  ## ๐Ÿ—๏ธ ๆžถๆž„
149
181
 
150
182
  ```
151
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
152
- โ”‚ Universal DB MCP โ”‚
153
- โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
154
- โ”‚ โ”‚
155
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
156
- โ”‚ โ”‚ MCP ๆจกๅผ โ”‚ โ”‚ HTTP API ๆจกๅผ โ”‚ โ”‚
157
- โ”‚ โ”‚ (Claude Desktop)โ”‚ โ”‚ (Coze/n8n/Dify) โ”‚ โ”‚
158
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
159
- โ”‚ โ”‚ โ”‚ โ”‚
160
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
161
- โ”‚ โ–ผ โ”‚
162
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
163
- โ”‚ โ”‚ ๆ ธๅฟƒไธšๅŠก้€ป่พ‘ๅฑ‚ โ”‚ โ”‚
164
- โ”‚ โ”‚ โ€ข ๆŸฅ่ฏขๆ‰ง่กŒ โ€ข Schema ็ผ“ๅญ˜ โ”‚ โ”‚
165
- โ”‚ โ”‚ โ€ข ๅฎ‰ๅ…จๆ ก้ชŒ โ€ข ่ฟžๆŽฅ็ฎก็† โ”‚ โ”‚
166
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
167
- โ”‚ โ–ผ โ”‚
168
- โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
169
- โ”‚ โ”‚ ๆ•ฐๆฎๅบ“้€‚้…ๅ™จๅฑ‚ โ”‚ โ”‚
170
- โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚... โ”‚ โ”‚
171
- โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
172
- โ”‚ โ”‚
173
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
183
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
184
+ โ”‚ Universal DB MCP โ”‚
185
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
186
+ โ”‚ โ”‚
187
+ โ”‚ ๅฏๅŠจๆจกๅผ๏ผš โ”‚
188
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
189
+ โ”‚ โ”‚ stdio ๆจกๅผ โ”‚ http ๆจกๅผ โ”‚ โ”‚
190
+ โ”‚ โ”‚ (npm run start:mcp) โ”‚ (npm run start:http) โ”‚ โ”‚
191
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
192
+ โ”‚ โ”‚ โ”‚ โ”‚
193
+ โ”‚ ๆŽฅๅ…ฅๆ–นๅผ๏ผš โ”‚ โ”‚
194
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
195
+ โ”‚ โ”‚ MCP stdio โ”‚ โ”‚ MCP SSE โ”‚ MCP Streamable โ”‚ REST โ”‚ โ”‚
196
+ โ”‚ โ”‚ (Claude Desktop) โ”‚ โ”‚ (ไผ ็ปŸ) โ”‚ HTTP (ๆŽจ่) โ”‚ API โ”‚ โ”‚
197
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
198
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
199
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”˜ โ”‚
200
+ โ”‚ โ”‚ โ”‚
201
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
202
+ โ”‚ โ”‚ ๆ ธๅฟƒไธšๅŠก้€ป่พ‘ๅฑ‚ โ”‚ โ”‚
203
+ โ”‚ โ”‚ โ€ข ๆŸฅ่ฏขๆ‰ง่กŒ โ€ข Schema ็ผ“ๅญ˜ โ”‚ โ”‚
204
+ โ”‚ โ”‚ โ€ข ๅฎ‰ๅ…จๆ ก้ชŒ โ€ข ่ฟžๆŽฅ็ฎก็† โ”‚ โ”‚
205
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
206
+ โ”‚ โ–ผ โ”‚
207
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
208
+ โ”‚ โ”‚ ๆ•ฐๆฎๅบ“้€‚้…ๅ™จๅฑ‚ โ”‚ โ”‚
209
+ โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚ ... โ”‚ โ”‚
210
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
211
+ โ”‚ โ”‚
212
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
174
213
  ```
175
214
 
176
215
  ## ๐Ÿ”’ ๅฎ‰ๅ…จ
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/http/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/http/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -10,11 +10,17 @@ export async function authMiddleware(request, reply, config) {
10
10
  if (request.url === '/api/health' || request.url === '/api/info') {
11
11
  return;
12
12
  }
13
- // Get API key from header
13
+ // Get API key from header (supports both X-API-Key and Authorization Bearer)
14
14
  const apiKey = request.headers['x-api-key'] ||
15
15
  (request.headers.authorization?.startsWith('Bearer ')
16
16
  ? request.headers.authorization.substring(7)
17
17
  : null);
18
+ // Check if API keys are configured
19
+ const validKeys = config.http?.apiKeys || [];
20
+ // If no API keys configured, skip authentication (development mode)
21
+ if (validKeys.length === 0) {
22
+ return;
23
+ }
18
24
  if (!apiKey) {
19
25
  reply.code(401).send({
20
26
  success: false,
@@ -30,8 +36,7 @@ export async function authMiddleware(request, reply, config) {
30
36
  return;
31
37
  }
32
38
  // Validate API key
33
- const validKeys = config.http?.apiKeys || [];
34
- if (validKeys.length > 0 && !validKeys.includes(apiKey)) {
39
+ if (!validKeys.includes(apiKey)) {
35
40
  reply.code(403).send({
36
41
  success: false,
37
42
  error: {
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/http/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAuB,EACvB,KAAmB,EACnB,MAAiB;IAEjB,0CAA0C;IAC1C,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACjE,OAAO;IACT,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5B,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,2EAA2E;aACrF;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IAC7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAgB,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;aAC3B;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,yCAAyC;IACxC,OAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/http/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAuB,EACvB,KAAmB,EACnB,MAAiB;IAEjB,0CAA0C;IAC1C,IAAI,OAAO,CAAC,GAAG,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACjE,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5B,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,CAAC;IAEZ,mCAAmC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IAE7C,oEAAoE;IACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,2EAA2E;aACrF;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAgB,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;aAC3B;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,OAAO,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,yCAAyC;IACxC,OAAe,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAOrE;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -6,12 +6,15 @@ import { setupHealthRoutes } from './health.js';
6
6
  import { setupConnectionRoutes } from './connection.js';
7
7
  import { setupQueryRoutes } from './query.js';
8
8
  import { setupSchemaRoutes } from './schema.js';
9
+ import { setupMcpSseRoutes } from './mcp-sse.js';
9
10
  /**
10
11
  * Setup all routes
11
12
  */
12
13
  export async function setupRoutes(fastify, connectionManager) {
13
14
  // Health and info routes (no auth required)
14
15
  await setupHealthRoutes(fastify);
16
+ // MCP SSE routes (no auth required, uses its own session management)
17
+ await setupMcpSseRoutes(fastify);
15
18
  // Connection routes
16
19
  await setupConnectionRoutes(fastify, connectionManager);
17
20
  // Query routes
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAwB,EACxB,iBAAoC;IAEpC,4CAA4C;IAC5C,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjC,oBAAoB;IACpB,MAAM,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAExD,eAAe;IACf,MAAM,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAEnD,gBAAgB;IAChB,MAAM,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http/routes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAwB,EACxB,iBAAoC;IAEpC,4CAA4C;IAC5C,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjC,qEAAqE;IACrE,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEjC,oBAAoB;IACpB,MAAM,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAExD,eAAe;IACf,MAAM,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAEnD,gBAAgB;IAChB,MAAM,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MCP SSE Routes
3
+ * ๆไพ› MCP over SSE/Streamable HTTP ไผ ่พ“ๆ”ฏๆŒ
4
+ * ไฝฟ Dify ็ญ‰ๅนณๅฐๅฏไปฅ้€š่ฟ‡ MCP ๅ่ฎฎ็›ดๆŽฅ่ฐƒ็”จ
5
+ */
6
+ import type { FastifyInstance } from 'fastify';
7
+ /**
8
+ * ่ฎพ็ฝฎ MCP SSE ่ทฏ็”ฑ
9
+ */
10
+ export declare function setupMcpSseRoutes(fastify: FastifyInstance): Promise<void>;
11
+ //# sourceMappingURL=mcp-sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-sse.d.ts","sourceRoot":"","sources":["../../../src/http/routes/mcp-sse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AA4E7E;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiQ/E"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * MCP SSE Routes
3
+ * ๆไพ› MCP over SSE/Streamable HTTP ไผ ่พ“ๆ”ฏๆŒ
4
+ * ไฝฟ Dify ็ญ‰ๅนณๅฐๅฏไปฅ้€š่ฟ‡ MCP ๅ่ฎฎ็›ดๆŽฅ่ฐƒ็”จ
5
+ */
6
+ import { randomUUID } from 'node:crypto';
7
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
8
+ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
9
+ import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
10
+ import { DatabaseMCPServer } from '../../mcp/mcp-server.js';
11
+ import { createAdapter } from '../../utils/adapter-factory.js';
12
+ const SUPPORTED_DB_TYPES = [
13
+ 'mysql', 'postgres', 'redis', 'oracle', 'dm', 'sqlserver', 'mongodb', 'sqlite',
14
+ 'kingbase', 'gaussdb', 'oceanbase', 'tidb', 'clickhouse', 'polardb', 'vastbase', 'highgo', 'goldendb'
15
+ ];
16
+ // ๅญ˜ๅ‚จๆดป่ทƒ็š„ SSE ไผ ่พ“ๅฎžไพ‹๏ผˆๆŒ‰ sessionId๏ผ‰
17
+ const sseTransports = new Map();
18
+ // ๅญ˜ๅ‚จๆดป่ทƒ็š„ Streamable HTTP ไผ ่พ“ๅฎžไพ‹๏ผˆๆŒ‰ sessionId๏ผ‰
19
+ const streamableTransports = new Map();
20
+ // ๅญ˜ๅ‚จ MCP ๆœๅŠกๅ™จๅฎžไพ‹๏ผˆๆŒ‰ sessionId๏ผ‰
21
+ const mcpServers = new Map();
22
+ /**
23
+ * ้ชŒ่ฏๆ•ฐๆฎๅบ“็ฑปๅž‹
24
+ */
25
+ function isValidDbType(type) {
26
+ return SUPPORTED_DB_TYPES.includes(type);
27
+ }
28
+ /**
29
+ * ไปŽ่ฏทๆฑ‚ไธญ่งฃๆžๆ•ฐๆฎๅบ“้…็ฝฎ
30
+ */
31
+ function parseDbConfigFromQuery(query) {
32
+ const type = query.type;
33
+ if (!type || !isValidDbType(type))
34
+ return null;
35
+ return {
36
+ type,
37
+ host: query.host,
38
+ port: query.port ? parseInt(query.port, 10) : undefined,
39
+ user: query.user,
40
+ password: query.password,
41
+ database: query.database,
42
+ filePath: query.filePath,
43
+ allowWrite: query.allowWrite === 'true',
44
+ oracleClientPath: query.oracleClientPath,
45
+ };
46
+ }
47
+ /**
48
+ * ๅˆ›ๅปบๅนถๅˆๅง‹ๅŒ– MCP ๆœๅŠกๅ™จ
49
+ */
50
+ async function createMcpServer(config) {
51
+ const mcpServer = new DatabaseMCPServer(config);
52
+ const adapter = createAdapter(config);
53
+ mcpServer.setAdapter(adapter);
54
+ await mcpServer.connectDatabase();
55
+ return mcpServer;
56
+ }
57
+ /**
58
+ * ๆธ…็†ไผš่ฏ่ต„ๆบ
59
+ */
60
+ async function cleanupSession(sessionId) {
61
+ const mcpServer = mcpServers.get(sessionId);
62
+ if (mcpServer) {
63
+ await mcpServer.stop();
64
+ mcpServers.delete(sessionId);
65
+ }
66
+ sseTransports.delete(sessionId);
67
+ streamableTransports.delete(sessionId);
68
+ }
69
+ /**
70
+ * ่ฎพ็ฝฎ MCP SSE ่ทฏ็”ฑ
71
+ */
72
+ export async function setupMcpSseRoutes(fastify) {
73
+ /**
74
+ * SSE ็ซฏ็‚น - ็”จไบŽๅปบ็ซ‹ SSE ่ฟžๆŽฅ๏ผˆไผ ็ปŸ SSE ๆจกๅผ๏ผ‰
75
+ * GET /sse?type=mysql&host=localhost&port=3306&user=root&password=xxx&database=mydb
76
+ */
77
+ fastify.get('/sse', async (request, reply) => {
78
+ const query = request.query;
79
+ const config = parseDbConfigFromQuery(query);
80
+ if (!config) {
81
+ return reply.code(400).send({
82
+ success: false,
83
+ error: {
84
+ code: 'INVALID_CONFIG',
85
+ message: 'Missing required database configuration. Please provide at least "type" parameter.',
86
+ },
87
+ });
88
+ }
89
+ try {
90
+ // ๅˆ›ๅปบ MCP ๆœๅŠกๅ™จ
91
+ const mcpServer = await createMcpServer(config);
92
+ // ่Žทๅ–ๅŽŸๅง‹็š„ Node.js response ๅฏน่ฑก
93
+ const res = reply.raw;
94
+ // ๅˆ›ๅปบ SSE ไผ ่พ“
95
+ const transport = new SSEServerTransport('/sse/message', res);
96
+ const sessionId = transport.sessionId;
97
+ // ๅญ˜ๅ‚จๅฎžไพ‹
98
+ sseTransports.set(sessionId, transport);
99
+ mcpServers.set(sessionId, mcpServer);
100
+ // ่ฎพ็ฝฎๅ…ณ้—ญๅค„็†
101
+ transport.onclose = async () => {
102
+ console.error(`SSE session ${sessionId} closed`);
103
+ await cleanupSession(sessionId);
104
+ };
105
+ // ่ฟžๆŽฅ MCP ๆœๅŠกๅ™จๅˆฐไผ ่พ“ๅฑ‚๏ผˆconnect ไผš่‡ชๅŠจ่ฐƒ็”จ transport.start()๏ผ‰
106
+ await mcpServer.getServer().connect(transport);
107
+ console.error(`๐Ÿ”— SSE session started: ${sessionId}`);
108
+ // SSE ่ฟžๆŽฅ้œ€่ฆไฟๆŒๆ‰“ๅผ€๏ผŒไธ่ฟ”ๅ›žไปปไฝ•ๅ†…ๅฎน
109
+ // Fastify ไผš่‡ชๅŠจๅค„็†๏ผŒๅ› ไธบ response ๅทฒ็ป่ขซ SSE transport ๆŽฅ็ฎก
110
+ }
111
+ catch (error) {
112
+ const errorMessage = error instanceof Error ? error.message : String(error);
113
+ console.error(`โŒ SSE connection error: ${errorMessage}`);
114
+ // ๅชๆœ‰ๅœจ headers ่ฟ˜ๆฒกๅ‘้€ๆ—ถๆ‰่ฟ”ๅ›ž้”™่ฏฏ
115
+ if (!reply.raw.headersSent) {
116
+ return reply.code(500).send({
117
+ success: false,
118
+ error: {
119
+ code: 'CONNECTION_ERROR',
120
+ message: errorMessage,
121
+ },
122
+ });
123
+ }
124
+ }
125
+ });
126
+ /**
127
+ * SSE ๆถˆๆฏ็ซฏ็‚น - ๆŽฅๆ”ถๅฎขๆˆท็ซฏๅ‘้€็š„ๆถˆๆฏ๏ผˆไผ ็ปŸ SSE ๆจกๅผ๏ผ‰
128
+ * POST /sse/message?sessionId=xxx
129
+ */
130
+ fastify.post('/sse/message', async (request, reply) => {
131
+ const query = request.query;
132
+ const sessionId = query.sessionId;
133
+ if (!sessionId) {
134
+ return reply.code(400).send({
135
+ success: false,
136
+ error: {
137
+ code: 'MISSING_SESSION_ID',
138
+ message: 'Session ID is required',
139
+ },
140
+ });
141
+ }
142
+ const transport = sseTransports.get(sessionId);
143
+ if (!transport) {
144
+ return reply.code(404).send({
145
+ success: false,
146
+ error: {
147
+ code: 'SESSION_NOT_FOUND',
148
+ message: 'Session not found or expired',
149
+ },
150
+ });
151
+ }
152
+ try {
153
+ // ่Žทๅ–ๅŽŸๅง‹็š„ Node.js request/response ๅฏน่ฑก
154
+ const req = request.raw;
155
+ const res = reply.raw;
156
+ await transport.handlePostMessage(req, res, request.body);
157
+ }
158
+ catch (error) {
159
+ const errorMessage = error instanceof Error ? error.message : String(error);
160
+ console.error(`โŒ SSE message error: ${errorMessage}`);
161
+ return reply.code(500).send({
162
+ success: false,
163
+ error: {
164
+ code: 'MESSAGE_ERROR',
165
+ message: errorMessage,
166
+ },
167
+ });
168
+ }
169
+ });
170
+ /**
171
+ * Streamable HTTP ็ซฏ็‚น - MCP 2025 ๆ–ฐ่ง„่Œƒ
172
+ * POST /mcp
173
+ *
174
+ * ๆ•ฐๆฎๅบ“้…็ฝฎ้€š่ฟ‡่ฏทๆฑ‚ๅคดไผ ้€’๏ผš
175
+ * X-DB-Type, X-DB-Host, X-DB-Port, X-DB-User, X-DB-Password, X-DB-Database, X-DB-Allow-Write
176
+ */
177
+ fastify.post('/mcp', async (request, reply) => {
178
+ const headers = request.headers;
179
+ const body = request.body;
180
+ // ไปŽ่ฏทๆฑ‚ๅคด่งฃๆžๆ•ฐๆฎๅบ“็ฑปๅž‹
181
+ const dbType = headers['x-db-type'];
182
+ try {
183
+ // ๆฃ€ๆŸฅๆ˜ฏๅฆๆœ‰็Žฐๆœ‰ไผš่ฏ
184
+ const sessionId = headers['mcp-session-id'];
185
+ let transport;
186
+ if (sessionId && streamableTransports.has(sessionId)) {
187
+ // ๅค็”จ็Žฐๆœ‰ไผ ่พ“
188
+ transport = streamableTransports.get(sessionId);
189
+ }
190
+ else if (!sessionId && isInitializeRequest(body)) {
191
+ // ๆ–ฐ็š„ๅˆๅง‹ๅŒ–่ฏทๆฑ‚
192
+ if (!dbType || !isValidDbType(dbType)) {
193
+ return reply.code(400).send({
194
+ jsonrpc: '2.0',
195
+ error: {
196
+ code: -32000,
197
+ message: 'Missing or invalid database configuration. Please provide valid X-DB-Type header.',
198
+ },
199
+ id: null,
200
+ });
201
+ }
202
+ // ๆž„ๅปบๆ•ฐๆฎๅบ“้…็ฝฎ
203
+ const config = {
204
+ type: dbType,
205
+ host: headers['x-db-host'],
206
+ port: headers['x-db-port'] ? parseInt(headers['x-db-port'], 10) : undefined,
207
+ user: headers['x-db-user'],
208
+ password: headers['x-db-password'],
209
+ database: headers['x-db-database'],
210
+ filePath: headers['x-db-filepath'],
211
+ allowWrite: headers['x-db-allow-write'] === 'true',
212
+ oracleClientPath: headers['x-db-oracle-client-path'],
213
+ };
214
+ // ๅˆ›ๅปบ MCP ๆœๅŠกๅ™จ
215
+ const mcpServer = await createMcpServer(config);
216
+ // ๅˆ›ๅปบ Streamable HTTP ไผ ่พ“
217
+ transport = new StreamableHTTPServerTransport({
218
+ sessionIdGenerator: () => randomUUID(),
219
+ onsessioninitialized: (newSessionId) => {
220
+ console.error(`๐Ÿ”— MCP session initialized: ${newSessionId}`);
221
+ streamableTransports.set(newSessionId, transport);
222
+ mcpServers.set(newSessionId, mcpServer);
223
+ },
224
+ });
225
+ // ่ฟžๆŽฅ MCP ๆœๅŠกๅ™จๅˆฐไผ ่พ“ๅฑ‚๏ผˆไฝฟ็”จ getServer() ้ฟๅ…้‡ๅค่ฐƒ็”จ start๏ผ‰
226
+ await mcpServer.getServer().connect(transport);
227
+ // ๅค„็†่ฏทๆฑ‚
228
+ await transport.handleRequest(request.raw, reply.raw, body);
229
+ return;
230
+ }
231
+ else {
232
+ // ๆ— ๆ•ˆ่ฏทๆฑ‚
233
+ return reply.code(400).send({
234
+ jsonrpc: '2.0',
235
+ error: {
236
+ code: -32000,
237
+ message: 'Bad Request: No valid session ID provided',
238
+ },
239
+ id: null,
240
+ });
241
+ }
242
+ // ไฝฟ็”จ็Žฐๆœ‰ไผ ่พ“ๅค„็†่ฏทๆฑ‚
243
+ await transport.handleRequest(request.raw, reply.raw, body);
244
+ }
245
+ catch (error) {
246
+ const errorMessage = error instanceof Error ? error.message : String(error);
247
+ console.error(`โŒ MCP request error: ${errorMessage}`);
248
+ if (!reply.sent) {
249
+ return reply.code(500).send({
250
+ jsonrpc: '2.0',
251
+ error: {
252
+ code: -32603,
253
+ message: errorMessage,
254
+ },
255
+ id: null,
256
+ });
257
+ }
258
+ }
259
+ });
260
+ /**
261
+ * Streamable HTTP GET ็ซฏ็‚น - ็”จไบŽ SSE ๆต
262
+ * GET /mcp
263
+ */
264
+ fastify.get('/mcp', async (request, reply) => {
265
+ const sessionId = request.headers['mcp-session-id'];
266
+ if (!sessionId || !streamableTransports.has(sessionId)) {
267
+ return reply.code(400).send({
268
+ jsonrpc: '2.0',
269
+ error: {
270
+ code: -32000,
271
+ message: 'Bad Request: No valid session ID provided',
272
+ },
273
+ id: null,
274
+ });
275
+ }
276
+ const transport = streamableTransports.get(sessionId);
277
+ await transport.handleRequest(request.raw, reply.raw);
278
+ });
279
+ /**
280
+ * ๅˆ ้™คไผš่ฏ็ซฏ็‚น
281
+ * DELETE /mcp?sessionId=xxx
282
+ */
283
+ fastify.delete('/mcp', async (request, reply) => {
284
+ const query = request.query;
285
+ const sessionId = query.sessionId || request.headers['mcp-session-id'];
286
+ if (!sessionId) {
287
+ return reply.code(400).send({
288
+ success: false,
289
+ error: {
290
+ code: 'MISSING_SESSION_ID',
291
+ message: 'Session ID is required',
292
+ },
293
+ });
294
+ }
295
+ await cleanupSession(sessionId);
296
+ return reply.send({
297
+ success: true,
298
+ message: 'Session closed',
299
+ });
300
+ });
301
+ console.error('๐Ÿ“ก MCP SSE/Streamable HTTP routes registered');
302
+ }
303
+ //# sourceMappingURL=mcp-sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-sse.js","sourceRoot":"","sources":["../../../src/http/routes/mcp-sse.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  * MCP ๆ•ฐๆฎๅบ“ไธ‡่ƒฝ่ฟžๆŽฅๅ™จ - ไธปๆœๅŠกๅ™จ
4
4
  * ้€š่ฟ‡ Model Context Protocol ่ฎฉ Claude Desktop ่ฟžๆŽฅๆ•ฐๆฎๅบ“
5
5
  */
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
6
8
  import type { DbAdapter, DbConfig } from '../types/adapter.js';
7
9
  import { SchemaCacheConfig } from '../core/database-service.js';
8
10
  /**
@@ -24,7 +26,19 @@ export declare class DatabaseMCPServer {
24
26
  */
25
27
  setAdapter(adapter: DbAdapter): void;
26
28
  /**
27
- * ๅฏๅŠจๆœๅŠกๅ™จ
29
+ * ่Žทๅ– MCP Server ๅฎžไพ‹๏ผˆ็”จไบŽ SSE/HTTP ไผ ่พ“๏ผ‰
30
+ */
31
+ getServer(): Server;
32
+ /**
33
+ * ่ฟžๆŽฅๆ•ฐๆฎๅบ“๏ผˆไธๅฏๅŠจไผ ่พ“ๅฑ‚๏ผ‰
34
+ */
35
+ connectDatabase(): Promise<void>;
36
+ /**
37
+ * ไฝฟ็”จๆŒ‡ๅฎš็š„ไผ ่พ“ๅฑ‚่ฟžๆŽฅ MCP ๆœๅŠกๅ™จ
38
+ */
39
+ connect(transport: Transport): Promise<void>;
40
+ /**
41
+ * ๅฏๅŠจๆœๅŠกๅ™จ๏ผˆไฝฟ็”จ stdio ไผ ่พ“๏ผŒ็”จไบŽ Claude Desktop๏ผ‰
28
42
  */
29
43
  start(): Promise<void>;
30
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEjF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAA6B;gBAEpC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAkBtE;;OAEG;IACH,OAAO,CAAC,aAAa;IAoLrB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAKpC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAMnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAmB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEjF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAA6B;gBAEpC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAkBtE;;OAEG;IACH,OAAO,CAAC,aAAa;IAoLrB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAKpC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtC;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
@@ -200,11 +200,17 @@ export class DatabaseMCPServer {
200
200
  this.databaseService = new DatabaseService(adapter, this.config, this.cacheConfig);
201
201
  }
202
202
  /**
203
- * ๅฏๅŠจๆœๅŠกๅ™จ
203
+ * ่Žทๅ– MCP Server ๅฎžไพ‹๏ผˆ็”จไบŽ SSE/HTTP ไผ ่พ“๏ผ‰
204
204
  */
205
- async start() {
205
+ getServer() {
206
+ return this.server;
207
+ }
208
+ /**
209
+ * ่ฟžๆŽฅๆ•ฐๆฎๅบ“๏ผˆไธๅฏๅŠจไผ ่พ“ๅฑ‚๏ผ‰
210
+ */
211
+ async connectDatabase() {
206
212
  if (!this.adapter) {
207
- throw new Error('ๅฟ…้กปๅ…ˆ่ฎพ็ฝฎๆ•ฐๆฎๅบ“้€‚้…ๅ™จๆ‰่ƒฝๅฏๅŠจๆœๅŠกๅ™จ');
213
+ throw new Error('ๅฟ…้กปๅ…ˆ่ฎพ็ฝฎๆ•ฐๆฎๅบ“้€‚้…ๅ™จๆ‰่ƒฝ่ฟžๆŽฅๆ•ฐๆฎๅบ“');
208
214
  }
209
215
  // ่ฟžๆŽฅๆ•ฐๆฎๅบ“
210
216
  console.error('๐Ÿ”Œ ๆญฃๅœจ่ฟžๆŽฅๆ•ฐๆฎๅบ“...');
@@ -219,7 +225,19 @@ export class DatabaseMCPServer {
219
225
  }
220
226
  // ๆ˜พ็คบ็ผ“ๅญ˜้…็ฝฎ
221
227
  console.error('๐Ÿ“ฆ Schema ็ผ“ๅญ˜ๅทฒๅฏ็”จ (้ป˜่ฎค TTL: 5 ๅˆ†้’Ÿ)');
222
- // ๅฏๅŠจ MCP ๆœๅŠกๅ™จ
228
+ }
229
+ /**
230
+ * ไฝฟ็”จๆŒ‡ๅฎš็š„ไผ ่พ“ๅฑ‚่ฟžๆŽฅ MCP ๆœๅŠกๅ™จ
231
+ */
232
+ async connect(transport) {
233
+ await this.server.connect(transport);
234
+ }
235
+ /**
236
+ * ๅฏๅŠจๆœๅŠกๅ™จ๏ผˆไฝฟ็”จ stdio ไผ ่พ“๏ผŒ็”จไบŽ Claude Desktop๏ผ‰
237
+ */
238
+ async start() {
239
+ await this.connectDatabase();
240
+ // ๅฏๅŠจ MCP ๆœๅŠกๅ™จ๏ผˆstdio ๆจกๅผ๏ผ‰
223
241
  const transport = new StdioServerTransport();
224
242
  await this.server.connect(transport);
225
243
  console.error('๐Ÿš€ MCP ๆœๅŠกๅ™จๅทฒๅฏๅŠจ๏ผŒ็ญ‰ๅพ… Claude Desktop ่ฟžๆŽฅ...');
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-db-mcp",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "MCP ๆ•ฐๆฎๅบ“ไธ‡่ƒฝ่ฟžๆŽฅๅ™จ - ่ฎฉ Claude Desktop ็›ดๆŽฅ่ฟžๆŽฅไฝ ็š„ๆ•ฐๆฎๅบ“",
5
5
  "main": "dist/index.js",
6
6
  "bin": {