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 +246 -28
- package/README.zh-CN.md +246 -28
- package/dist/http/middleware/auth.d.ts.map +1 -1
- package/dist/http/middleware/auth.js +8 -3
- package/dist/http/middleware/auth.js.map +1 -1
- package/dist/http/routes/index.d.ts.map +1 -1
- package/dist/http/routes/index.js +3 -0
- package/dist/http/routes/index.js.map +1 -1
- package/dist/http/routes/mcp-sse.d.ts +11 -0
- package/dist/http/routes/mcp-sse.d.ts.map +1 -0
- package/dist/http/routes/mcp-sse.js +303 -0
- package/dist/http/routes/mcp-sse.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +15 -1
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +22 -4
- package/dist/mcp/mcp-server.js.map +1 -1
- package/package.json +1 -1
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,
|
|
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
|
-
- **
|
|
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
|
-
โ
|
|
153
|
-
|
|
154
|
-
โ
|
|
155
|
-
โ
|
|
156
|
-
โ โ
|
|
157
|
-
โ โ
|
|
158
|
-
โ
|
|
159
|
-
โ
|
|
160
|
-
โ
|
|
161
|
-
โ
|
|
162
|
-
โ
|
|
163
|
-
โ โ
|
|
164
|
-
โ โ
|
|
165
|
-
โ โ
|
|
166
|
-
โ
|
|
167
|
-
โ
|
|
168
|
-
โ
|
|
169
|
-
โ โ
|
|
170
|
-
โ โ
|
|
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
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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ใ
|
|
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
|
-
-
|
|
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
|
-
โ
|
|
153
|
-
|
|
154
|
-
โ
|
|
155
|
-
โ
|
|
156
|
-
โ โ
|
|
157
|
-
โ โ
|
|
158
|
-
โ
|
|
159
|
-
โ
|
|
160
|
-
โ
|
|
161
|
-
โ
|
|
162
|
-
โ
|
|
163
|
-
โ โ
|
|
164
|
-
โ โ
|
|
165
|
-
โ โ
|
|
166
|
-
โ
|
|
167
|
-
โ
|
|
168
|
-
โ
|
|
169
|
-
โ โ
|
|
170
|
-
โ โ
|
|
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
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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;
|
|
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;
|
|
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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"}
|
package/dist/mcp/mcp-server.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/mcp/mcp-server.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/mcp/mcp-server.ts"],"names":[],"mappings":"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"}
|