universal-db-mcp 2.5.0 โ†’ 2.6.1

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
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- A universal database connector implementing the Model Context Protocol (MCP) and HTTP API, enabling AI assistants to query and analyze your databases using natural language. Works with Claude Desktop, Cherry Studio, Coze, n8n, Dify, and more.
12
+ A universal database connector implementing the Model Context Protocol (MCP) and HTTP API, enabling AI assistants to query and analyze your databases using natural language. Works with Claude Desktop, Cursor, Windsurf, VS Code, ChatGPT, and 50+ other platforms.
13
13
  </p>
14
14
 
15
15
  <p align="center">
@@ -53,7 +53,8 @@ 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
+ - **55+ Platform Integrations** - Works with Claude Desktop, Cursor, VS Code, ChatGPT, Dify, and [50+ other platforms](#-supported-platforms)
57
+ - **Flexible Architecture** - 2 startup modes (stdio/http) with 4 access methods: MCP stdio, MCP SSE, MCP Streamable HTTP, and REST API
57
58
  - **Security First** - Read-only mode by default prevents accidental data modifications
58
59
  - **Intelligent Caching** - Schema caching with configurable TTL for blazing-fast performance
59
60
  - **Batch Query Optimization** - Up to 100x faster schema retrieval for large databases
@@ -123,6 +124,38 @@ npx universal-db-mcp
123
124
  curl http://localhost:3000/api/health
124
125
  ```
125
126
 
127
+ ### MCP SSE Mode (Dify and Remote Access)
128
+
129
+ 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.
130
+
131
+ **SSE Endpoint (Legacy):**
132
+ ```
133
+ GET http://localhost:3000/sse?type=mysql&host=localhost&port=3306&user=root&password=xxx&database=mydb
134
+ ```
135
+
136
+ **Streamable HTTP Endpoint (MCP 2025 Spec, Recommended):**
137
+ ```
138
+ POST http://localhost:3000/mcp
139
+ Headers:
140
+ X-DB-Type: mysql
141
+ X-DB-Host: localhost
142
+ X-DB-Port: 3306
143
+ X-DB-User: root
144
+ X-DB-Password: your_password
145
+ X-DB-Database: your_database
146
+ Body: MCP JSON-RPC request
147
+ ```
148
+
149
+ | Endpoint | Method | Description |
150
+ |----------|--------|-------------|
151
+ | `/sse` | GET | Establish SSE connection (legacy) |
152
+ | `/sse/message` | POST | Send message to SSE session |
153
+ | `/mcp` | POST | Streamable HTTP endpoint (recommended) |
154
+ | `/mcp` | GET | SSE stream for Streamable HTTP |
155
+ | `/mcp` | DELETE | Close session |
156
+
157
+ See [Dify Integration Guide](./docs/integrations/DIFY.md) for detailed setup instructions.
158
+
126
159
  ## ๐Ÿ“Š Supported Databases
127
160
 
128
161
  | Database | Type | Default Port | Category |
@@ -148,29 +181,60 @@ curl http://localhost:3000/api/health
148
181
  ## ๐Ÿ—๏ธ Architecture
149
182
 
150
183
  ```
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
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
184
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
185
+ โ”‚ Universal DB MCP โ”‚
186
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
187
+ โ”‚ โ”‚
188
+ โ”‚ Startup Modes: โ”‚
189
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
190
+ โ”‚ โ”‚ stdio mode โ”‚ http mode โ”‚ โ”‚
191
+ โ”‚ โ”‚ (npm run start:mcp) โ”‚ (npm run start:http) โ”‚ โ”‚
192
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
193
+ โ”‚ โ”‚ โ”‚ โ”‚
194
+ โ”‚ โ–ผ โ–ผ โ”‚
195
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
196
+ โ”‚ โ”‚ MCP Protocol โ”‚ โ”‚ HTTP Server โ”‚ โ”‚
197
+ โ”‚ โ”‚ (stdio transport) โ”‚ โ”‚ โ”‚ โ”‚
198
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
199
+ โ”‚ โ”‚ Tools: โ”‚ โ”‚ โ”‚ MCP Protocol โ”‚ โ”‚ โ”‚
200
+ โ”‚ โ”‚ โ€ข execute_query โ”‚ โ”‚ โ”‚ (SSE / Streamable HTTP) โ”‚ โ”‚ โ”‚
201
+ โ”‚ โ”‚ โ€ข get_schema โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
202
+ โ”‚ โ”‚ โ€ข get_table_info โ”‚ โ”‚ โ”‚ Tools: (same as stdio) โ”‚ โ”‚ โ”‚
203
+ โ”‚ โ”‚ โ€ข clear_cache โ”‚ โ”‚ โ”‚ โ€ข execute_query โ”‚ โ”‚ โ”‚
204
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข get_schema โ”‚ โ”‚ โ”‚
205
+ โ”‚ โ”‚ For: Claude Desktop, โ”‚ โ”‚ โ”‚ โ€ข get_table_info โ”‚ โ”‚ โ”‚
206
+ โ”‚ โ”‚ Cursor, etc. โ”‚ โ”‚ โ”‚ โ€ข clear_cache โ”‚ โ”‚ โ”‚
207
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
208
+ โ”‚ โ”‚ โ”‚ โ”‚ For: Dify, Remote Access โ”‚ โ”‚ โ”‚
209
+ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
210
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
211
+ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
212
+ โ”‚ โ”‚ โ”‚ โ”‚ REST API โ”‚ โ”‚ โ”‚
213
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
214
+ โ”‚ โ”‚ โ”‚ โ”‚ Endpoints: โ”‚ โ”‚ โ”‚
215
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/connect โ”‚ โ”‚ โ”‚
216
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/query โ”‚ โ”‚ โ”‚
217
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/schema โ”‚ โ”‚ โ”‚
218
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ... (10+ endpoints) โ”‚ โ”‚ โ”‚
219
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
220
+ โ”‚ โ”‚ โ”‚ โ”‚ For: Coze, n8n, Custom โ”‚ โ”‚ โ”‚
221
+ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
222
+ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
223
+ โ”‚ โ”‚ โ”‚ โ”‚
224
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
225
+ โ”‚ โ–ผ โ”‚
226
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
227
+ โ”‚ โ”‚ Core Business Logic โ”‚ โ”‚
228
+ โ”‚ โ”‚ โ€ข Query Execution โ€ข Schema Caching โ”‚ โ”‚
229
+ โ”‚ โ”‚ โ€ข Safety Validation โ€ข Connection Management โ”‚ โ”‚
230
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
231
+ โ”‚ โ–ผ โ”‚
232
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
233
+ โ”‚ โ”‚ Database Adapter Layer โ”‚ โ”‚
234
+ โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚ SQLite โ”‚ ... โ”‚ โ”‚
235
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
236
+ โ”‚ โ”‚
237
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
174
238
  ```
175
239
 
176
240
  ## ๐Ÿ”’ Security
@@ -189,6 +253,124 @@ To enable write operations (use with caution!):
189
253
  - Connect through VPN or bastion hosts
190
254
  - Regularly audit query logs
191
255
 
256
+ ## ๐Ÿ”Œ Supported Platforms
257
+
258
+ Universal DB MCP works with any platform that supports the MCP protocol or REST API. Here's a comprehensive list:
259
+
260
+ ### AI-Powered Code Editors & IDEs
261
+
262
+ | Platform | Access Method | Description | Guide |
263
+ |----------|---------------|-------------|-------|
264
+ | [Cursor](https://cursor.sh/) | MCP stdio | AI-powered code editor with built-in MCP support | [EN](./docs/integrations/CURSOR.md) / [ไธญๆ–‡](./docs/integrations/CURSOR.zh-CN.md) |
265
+ | [Windsurf](https://codeium.com/windsurf) | MCP stdio | Codeium's AI IDE with Cascade agent | [EN](./docs/integrations/WINDSURF.md) / [ไธญๆ–‡](./docs/integrations/WINDSURF.zh-CN.md) |
266
+ | [VS Code](https://code.visualstudio.com/) | MCP stdio / REST API | Via GitHub Copilot agent mode or Cline/Continue extensions | [EN](./docs/integrations/VSCODE.md) / [ไธญๆ–‡](./docs/integrations/VSCODE.zh-CN.md) |
267
+ | [Zed](https://zed.dev/) | MCP stdio | High-performance open-source code editor | [EN](./docs/integrations/ZED.md) / [ไธญๆ–‡](./docs/integrations/ZED.zh-CN.md) |
268
+ | [IntelliJ IDEA](https://www.jetbrains.com/idea/) | MCP stdio | JetBrains IDE with MCP support (2025.1+) | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
269
+ | [PyCharm](https://www.jetbrains.com/pycharm/) | MCP stdio | JetBrains Python IDE | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
270
+ | [WebStorm](https://www.jetbrains.com/webstorm/) | MCP stdio | JetBrains JavaScript IDE | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
271
+ | [Android Studio](https://developer.android.com/studio) | MCP stdio | Via JetBrains MCP plugin | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
272
+ | [Neovim](https://neovim.io/) | MCP stdio | Via MCPHub.nvim plugin | [EN](./docs/integrations/NEOVIM.md) / [ไธญๆ–‡](./docs/integrations/NEOVIM.zh-CN.md) |
273
+ | [Emacs](https://www.gnu.org/software/emacs/) | MCP stdio | Via mcp.el package | [EN](./docs/integrations/EMACS.md) / [ไธญๆ–‡](./docs/integrations/EMACS.zh-CN.md) |
274
+
275
+ ### AI Coding Assistants
276
+
277
+ | Platform | Access Method | Description | Guide |
278
+ |----------|---------------|-------------|-------|
279
+ | [Claude Code](https://claude.ai/code) | MCP stdio | Anthropic's agentic coding tool | [EN](./docs/integrations/CLAUDE-CODE.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-CODE.zh-CN.md) |
280
+ | [GitHub Copilot](https://github.com/features/copilot) | MCP stdio | Agent mode in VS Code/JetBrains | [EN](./docs/integrations/GITHUB-COPILOT.md) / [ไธญๆ–‡](./docs/integrations/GITHUB-COPILOT.zh-CN.md) |
281
+ | [Cline](https://github.com/cline/cline) | MCP stdio / REST API | Autonomous coding agent for VS Code | [EN](./docs/integrations/CLINE.md) / [ไธญๆ–‡](./docs/integrations/CLINE.zh-CN.md) |
282
+ | [Continue](https://continue.dev/) | MCP stdio | Open-source AI code assistant | [EN](./docs/integrations/CONTINUE.md) / [ไธญๆ–‡](./docs/integrations/CONTINUE.zh-CN.md) |
283
+ | [Roo Code](https://github.com/roovet/roo-code) | MCP stdio | Fork of Cline for VS Code | [EN](./docs/integrations/ROO-CODE.md) / [ไธญๆ–‡](./docs/integrations/ROO-CODE.zh-CN.md) |
284
+ | [Sourcegraph Cody](https://sourcegraph.com/cody) | MCP stdio | AI coding assistant | [EN](./docs/integrations/SOURCEGRAPH-CODY.md) / [ไธญๆ–‡](./docs/integrations/SOURCEGRAPH-CODY.zh-CN.md) |
285
+ | [Amazon Q Developer](https://aws.amazon.com/q/developer/) | MCP stdio | AWS AI coding assistant | [EN](./docs/integrations/AMAZON-Q-DEVELOPER.md) / [ไธญๆ–‡](./docs/integrations/AMAZON-Q-DEVELOPER.zh-CN.md) |
286
+ | [Devin](https://devin.ai/) | MCP stdio | AI software engineer | [EN](./docs/integrations/DEVIN.md) / [ไธญๆ–‡](./docs/integrations/DEVIN.zh-CN.md) |
287
+ | [Goose](https://github.com/block/goose) | MCP stdio | Block's AI coding agent | [EN](./docs/integrations/GOOSE.md) / [ไธญๆ–‡](./docs/integrations/GOOSE.zh-CN.md) |
288
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | MCP stdio | Google's command-line AI tool | [EN](./docs/integrations/GEMINI-CLI.md) / [ไธญๆ–‡](./docs/integrations/GEMINI-CLI.zh-CN.md) |
289
+
290
+ ### Desktop AI Chat Applications
291
+
292
+ | Platform | Access Method | Description | Guide |
293
+ |----------|---------------|-------------|-------|
294
+ | [Claude Desktop](https://claude.ai/download) | MCP stdio | Anthropic's official desktop app | [EN](./docs/integrations/CLAUDE-DESKTOP.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-DESKTOP.zh-CN.md) |
295
+ | [ChatGPT Desktop](https://openai.com/chatgpt/desktop/) | MCP SSE/Streamable HTTP | OpenAI's desktop app with MCP connectors | [EN](./docs/integrations/CHATGPT.md) / [ไธญๆ–‡](./docs/integrations/CHATGPT.zh-CN.md) |
296
+ | [Cherry Studio](https://github.com/kangfenmao/cherry-studio) | MCP stdio | Multi-model desktop chat app | [EN](./docs/integrations/CHERRY-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/CHERRY-STUDIO.zh-CN.md) |
297
+ | [LM Studio](https://lmstudio.ai/) | MCP stdio | Run local LLMs with MCP support | [EN](./docs/integrations/LM-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/LM-STUDIO.zh-CN.md) |
298
+ | [Jan](https://jan.ai/) | MCP stdio | Open-source ChatGPT alternative | [EN](./docs/integrations/JAN.md) / [ไธญๆ–‡](./docs/integrations/JAN.zh-CN.md) |
299
+ | [Msty](https://msty.app/) | MCP stdio | Desktop AI chat application | [EN](./docs/integrations/MSTY.md) / [ไธญๆ–‡](./docs/integrations/MSTY.zh-CN.md) |
300
+ | [LibreChat](https://github.com/danny-avila/LibreChat) | MCP stdio | Open-source chat interface | [EN](./docs/integrations/LIBRECHAT.md) / [ไธญๆ–‡](./docs/integrations/LIBRECHAT.zh-CN.md) |
301
+ | [Witsy](https://witsy.app/) | MCP stdio | Desktop AI assistant | [EN](./docs/integrations/WITSY.md) / [ไธญๆ–‡](./docs/integrations/WITSY.zh-CN.md) |
302
+ | [5ire](https://github.com/5ire-tech/5ire) | MCP stdio | Cross-platform AI chat | [EN](./docs/integrations/5IRE.md) / [ไธญๆ–‡](./docs/integrations/5IRE.zh-CN.md) |
303
+ | [ChatMCP](https://github.com/daodao97/chatmcp) | MCP stdio | MCP-focused chat UI | [EN](./docs/integrations/CHATMCP.md) / [ไธญๆ–‡](./docs/integrations/CHATMCP.zh-CN.md) |
304
+ | [HyperChat](https://github.com/BigSweetPotatoStudio/HyperChat) | MCP stdio | Multi-platform chat app | [EN](./docs/integrations/HYPERCHAT.md) / [ไธญๆ–‡](./docs/integrations/HYPERCHAT.zh-CN.md) |
305
+ | [Tome](https://github.com/runebook/tome) | MCP stdio | macOS app for local LLMs | [EN](./docs/integrations/TOME.md) / [ไธญๆ–‡](./docs/integrations/TOME.zh-CN.md) |
306
+
307
+ ### Web-Based AI Platforms
308
+
309
+ | Platform | Access Method | Description | Guide |
310
+ |----------|---------------|-------------|-------|
311
+ | [Claude.ai](https://claude.ai/) | MCP SSE/Streamable HTTP | Anthropic's web interface | [EN](./docs/integrations/CLAUDE-AI.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-AI.zh-CN.md) |
312
+ | [ChatGPT](https://chat.openai.com/) | MCP SSE/Streamable HTTP | Via custom connectors | [EN](./docs/integrations/CHATGPT.md) / [ไธญๆ–‡](./docs/integrations/CHATGPT.zh-CN.md) |
313
+ | [Dify](https://dify.ai/) | MCP SSE/Streamable HTTP | LLM app development platform | [EN](./docs/integrations/DIFY.md) / [ไธญๆ–‡](./docs/integrations/DIFY.zh-CN.md) |
314
+ | [Coze](https://www.coze.com/) | REST API | ByteDance's AI bot platform | [EN](./docs/integrations/COZE.md) / [ไธญๆ–‡](./docs/integrations/COZE.zh-CN.md) |
315
+ | [n8n](https://n8n.io/) | REST API / MCP | Workflow automation platform | [EN](./docs/integrations/N8N.md) / [ไธญๆ–‡](./docs/integrations/N8N.zh-CN.md) |
316
+ | [Replit](https://replit.com/) | MCP stdio | Online IDE with AI agent | [EN](./docs/integrations/REPLIT.md) / [ไธญๆ–‡](./docs/integrations/REPLIT.zh-CN.md) |
317
+ | [MindPal](https://mindpal.io/) | MCP SSE/Streamable HTTP | No-code AI agent builder | [EN](./docs/integrations/MINDPAL.md) / [ไธญๆ–‡](./docs/integrations/MINDPAL.zh-CN.md) |
318
+
319
+ ### Agent Frameworks & SDKs
320
+
321
+ | Platform | Access Method | Description | Guide |
322
+ |----------|---------------|-------------|-------|
323
+ | [LangChain](https://langchain.com/) | MCP stdio | Popular LLM framework | [EN](./docs/integrations/LANGCHAIN.md) / [ไธญๆ–‡](./docs/integrations/LANGCHAIN.zh-CN.md) |
324
+ | [Smolagents](https://github.com/huggingface/smolagents) | MCP stdio | Hugging Face agent library | [EN](./docs/integrations/SMOLAGENTS.md) / [ไธญๆ–‡](./docs/integrations/SMOLAGENTS.zh-CN.md) |
325
+ | [OpenAI Agents SDK](https://platform.openai.com/) | MCP SSE/Streamable HTTP | OpenAI's agent framework | [EN](./docs/integrations/OPENAI-AGENTS-SDK.md) / [ไธญๆ–‡](./docs/integrations/OPENAI-AGENTS-SDK.zh-CN.md) |
326
+ | [Amazon Bedrock Agents](https://aws.amazon.com/bedrock/) | MCP SSE/Streamable HTTP | AWS AI agent service | [EN](./docs/integrations/AMAZON-BEDROCK-AGENTS.md) / [ไธญๆ–‡](./docs/integrations/AMAZON-BEDROCK-AGENTS.zh-CN.md) |
327
+ | [Google ADK](https://cloud.google.com/) | MCP stdio | Google's Agent Development Kit | [EN](./docs/integrations/GOOGLE-ADK.md) / [ไธญๆ–‡](./docs/integrations/GOOGLE-ADK.zh-CN.md) |
328
+ | [Vercel AI SDK](https://sdk.vercel.ai/) | MCP stdio | Vercel's AI development kit | [EN](./docs/integrations/VERCEL-AI-SDK.md) / [ไธญๆ–‡](./docs/integrations/VERCEL-AI-SDK.zh-CN.md) |
329
+ | [Spring AI](https://spring.io/projects/spring-ai) | MCP stdio | Java/Spring AI framework | [EN](./docs/integrations/SPRING-AI.md) / [ไธญๆ–‡](./docs/integrations/SPRING-AI.zh-CN.md) |
330
+
331
+ ### CLI Tools & Terminal
332
+
333
+ | Platform | Access Method | Description | Guide |
334
+ |----------|---------------|-------------|-------|
335
+ | [Claude Code CLI](https://claude.ai/code) | MCP stdio | Terminal-based coding agent | [EN](./docs/integrations/CLAUDE-CODE.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-CODE.zh-CN.md) |
336
+ | [Warp](https://www.warp.dev/) | MCP stdio | AI-powered terminal | [EN](./docs/integrations/WARP.md) / [ไธญๆ–‡](./docs/integrations/WARP.zh-CN.md) |
337
+ | [Oterm](https://github.com/ggozad/oterm) | MCP stdio | Chat with Ollama via CLI | [EN](./docs/integrations/OTERM.md) / [ไธญๆ–‡](./docs/integrations/OTERM.zh-CN.md) |
338
+ | [MCPHost](https://github.com/mark3labs/mcphost) | MCP stdio | CLI chat with LLMs | [EN](./docs/integrations/MCPHOST.md) / [ไธญๆ–‡](./docs/integrations/MCPHOST.zh-CN.md) |
339
+
340
+ ### Productivity & Automation
341
+
342
+ | Platform | Access Method | Description | Guide |
343
+ |----------|---------------|-------------|-------|
344
+ | [Raycast](https://raycast.com/) | MCP stdio | macOS productivity launcher | [EN](./docs/integrations/RAYCAST.md) / [ไธญๆ–‡](./docs/integrations/RAYCAST.zh-CN.md) |
345
+ | [Notion](https://notion.so/) | MCP SSE/Streamable HTTP | Workspace with AI integration | [EN](./docs/integrations/NOTION.md) / [ไธญๆ–‡](./docs/integrations/NOTION.zh-CN.md) |
346
+ | [Obsidian](https://obsidian.md/) | MCP stdio | Via MCP Tools plugin | [EN](./docs/integrations/OBSIDIAN.md) / [ไธญๆ–‡](./docs/integrations/OBSIDIAN.zh-CN.md) |
347
+ | [Home Assistant](https://www.home-assistant.io/) | MCP stdio | Home automation platform | [EN](./docs/integrations/HOME-ASSISTANT.md) / [ไธญๆ–‡](./docs/integrations/HOME-ASSISTANT.zh-CN.md) |
348
+
349
+ ### Messaging Platform Integrations
350
+
351
+ | Platform | Access Method | Description | Guide |
352
+ |----------|---------------|-------------|-------|
353
+ | [Slack](https://slack.com/) | MCP stdio / REST API | Via Slack MCP bots | [EN](./docs/integrations/SLACK.md) / [ไธญๆ–‡](./docs/integrations/SLACK.zh-CN.md) |
354
+ | [Discord](https://discord.com/) | MCP stdio / REST API | Via Discord MCP bots | [EN](./docs/integrations/DISCORD.md) / [ไธญๆ–‡](./docs/integrations/DISCORD.zh-CN.md) |
355
+ | [Mattermost](https://mattermost.com/) | MCP stdio | Open-source messaging | [EN](./docs/integrations/MATTERMOST.md) / [ไธญๆ–‡](./docs/integrations/MATTERMOST.zh-CN.md) |
356
+
357
+ ### Local LLM Runners
358
+
359
+ | Platform | Access Method | Description | Guide |
360
+ |----------|---------------|-------------|-------|
361
+ | [Ollama](https://ollama.ai/) | MCP stdio | Run local LLMs | [EN](./docs/integrations/OLLAMA.md) / [ไธญๆ–‡](./docs/integrations/OLLAMA.zh-CN.md) |
362
+ | [LM Studio](https://lmstudio.ai/) | MCP stdio | Local LLM desktop app | [EN](./docs/integrations/LM-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/LM-STUDIO.zh-CN.md) |
363
+ | [Jan](https://jan.ai/) | MCP stdio | Offline ChatGPT alternative | [EN](./docs/integrations/JAN.md) / [ไธญๆ–‡](./docs/integrations/JAN.zh-CN.md) |
364
+
365
+ ### Development & Testing Tools
366
+
367
+ | Platform | Access Method | Description | Guide |
368
+ |----------|---------------|-------------|-------|
369
+ | [MCP Inspector](https://github.com/modelcontextprotocol/inspector) | MCP stdio | Official MCP debugging tool | [EN](./docs/integrations/MCP-INSPECTOR.md) / [ไธญๆ–‡](./docs/integrations/MCP-INSPECTOR.zh-CN.md) |
370
+ | [Postman](https://postman.com/) | REST API / MCP | API testing platform | [EN](./docs/integrations/POSTMAN.md) / [ไธญๆ–‡](./docs/integrations/POSTMAN.zh-CN.md) |
371
+
372
+ > **Note**: Any MCP-compatible client can connect via stdio (local) or SSE/Streamable HTTP (remote). Any HTTP client can use the REST API.
373
+
192
374
  ## ๐Ÿ“š Documentation
193
375
 
194
376
  ### Getting Started
@@ -214,9 +396,45 @@ To enable write operations (use with caution!):
214
396
  - [Deployment Guide](./docs/http-api/DEPLOYMENT.md)
215
397
 
216
398
  ### Integrations
217
- - [Coze Integration](./docs/integrations/COZE.md)
218
- - [n8n Integration](./docs/integrations/N8N.md)
219
- - [Dify Integration](./docs/integrations/DIFY.md)
399
+
400
+ **AI Editors & IDEs:**
401
+ [Cursor](./docs/integrations/CURSOR.md) |
402
+ [VS Code](./docs/integrations/VSCODE.md) |
403
+ [JetBrains](./docs/integrations/JETBRAINS.md) |
404
+ [Windsurf](./docs/integrations/WINDSURF.md) |
405
+ [Zed](./docs/integrations/ZED.md) |
406
+ [Neovim](./docs/integrations/NEOVIM.md) |
407
+ [Emacs](./docs/integrations/EMACS.md)
408
+
409
+ **AI Assistants:**
410
+ [Claude Desktop](./docs/integrations/CLAUDE-DESKTOP.md) |
411
+ [Claude Code](./docs/integrations/CLAUDE-CODE.md) |
412
+ [GitHub Copilot](./docs/integrations/GITHUB-COPILOT.md) |
413
+ [Cline](./docs/integrations/CLINE.md) |
414
+ [Continue](./docs/integrations/CONTINUE.md)
415
+
416
+ **AI Platforms:**
417
+ [Dify](./docs/integrations/DIFY.md) |
418
+ [Coze](./docs/integrations/COZE.md) |
419
+ [n8n](./docs/integrations/N8N.md) |
420
+ [ChatGPT](./docs/integrations/CHATGPT.md) |
421
+ [LangChain](./docs/integrations/LANGCHAIN.md)
422
+
423
+ **Desktop Apps:**
424
+ [Cherry Studio](./docs/integrations/CHERRY-STUDIO.md) |
425
+ [LM Studio](./docs/integrations/LM-STUDIO.md) |
426
+ [Jan](./docs/integrations/JAN.md) |
427
+ [Ollama](./docs/integrations/OLLAMA.md)
428
+
429
+ **Messaging:**
430
+ [Slack](./docs/integrations/SLACK.md) |
431
+ [Discord](./docs/integrations/DISCORD.md)
432
+
433
+ **Tools:**
434
+ [MCP Inspector](./docs/integrations/MCP-INSPECTOR.md) |
435
+ [Postman](./docs/integrations/POSTMAN.md)
436
+
437
+ > ๐Ÿ“ [View all 55 integration guides](./docs/integrations/) | ไธญๆ–‡็‰ˆๆœฌ่ฏทๅœจๅฏนๅบ”ๆ–‡ๆกฃๅๅŽๅŠ  `.zh-CN`
220
438
 
221
439
  ### Advanced
222
440
  - [Security Guide](./docs/guides/security.md)
package/README.zh-CN.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- ไธ€ไธชๅฎž็Žฐไบ†ๆจกๅž‹ไธŠไธ‹ๆ–‡ๅ่ฎฎ๏ผˆMCP๏ผ‰ๅ’Œ HTTP API ็š„้€š็”จๆ•ฐๆฎๅบ“่ฟžๆŽฅๅ™จ๏ผŒ่ฎฉ AI ๅŠฉๆ‰‹่ƒฝๅคŸไฝฟ็”จ่‡ช็„ถ่ฏญ่จ€ๆŸฅ่ฏขๅ’Œๅˆ†ๆžไฝ ็š„ๆ•ฐๆฎๅบ“ใ€‚ๆ”ฏๆŒ Claude Desktopใ€Cherry Studioใ€Cozeใ€n8nใ€Dify ็ญ‰ๅนณๅฐใ€‚
12
+ ไธ€ไธชๅฎž็Žฐไบ†ๆจกๅž‹ไธŠไธ‹ๆ–‡ๅ่ฎฎ๏ผˆMCP๏ผ‰ๅ’Œ HTTP API ็š„้€š็”จๆ•ฐๆฎๅบ“่ฟžๆŽฅๅ™จ๏ผŒ่ฎฉ AI ๅŠฉๆ‰‹่ƒฝๅคŸไฝฟ็”จ่‡ช็„ถ่ฏญ่จ€ๆŸฅ่ฏขๅ’Œๅˆ†ๆžไฝ ็š„ๆ•ฐๆฎๅบ“ใ€‚ๆ”ฏๆŒ Claude Desktopใ€Cursorใ€Windsurfใ€VS Codeใ€ChatGPT ็ญ‰ 50+ ๅนณๅฐใ€‚
13
13
  </p>
14
14
 
15
15
  <p align="center">
@@ -53,7 +53,8 @@ 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
+ - **้€‚้… 55+ ๅนณๅฐ** - ๆ”ฏๆŒ Claude Desktopใ€Cursorใ€VS Codeใ€ChatGPTใ€Dify ็ญ‰ [50+ ๅนณๅฐ](#-ๆ”ฏๆŒ็š„ๅนณๅฐ)
57
+ - **็ตๆดปๆžถๆž„** - 2 ็งๅฏๅŠจๆจกๅผ๏ผˆstdio/http๏ผ‰๏ผŒ4 ็งๆŽฅๅ…ฅๆ–นๅผ๏ผšMCP stdioใ€MCP SSEใ€MCP Streamable HTTPใ€REST API
57
58
  - **ๅฎ‰ๅ…จ็ฌฌไธ€** - ้ป˜่ฎคๅช่ฏปๆจกๅผ๏ผŒ้˜ฒๆญขๆ„ๅค–็š„ๆ•ฐๆฎไฟฎๆ”น
58
59
  - **ๆ™บ่ƒฝ็ผ“ๅญ˜** - Schema ็ผ“ๅญ˜ๆ”ฏๆŒๅฏ้…็ฝฎ็š„ TTL๏ผŒๆ€ง่ƒฝๆž้€Ÿ
59
60
  - **ๆ‰น้‡ๆŸฅ่ฏขไผ˜ๅŒ–** - ๅคงๅž‹ๆ•ฐๆฎๅบ“็š„ Schema ่Žทๅ–้€Ÿๅบฆๆๅ‡้ซ˜่พพ 100 ๅ€
@@ -123,6 +124,38 @@ npx universal-db-mcp
123
124
  curl http://localhost:3000/api/health
124
125
  ```
125
126
 
127
+ ### MCP SSE ๆจกๅผ๏ผˆDify ๅ’Œ่ฟœ็จ‹่ฎฟ้—ฎ๏ผ‰
128
+
129
+ ๅœจ HTTP ๆจกๅผไธ‹่ฟ่กŒๆ—ถ๏ผŒๆœๅŠกๅ™จ่ฟ˜ไผš้€š่ฟ‡ SSE๏ผˆServer-Sent Events๏ผ‰ๅ’Œ Streamable HTTP ๆšด้œฒ MCP ๅ่ฎฎ็ซฏ็‚นใ€‚่ฟ™ไฝฟๅพ— Dify ็ญ‰ๅนณๅฐๅฏไปฅ็›ดๆŽฅไฝฟ็”จ MCP ๅ่ฎฎ่ฟžๆŽฅใ€‚
130
+
131
+ **SSE ็ซฏ็‚น๏ผˆไผ ็ปŸๆ–นๅผ๏ผ‰๏ผš**
132
+ ```
133
+ GET http://localhost:3000/sse?type=mysql&host=localhost&port=3306&user=root&password=xxx&database=mydb
134
+ ```
135
+
136
+ **Streamable HTTP ็ซฏ็‚น๏ผˆMCP 2025 ่ง„่Œƒ๏ผŒๆŽจ่๏ผ‰๏ผš**
137
+ ```
138
+ POST http://localhost:3000/mcp
139
+ ่ฏทๆฑ‚ๅคด๏ผš
140
+ X-DB-Type: mysql
141
+ X-DB-Host: localhost
142
+ X-DB-Port: 3306
143
+ X-DB-User: root
144
+ X-DB-Password: your_password
145
+ X-DB-Database: your_database
146
+ ่ฏทๆฑ‚ไฝ“๏ผšMCP JSON-RPC ่ฏทๆฑ‚
147
+ ```
148
+
149
+ | ็ซฏ็‚น | ๆ–นๆณ• | ่ฏดๆ˜Ž |
150
+ |------|------|------|
151
+ | `/sse` | GET | ๅปบ็ซ‹ SSE ่ฟžๆŽฅ๏ผˆไผ ็ปŸๆ–นๅผ๏ผ‰ |
152
+ | `/sse/message` | POST | ๅ‘ SSE ไผš่ฏๅ‘้€ๆถˆๆฏ |
153
+ | `/mcp` | POST | Streamable HTTP ็ซฏ็‚น๏ผˆๆŽจ่๏ผ‰ |
154
+ | `/mcp` | GET | Streamable HTTP ็š„ SSE ๆต |
155
+ | `/mcp` | DELETE | ๅ…ณ้—ญไผš่ฏ |
156
+
157
+ ่ฏฆ็ป†้…็ฝฎ่ฏดๆ˜Ž่ฏทๅ‚้˜… [Dify ้›†ๆˆๆŒ‡ๅ—](./docs/integrations/DIFY.zh-CN.md)ใ€‚
158
+
126
159
  ## ๐Ÿ“Š ๆ”ฏๆŒ็š„ๆ•ฐๆฎๅบ“
127
160
 
128
161
  | ๆ•ฐๆฎๅบ“ | ็ฑปๅž‹ๅ‚ๆ•ฐ | ้ป˜่ฎค็ซฏๅฃ | ๅˆ†็ฑป |
@@ -148,29 +181,60 @@ curl http://localhost:3000/api/health
148
181
  ## ๐Ÿ—๏ธ ๆžถๆž„
149
182
 
150
183
  ```
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
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
184
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
185
+ โ”‚ Universal DB MCP โ”‚
186
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
187
+ โ”‚ โ”‚
188
+ โ”‚ ๅฏๅŠจๆจกๅผ๏ผš โ”‚
189
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
190
+ โ”‚ โ”‚ stdio ๆจกๅผ โ”‚ http ๆจกๅผ โ”‚ โ”‚
191
+ โ”‚ โ”‚ (npm run start:mcp) โ”‚ (npm run start:http) โ”‚ โ”‚
192
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
193
+ โ”‚ โ”‚ โ”‚ โ”‚
194
+ โ”‚ โ–ผ โ–ผ โ”‚
195
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
196
+ โ”‚ โ”‚ MCP ๅ่ฎฎ โ”‚ โ”‚ HTTP ๆœๅŠกๅ™จ โ”‚ โ”‚
197
+ โ”‚ โ”‚ (stdio ไผ ่พ“) โ”‚ โ”‚ โ”‚ โ”‚
198
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
199
+ โ”‚ โ”‚ ๅทฅๅ…ท๏ผš โ”‚ โ”‚ โ”‚ MCP ๅ่ฎฎ โ”‚ โ”‚ โ”‚
200
+ โ”‚ โ”‚ โ€ข execute_query โ”‚ โ”‚ โ”‚ (SSE / Streamable HTTP) โ”‚ โ”‚ โ”‚
201
+ โ”‚ โ”‚ โ€ข get_schema โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
202
+ โ”‚ โ”‚ โ€ข get_table_info โ”‚ โ”‚ โ”‚ ๅทฅๅ…ท๏ผš๏ผˆไธŽ stdio ็›ธๅŒ๏ผ‰ โ”‚ โ”‚ โ”‚
203
+ โ”‚ โ”‚ โ€ข clear_cache โ”‚ โ”‚ โ”‚ โ€ข execute_query โ”‚ โ”‚ โ”‚
204
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข get_schema โ”‚ โ”‚ โ”‚
205
+ โ”‚ โ”‚ ้€‚็”จ๏ผšClaude Desktop, โ”‚ โ”‚ โ”‚ โ€ข get_table_info โ”‚ โ”‚ โ”‚
206
+ โ”‚ โ”‚ Cursor ็ญ‰ โ”‚ โ”‚ โ”‚ โ€ข clear_cache โ”‚ โ”‚ โ”‚
207
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
208
+ โ”‚ โ”‚ โ”‚ โ”‚ ้€‚็”จ๏ผšDifyใ€่ฟœ็จ‹่ฎฟ้—ฎ โ”‚ โ”‚ โ”‚
209
+ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
210
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
211
+ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
212
+ โ”‚ โ”‚ โ”‚ โ”‚ REST API โ”‚ โ”‚ โ”‚
213
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
214
+ โ”‚ โ”‚ โ”‚ โ”‚ ็ซฏ็‚น๏ผš โ”‚ โ”‚ โ”‚
215
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/connect โ”‚ โ”‚ โ”‚
216
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/query โ”‚ โ”‚ โ”‚
217
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข /api/schema โ”‚ โ”‚ โ”‚
218
+ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข ...๏ผˆ10+ ็ซฏ็‚น๏ผ‰ โ”‚ โ”‚ โ”‚
219
+ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
220
+ โ”‚ โ”‚ โ”‚ โ”‚ ้€‚็”จ๏ผšCozeใ€n8nใ€่‡ชๅฎšไน‰ โ”‚ โ”‚ โ”‚
221
+ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
222
+ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
223
+ โ”‚ โ”‚ โ”‚ โ”‚
224
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
225
+ โ”‚ โ–ผ โ”‚
226
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
227
+ โ”‚ โ”‚ ๆ ธๅฟƒไธšๅŠก้€ป่พ‘ๅฑ‚ โ”‚ โ”‚
228
+ โ”‚ โ”‚ โ€ข ๆŸฅ่ฏขๆ‰ง่กŒ โ€ข Schema ็ผ“ๅญ˜ โ”‚ โ”‚
229
+ โ”‚ โ”‚ โ€ข ๅฎ‰ๅ…จๆ ก้ชŒ โ€ข ่ฟžๆŽฅ็ฎก็† โ”‚ โ”‚
230
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
231
+ โ”‚ โ–ผ โ”‚
232
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
233
+ โ”‚ โ”‚ ๆ•ฐๆฎๅบ“้€‚้…ๅ™จๅฑ‚ โ”‚ โ”‚
234
+ โ”‚ โ”‚ MySQL โ”‚ PostgreSQL โ”‚ Redis โ”‚ Oracle โ”‚ MongoDB โ”‚ SQLite โ”‚ ... โ”‚ โ”‚
235
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
236
+ โ”‚ โ”‚
237
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
174
238
  ```
175
239
 
176
240
  ## ๐Ÿ”’ ๅฎ‰ๅ…จ
@@ -189,6 +253,124 @@ curl http://localhost:3000/api/health
189
253
  - ้€š่ฟ‡ VPN ๆˆ–่ทณๆฟๆœบ่ฟžๆŽฅ
190
254
  - ๅฎšๆœŸๅฎก่ฎกๆŸฅ่ฏขๆ—ฅๅฟ—
191
255
 
256
+ ## ๐Ÿ”Œ ๆ”ฏๆŒ็š„ๅนณๅฐ
257
+
258
+ Universal DB MCP ๅฏไธŽไปปไฝ•ๆ”ฏๆŒ MCP ๅ่ฎฎๆˆ– REST API ็š„ๅนณๅฐ้…ๅˆไฝฟ็”จใ€‚ไปฅไธ‹ๆ˜ฏๅฎŒๆ•ดๅˆ—่กจ๏ผš
259
+
260
+ ### AI ไปฃ็ ็ผ–่พ‘ๅ™จ & IDE
261
+
262
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
263
+ |------|----------|------|----------|
264
+ | [Cursor](https://cursor.sh/) | MCP stdio | ๅ†…็ฝฎ MCP ๆ”ฏๆŒ็š„ AI ไปฃ็ ็ผ–่พ‘ๅ™จ | [EN](./docs/integrations/CURSOR.md) / [ไธญๆ–‡](./docs/integrations/CURSOR.zh-CN.md) |
265
+ | [Windsurf](https://codeium.com/windsurf) | MCP stdio | Codeium ็š„ AI IDE๏ผŒๅธฆ Cascade ๆ™บ่ƒฝไฝ“ | [EN](./docs/integrations/WINDSURF.md) / [ไธญๆ–‡](./docs/integrations/WINDSURF.zh-CN.md) |
266
+ | [VS Code](https://code.visualstudio.com/) | MCP stdio / REST API | ้€š่ฟ‡ GitHub Copilot ไปฃ็†ๆจกๅผๆˆ– Cline/Continue ๆ‰ฉๅฑ• | [EN](./docs/integrations/VSCODE.md) / [ไธญๆ–‡](./docs/integrations/VSCODE.zh-CN.md) |
267
+ | [Zed](https://zed.dev/) | MCP stdio | ้ซ˜ๆ€ง่ƒฝๅผ€ๆบไปฃ็ ็ผ–่พ‘ๅ™จ | [EN](./docs/integrations/ZED.md) / [ไธญๆ–‡](./docs/integrations/ZED.zh-CN.md) |
268
+ | [IntelliJ IDEA](https://www.jetbrains.com/idea/) | MCP stdio | JetBrains IDE๏ผŒๆ”ฏๆŒ MCP๏ผˆ2025.1+๏ผ‰ | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
269
+ | [PyCharm](https://www.jetbrains.com/pycharm/) | MCP stdio | JetBrains Python IDE | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
270
+ | [WebStorm](https://www.jetbrains.com/webstorm/) | MCP stdio | JetBrains JavaScript IDE | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
271
+ | [Android Studio](https://developer.android.com/studio) | MCP stdio | ้€š่ฟ‡ JetBrains MCP ๆ’ไปถ | [EN](./docs/integrations/JETBRAINS.md) / [ไธญๆ–‡](./docs/integrations/JETBRAINS.zh-CN.md) |
272
+ | [Neovim](https://neovim.io/) | MCP stdio | ้€š่ฟ‡ MCPHub.nvim ๆ’ไปถ | [EN](./docs/integrations/NEOVIM.md) / [ไธญๆ–‡](./docs/integrations/NEOVIM.zh-CN.md) |
273
+ | [Emacs](https://www.gnu.org/software/emacs/) | MCP stdio | ้€š่ฟ‡ mcp.el ๅŒ… | [EN](./docs/integrations/EMACS.md) / [ไธญๆ–‡](./docs/integrations/EMACS.zh-CN.md) |
274
+
275
+ ### AI ็ผ–็จ‹ๅŠฉๆ‰‹
276
+
277
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
278
+ |------|----------|------|----------|
279
+ | [Claude Code](https://claude.ai/code) | MCP stdio | Anthropic ็š„ๆ™บ่ƒฝ็ผ–็จ‹ๅทฅๅ…ท | [EN](./docs/integrations/CLAUDE-CODE.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-CODE.zh-CN.md) |
280
+ | [GitHub Copilot](https://github.com/features/copilot) | MCP stdio | VS Code/JetBrains ไธญ็š„ไปฃ็†ๆจกๅผ | [EN](./docs/integrations/GITHUB-COPILOT.md) / [ไธญๆ–‡](./docs/integrations/GITHUB-COPILOT.zh-CN.md) |
281
+ | [Cline](https://github.com/cline/cline) | MCP stdio / REST API | VS Code ่‡ชไธป็ผ–็จ‹ๆ™บ่ƒฝไฝ“ | [EN](./docs/integrations/CLINE.md) / [ไธญๆ–‡](./docs/integrations/CLINE.zh-CN.md) |
282
+ | [Continue](https://continue.dev/) | MCP stdio | ๅผ€ๆบ AI ไปฃ็ ๅŠฉๆ‰‹ | [EN](./docs/integrations/CONTINUE.md) / [ไธญๆ–‡](./docs/integrations/CONTINUE.zh-CN.md) |
283
+ | [Roo Code](https://github.com/roovet/roo-code) | MCP stdio | Cline ็š„ VS Code ๅˆ†ๆ”ฏ | [EN](./docs/integrations/ROO-CODE.md) / [ไธญๆ–‡](./docs/integrations/ROO-CODE.zh-CN.md) |
284
+ | [Sourcegraph Cody](https://sourcegraph.com/cody) | MCP stdio | AI ็ผ–็จ‹ๅŠฉๆ‰‹ | [EN](./docs/integrations/SOURCEGRAPH-CODY.md) / [ไธญๆ–‡](./docs/integrations/SOURCEGRAPH-CODY.zh-CN.md) |
285
+ | [Amazon Q Developer](https://aws.amazon.com/q/developer/) | MCP stdio | AWS AI ็ผ–็จ‹ๅŠฉๆ‰‹ | [EN](./docs/integrations/AMAZON-Q-DEVELOPER.md) / [ไธญๆ–‡](./docs/integrations/AMAZON-Q-DEVELOPER.zh-CN.md) |
286
+ | [Devin](https://devin.ai/) | MCP stdio | AI ่ฝฏไปถๅทฅ็จ‹ๅธˆ | [EN](./docs/integrations/DEVIN.md) / [ไธญๆ–‡](./docs/integrations/DEVIN.zh-CN.md) |
287
+ | [Goose](https://github.com/block/goose) | MCP stdio | Block ็š„ AI ็ผ–็จ‹ๆ™บ่ƒฝไฝ“ | [EN](./docs/integrations/GOOSE.md) / [ไธญๆ–‡](./docs/integrations/GOOSE.zh-CN.md) |
288
+ | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | MCP stdio | Google ๅ‘ฝไปค่กŒ AI ๅทฅๅ…ท | [EN](./docs/integrations/GEMINI-CLI.md) / [ไธญๆ–‡](./docs/integrations/GEMINI-CLI.zh-CN.md) |
289
+
290
+ ### ๆกŒ้ข AI ่Šๅคฉๅบ”็”จ
291
+
292
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
293
+ |------|----------|------|----------|
294
+ | [Claude Desktop](https://claude.ai/download) | MCP stdio | Anthropic ๅฎ˜ๆ–นๆกŒ้ขๅบ”็”จ | [EN](./docs/integrations/CLAUDE-DESKTOP.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-DESKTOP.zh-CN.md) |
295
+ | [ChatGPT Desktop](https://openai.com/chatgpt/desktop/) | MCP SSE/Streamable HTTP | OpenAI ๆกŒ้ขๅบ”็”จ๏ผŒๆ”ฏๆŒ MCP ่ฟžๆŽฅๅ™จ | [EN](./docs/integrations/CHATGPT.md) / [ไธญๆ–‡](./docs/integrations/CHATGPT.zh-CN.md) |
296
+ | [Cherry Studio](https://github.com/kangfenmao/cherry-studio) | MCP stdio | ๅคšๆจกๅž‹ๆกŒ้ข่Šๅคฉๅบ”็”จ | [EN](./docs/integrations/CHERRY-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/CHERRY-STUDIO.zh-CN.md) |
297
+ | [LM Studio](https://lmstudio.ai/) | MCP stdio | ๆœฌๅœฐ่ฟ่กŒ LLM๏ผŒๆ”ฏๆŒ MCP | [EN](./docs/integrations/LM-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/LM-STUDIO.zh-CN.md) |
298
+ | [Jan](https://jan.ai/) | MCP stdio | ๅผ€ๆบ ChatGPT ๆ›ฟไปฃๅ“ | [EN](./docs/integrations/JAN.md) / [ไธญๆ–‡](./docs/integrations/JAN.zh-CN.md) |
299
+ | [Msty](https://msty.app/) | MCP stdio | ๆกŒ้ข AI ่Šๅคฉๅบ”็”จ | [EN](./docs/integrations/MSTY.md) / [ไธญๆ–‡](./docs/integrations/MSTY.zh-CN.md) |
300
+ | [LibreChat](https://github.com/danny-avila/LibreChat) | MCP stdio | ๅผ€ๆบ่Šๅคฉ็•Œ้ข | [EN](./docs/integrations/LIBRECHAT.md) / [ไธญๆ–‡](./docs/integrations/LIBRECHAT.zh-CN.md) |
301
+ | [Witsy](https://witsy.app/) | MCP stdio | ๆกŒ้ข AI ๅŠฉๆ‰‹ | [EN](./docs/integrations/WITSY.md) / [ไธญๆ–‡](./docs/integrations/WITSY.zh-CN.md) |
302
+ | [5ire](https://github.com/5ire-tech/5ire) | MCP stdio | ่ทจๅนณๅฐ AI ่Šๅคฉ | [EN](./docs/integrations/5IRE.md) / [ไธญๆ–‡](./docs/integrations/5IRE.zh-CN.md) |
303
+ | [ChatMCP](https://github.com/daodao97/chatmcp) | MCP stdio | MCP ไธ“็”จ่Šๅคฉ็•Œ้ข | [EN](./docs/integrations/CHATMCP.md) / [ไธญๆ–‡](./docs/integrations/CHATMCP.zh-CN.md) |
304
+ | [HyperChat](https://github.com/BigSweetPotatoStudio/HyperChat) | MCP stdio | ๅคšๅนณๅฐ่Šๅคฉๅบ”็”จ | [EN](./docs/integrations/HYPERCHAT.md) / [ไธญๆ–‡](./docs/integrations/HYPERCHAT.zh-CN.md) |
305
+ | [Tome](https://github.com/runebook/tome) | MCP stdio | macOS ๆœฌๅœฐ LLM ๅบ”็”จ | [EN](./docs/integrations/TOME.md) / [ไธญๆ–‡](./docs/integrations/TOME.zh-CN.md) |
306
+
307
+ ### Web AI ๅนณๅฐ
308
+
309
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
310
+ |------|----------|------|----------|
311
+ | [Claude.ai](https://claude.ai/) | MCP SSE/Streamable HTTP | Anthropic ็ฝ‘้กต็•Œ้ข | [EN](./docs/integrations/CLAUDE-AI.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-AI.zh-CN.md) |
312
+ | [ChatGPT](https://chat.openai.com/) | MCP SSE/Streamable HTTP | ้€š่ฟ‡่‡ชๅฎšไน‰่ฟžๆŽฅๅ™จ | [EN](./docs/integrations/CHATGPT.md) / [ไธญๆ–‡](./docs/integrations/CHATGPT.zh-CN.md) |
313
+ | [Dify](https://dify.ai/) | MCP SSE/Streamable HTTP | LLM ๅบ”็”จๅผ€ๅ‘ๅนณๅฐ | [EN](./docs/integrations/DIFY.md) / [ไธญๆ–‡](./docs/integrations/DIFY.zh-CN.md) |
314
+ | [Coze](https://www.coze.com/) | REST API | ๅญ—่Š‚่ทณๅŠจ AI ๆœบๅ™จไบบๅนณๅฐ | [EN](./docs/integrations/COZE.md) / [ไธญๆ–‡](./docs/integrations/COZE.zh-CN.md) |
315
+ | [n8n](https://n8n.io/) | REST API / MCP | ๅทฅไฝœๆต่‡ชๅŠจๅŒ–ๅนณๅฐ | [EN](./docs/integrations/N8N.md) / [ไธญๆ–‡](./docs/integrations/N8N.zh-CN.md) |
316
+ | [Replit](https://replit.com/) | MCP stdio | ๅœจ็บฟ IDE๏ผŒๅธฆ AI ๆ™บ่ƒฝไฝ“ | [EN](./docs/integrations/REPLIT.md) / [ไธญๆ–‡](./docs/integrations/REPLIT.zh-CN.md) |
317
+ | [MindPal](https://mindpal.io/) | MCP SSE/Streamable HTTP | ๆ— ไปฃ็  AI ๆ™บ่ƒฝไฝ“ๆž„ๅปบๅ™จ | [EN](./docs/integrations/MINDPAL.md) / [ไธญๆ–‡](./docs/integrations/MINDPAL.zh-CN.md) |
318
+
319
+ ### ๆ™บ่ƒฝไฝ“ๆก†ๆžถ & SDK
320
+
321
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
322
+ |------|----------|------|----------|
323
+ | [LangChain](https://langchain.com/) | MCP stdio | ๆต่กŒ็š„ LLM ๆก†ๆžถ | [EN](./docs/integrations/LANGCHAIN.md) / [ไธญๆ–‡](./docs/integrations/LANGCHAIN.zh-CN.md) |
324
+ | [Smolagents](https://github.com/huggingface/smolagents) | MCP stdio | Hugging Face ๆ™บ่ƒฝไฝ“ๅบ“ | [EN](./docs/integrations/SMOLAGENTS.md) / [ไธญๆ–‡](./docs/integrations/SMOLAGENTS.zh-CN.md) |
325
+ | [OpenAI Agents SDK](https://platform.openai.com/) | MCP SSE/Streamable HTTP | OpenAI ๆ™บ่ƒฝไฝ“ๆก†ๆžถ | [EN](./docs/integrations/OPENAI-AGENTS-SDK.md) / [ไธญๆ–‡](./docs/integrations/OPENAI-AGENTS-SDK.zh-CN.md) |
326
+ | [Amazon Bedrock Agents](https://aws.amazon.com/bedrock/) | MCP SSE/Streamable HTTP | AWS AI ๆ™บ่ƒฝไฝ“ๆœๅŠก | [EN](./docs/integrations/AMAZON-BEDROCK-AGENTS.md) / [ไธญๆ–‡](./docs/integrations/AMAZON-BEDROCK-AGENTS.zh-CN.md) |
327
+ | [Google ADK](https://cloud.google.com/) | MCP stdio | Google ๆ™บ่ƒฝไฝ“ๅผ€ๅ‘ๅฅ—ไปถ | [EN](./docs/integrations/GOOGLE-ADK.md) / [ไธญๆ–‡](./docs/integrations/GOOGLE-ADK.zh-CN.md) |
328
+ | [Vercel AI SDK](https://sdk.vercel.ai/) | MCP stdio | Vercel AI ๅผ€ๅ‘ๅฅ—ไปถ | [EN](./docs/integrations/VERCEL-AI-SDK.md) / [ไธญๆ–‡](./docs/integrations/VERCEL-AI-SDK.zh-CN.md) |
329
+ | [Spring AI](https://spring.io/projects/spring-ai) | MCP stdio | Java/Spring AI ๆก†ๆžถ | [EN](./docs/integrations/SPRING-AI.md) / [ไธญๆ–‡](./docs/integrations/SPRING-AI.zh-CN.md) |
330
+
331
+ ### CLI ๅทฅๅ…ท & ็ปˆ็ซฏ
332
+
333
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
334
+ |------|----------|------|----------|
335
+ | [Claude Code CLI](https://claude.ai/code) | MCP stdio | ็ปˆ็ซฏ็ผ–็จ‹ๆ™บ่ƒฝไฝ“ | [EN](./docs/integrations/CLAUDE-CODE.md) / [ไธญๆ–‡](./docs/integrations/CLAUDE-CODE.zh-CN.md) |
336
+ | [Warp](https://www.warp.dev/) | MCP stdio | AI ้ฉฑๅŠจ็š„็ปˆ็ซฏ | [EN](./docs/integrations/WARP.md) / [ไธญๆ–‡](./docs/integrations/WARP.zh-CN.md) |
337
+ | [Oterm](https://github.com/ggozad/oterm) | MCP stdio | ้€š่ฟ‡ CLI ไธŽ Ollama ่Šๅคฉ | [EN](./docs/integrations/OTERM.md) / [ไธญๆ–‡](./docs/integrations/OTERM.zh-CN.md) |
338
+ | [MCPHost](https://github.com/mark3labs/mcphost) | MCP stdio | CLI LLM ่Šๅคฉๅทฅๅ…ท | [EN](./docs/integrations/MCPHOST.md) / [ไธญๆ–‡](./docs/integrations/MCPHOST.zh-CN.md) |
339
+
340
+ ### ๆ•ˆ็އ & ่‡ชๅŠจๅŒ–ๅทฅๅ…ท
341
+
342
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
343
+ |------|----------|------|----------|
344
+ | [Raycast](https://raycast.com/) | MCP stdio | macOS ๆ•ˆ็އๅฏๅŠจๅ™จ | [EN](./docs/integrations/RAYCAST.md) / [ไธญๆ–‡](./docs/integrations/RAYCAST.zh-CN.md) |
345
+ | [Notion](https://notion.so/) | MCP SSE/Streamable HTTP | ๅธฆ AI ้›†ๆˆ็š„ๅทฅไฝœ็ฉบ้—ด | [EN](./docs/integrations/NOTION.md) / [ไธญๆ–‡](./docs/integrations/NOTION.zh-CN.md) |
346
+ | [Obsidian](https://obsidian.md/) | MCP stdio | ้€š่ฟ‡ MCP Tools ๆ’ไปถ | [EN](./docs/integrations/OBSIDIAN.md) / [ไธญๆ–‡](./docs/integrations/OBSIDIAN.zh-CN.md) |
347
+ | [Home Assistant](https://www.home-assistant.io/) | MCP stdio | ๆ™บ่ƒฝๅฎถๅฑ…ๅนณๅฐ | [EN](./docs/integrations/HOME-ASSISTANT.md) / [ไธญๆ–‡](./docs/integrations/HOME-ASSISTANT.zh-CN.md) |
348
+
349
+ ### ๅณๆ—ถ้€š่ฎฏๅนณๅฐ้›†ๆˆ
350
+
351
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
352
+ |------|----------|------|----------|
353
+ | [Slack](https://slack.com/) | MCP stdio / REST API | ้€š่ฟ‡ Slack MCP ๆœบๅ™จไบบ | [EN](./docs/integrations/SLACK.md) / [ไธญๆ–‡](./docs/integrations/SLACK.zh-CN.md) |
354
+ | [Discord](https://discord.com/) | MCP stdio / REST API | ้€š่ฟ‡ Discord MCP ๆœบๅ™จไบบ | [EN](./docs/integrations/DISCORD.md) / [ไธญๆ–‡](./docs/integrations/DISCORD.zh-CN.md) |
355
+ | [Mattermost](https://mattermost.com/) | MCP stdio | ๅผ€ๆบๅณๆ—ถ้€š่ฎฏ | [EN](./docs/integrations/MATTERMOST.md) / [ไธญๆ–‡](./docs/integrations/MATTERMOST.zh-CN.md) |
356
+
357
+ ### ๆœฌๅœฐ LLM ่ฟ่กŒๅ™จ
358
+
359
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
360
+ |------|----------|------|----------|
361
+ | [Ollama](https://ollama.ai/) | MCP stdio | ๆœฌๅœฐ่ฟ่กŒ LLM | [EN](./docs/integrations/OLLAMA.md) / [ไธญๆ–‡](./docs/integrations/OLLAMA.zh-CN.md) |
362
+ | [LM Studio](https://lmstudio.ai/) | MCP stdio | ๆœฌๅœฐ LLM ๆกŒ้ขๅบ”็”จ | [EN](./docs/integrations/LM-STUDIO.md) / [ไธญๆ–‡](./docs/integrations/LM-STUDIO.zh-CN.md) |
363
+ | [Jan](https://jan.ai/) | MCP stdio | ็ฆป็บฟ ChatGPT ๆ›ฟไปฃๅ“ | [EN](./docs/integrations/JAN.md) / [ไธญๆ–‡](./docs/integrations/JAN.zh-CN.md) |
364
+
365
+ ### ๅผ€ๅ‘ & ๆต‹่ฏ•ๅทฅๅ…ท
366
+
367
+ | ๅนณๅฐ | ๆŽฅๅ…ฅๆ–นๅผ | ่ฏดๆ˜Ž | ้›†ๆˆๆŒ‡ๅ— |
368
+ |------|----------|------|----------|
369
+ | [MCP Inspector](https://github.com/modelcontextprotocol/inspector) | MCP stdio | ๅฎ˜ๆ–น MCP ่ฐƒ่ฏ•ๅทฅๅ…ท | [EN](./docs/integrations/MCP-INSPECTOR.md) / [ไธญๆ–‡](./docs/integrations/MCP-INSPECTOR.zh-CN.md) |
370
+ | [Postman](https://postman.com/) | REST API / MCP | API ๆต‹่ฏ•ๅนณๅฐ | [EN](./docs/integrations/POSTMAN.md) / [ไธญๆ–‡](./docs/integrations/POSTMAN.zh-CN.md) |
371
+
372
+ > **ๆ็คบ**๏ผšไปปไฝ• MCP ๅ…ผๅฎนๅฎขๆˆท็ซฏ้ƒฝๅฏไปฅ้€š่ฟ‡ stdio๏ผˆๆœฌๅœฐ๏ผ‰ๆˆ– SSE/Streamable HTTP๏ผˆ่ฟœ็จ‹๏ผ‰่ฟžๆŽฅใ€‚ไปปไฝ• HTTP ๅฎขๆˆท็ซฏ้ƒฝๅฏไปฅไฝฟ็”จ REST APIใ€‚
373
+
192
374
  ## ๐Ÿ“š ๆ–‡ๆกฃ
193
375
 
194
376
  ### ๅฟซ้€Ÿๅผ€ๅง‹
@@ -214,9 +396,45 @@ curl http://localhost:3000/api/health
214
396
  - [้ƒจ็ฝฒๆŒ‡ๅ—](./docs/http-api/DEPLOYMENT.md)
215
397
 
216
398
  ### ้›†ๆˆ
217
- - [Coze ้›†ๆˆ](./docs/integrations/COZE.md)
218
- - [n8n ้›†ๆˆ](./docs/integrations/N8N.md)
219
- - [Dify ้›†ๆˆ](./docs/integrations/DIFY.md)
399
+
400
+ **AI ็ผ–่พ‘ๅ™จ & IDE๏ผš**
401
+ [Cursor](./docs/integrations/CURSOR.zh-CN.md) |
402
+ [VS Code](./docs/integrations/VSCODE.zh-CN.md) |
403
+ [JetBrains](./docs/integrations/JETBRAINS.zh-CN.md) |
404
+ [Windsurf](./docs/integrations/WINDSURF.zh-CN.md) |
405
+ [Zed](./docs/integrations/ZED.zh-CN.md) |
406
+ [Neovim](./docs/integrations/NEOVIM.zh-CN.md) |
407
+ [Emacs](./docs/integrations/EMACS.zh-CN.md)
408
+
409
+ **AI ๅŠฉๆ‰‹๏ผš**
410
+ [Claude Desktop](./docs/integrations/CLAUDE-DESKTOP.zh-CN.md) |
411
+ [Claude Code](./docs/integrations/CLAUDE-CODE.zh-CN.md) |
412
+ [GitHub Copilot](./docs/integrations/GITHUB-COPILOT.zh-CN.md) |
413
+ [Cline](./docs/integrations/CLINE.zh-CN.md) |
414
+ [Continue](./docs/integrations/CONTINUE.zh-CN.md)
415
+
416
+ **AI ๅนณๅฐ๏ผš**
417
+ [Dify](./docs/integrations/DIFY.zh-CN.md) |
418
+ [Coze](./docs/integrations/COZE.zh-CN.md) |
419
+ [n8n](./docs/integrations/N8N.zh-CN.md) |
420
+ [ChatGPT](./docs/integrations/CHATGPT.zh-CN.md) |
421
+ [LangChain](./docs/integrations/LANGCHAIN.zh-CN.md)
422
+
423
+ **ๆกŒ้ขๅบ”็”จ๏ผš**
424
+ [Cherry Studio](./docs/integrations/CHERRY-STUDIO.zh-CN.md) |
425
+ [LM Studio](./docs/integrations/LM-STUDIO.zh-CN.md) |
426
+ [Jan](./docs/integrations/JAN.zh-CN.md) |
427
+ [Ollama](./docs/integrations/OLLAMA.zh-CN.md)
428
+
429
+ **ๅณๆ—ถ้€š่ฎฏ๏ผš**
430
+ [Slack](./docs/integrations/SLACK.zh-CN.md) |
431
+ [Discord](./docs/integrations/DISCORD.zh-CN.md)
432
+
433
+ **ๅทฅๅ…ท๏ผš**
434
+ [MCP Inspector](./docs/integrations/MCP-INSPECTOR.zh-CN.md) |
435
+ [Postman](./docs/integrations/POSTMAN.zh-CN.md)
436
+
437
+ > ๐Ÿ“ [ๆŸฅ็œ‹ๅ…จ้ƒจ 55 ไธช้›†ๆˆๆŒ‡ๅ—](./docs/integrations/) | English version: remove `.zh-CN` from filename
220
438
 
221
439
  ### ่ฟ›้˜ถ
222
440
  - [ๅฎ‰ๅ…จๆŒ‡ๅ—](./docs/guides/security.md)
@@ -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.1",
4
4
  "description": "MCP ๆ•ฐๆฎๅบ“ไธ‡่ƒฝ่ฟžๆŽฅๅ™จ - ่ฎฉ Claude Desktop ็›ดๆŽฅ่ฟžๆŽฅไฝ ็š„ๆ•ฐๆฎๅบ“",
5
5
  "main": "dist/index.js",
6
6
  "bin": {