@arikusi/deepseek-mcp-server 1.4.1 → 1.4.2
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/CHANGELOG.md +18 -1
- package/README.md +38 -2
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/transport-http.d.ts +9 -0
- package/dist/transport-http.d.ts.map +1 -0
- package/dist/transport-http.js +109 -0
- package/dist/transport-http.js.map +1 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.4.2] - 2026-03-07
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Streamable HTTP Transport**: New `TRANSPORT=http` mode with Express-based Streamable HTTP server. Per-session McpServer instances with shared DeepSeekClient. Supports POST/GET/DELETE on `/mcp` endpoint and SSE streaming.
|
|
14
|
+
- **Health Endpoint**: `GET /health` returns server status, version, uptime, and transport type.
|
|
15
|
+
- **Docker Support**: Multi-stage `Dockerfile`, `docker-compose.yml`, and `.dockerignore` for containerized deployment. Default transport is HTTP in Docker.
|
|
16
|
+
- **Docker CI**: GitHub Actions job for Docker build smoke test with health endpoint verification.
|
|
17
|
+
- **New Config Variables**: `TRANSPORT` (stdio|http, default: stdio), `HTTP_PORT` (default: 3000).
|
|
18
|
+
- **253 Tests**: Up from 241, with 12 new tests covering HTTP transport endpoints, config transport/port parsing, and session lifecycle.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Entry point (`index.ts`) now branches on `config.transport` — stdio (default) or HTTP mode.
|
|
22
|
+
- CI dist check includes `transport-http.js`.
|
|
23
|
+
|
|
10
24
|
## [1.4.1] - 2026-03-07
|
|
11
25
|
|
|
12
26
|
### Added
|
|
@@ -245,6 +259,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
245
259
|
|
|
246
260
|
## Version History
|
|
247
261
|
|
|
262
|
+
- **1.4.2** (2026-03-07): Streamable HTTP transport, Docker support, health endpoint, 253 tests
|
|
248
263
|
- **1.4.0** (2026-03-07): Model-aware pricing, multimodal content types, flexible fallback chain, MCP Registry, 241 tests
|
|
249
264
|
- **1.3.3** (2026-03-07): Streaming fallback tests, session tool_calls fix, configurable circuit breaker, session message limit, 212 tests
|
|
250
265
|
- **1.3.2** (2026-03-06): OpenAI SDK v6, Zod v4, DEFAULT_MODEL config
|
|
@@ -263,7 +278,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
263
278
|
- [GitHub repository](https://github.com/arikusi/deepseek-mcp-server)
|
|
264
279
|
- [Issue tracker](https://github.com/arikusi/deepseek-mcp-server/issues)
|
|
265
280
|
|
|
266
|
-
[Unreleased]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.
|
|
281
|
+
[Unreleased]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.2...HEAD
|
|
282
|
+
[1.4.2]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.1...v1.4.2
|
|
283
|
+
[1.4.1]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.0...v1.4.1
|
|
267
284
|
[1.4.0]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.3...v1.4.0
|
|
268
285
|
[1.3.3]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.2...v1.3.3
|
|
269
286
|
[1.3.2]: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.1...v1.3.2
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<img width="380" height="200" src="https://glama.ai/mcp/servers/@arikusi/deepseek-mcp-server/badge" />
|
|
12
12
|
</a>
|
|
13
13
|
|
|
14
|
-
MCP server for DeepSeek AI models (Chat + Reasoner). Supports multi-turn sessions, model fallback with circuit breaker, function calling, thinking mode, JSON output, multimodal input, and cost tracking.
|
|
14
|
+
MCP server for DeepSeek AI models (Chat + Reasoner). Supports stdio and HTTP transports, Docker deployment, multi-turn sessions, model fallback with circuit breaker, function calling, thinking mode, JSON output, multimodal input, and cost tracking.
|
|
15
15
|
|
|
16
16
|
**Compatible with:**
|
|
17
17
|
- Claude Code CLI
|
|
@@ -65,7 +65,9 @@ That's it! Your MCP client can now use DeepSeek models!
|
|
|
65
65
|
- **12 Prompt Templates**: Templates for debugging, code review, function calling, and more
|
|
66
66
|
- **Streaming Support**: Real-time response generation
|
|
67
67
|
- **Multimodal Ready**: Content part types for text + image input (enable with `ENABLE_MULTIMODAL=true`)
|
|
68
|
-
- **
|
|
68
|
+
- **HTTP Transport**: Remote access via Streamable HTTP with `TRANSPORT=http`
|
|
69
|
+
- **Docker Ready**: Multi-stage Dockerfile with health checks for containerized deployment
|
|
70
|
+
- **Tested**: 253 tests with 90%+ code coverage
|
|
69
71
|
- **Type-Safe**: Full TypeScript implementation
|
|
70
72
|
- **MCP Compatible**: Works with any MCP-compatible CLI (Claude Code, Gemini CLI, etc.)
|
|
71
73
|
|
|
@@ -392,6 +394,8 @@ The server is configured via environment variables. All settings except `DEEPSEE
|
|
|
392
394
|
| `CIRCUIT_BREAKER_RESET_TIMEOUT` | `30000` | Milliseconds before circuit half-opens |
|
|
393
395
|
| `MAX_SESSION_MESSAGES` | `200` | Max messages per session (sliding window) |
|
|
394
396
|
| `ENABLE_MULTIMODAL` | `false` | Enable multimodal (image) input support |
|
|
397
|
+
| `TRANSPORT` | `stdio` | Transport mode: `stdio` or `http` |
|
|
398
|
+
| `HTTP_PORT` | `3000` | HTTP server port (when TRANSPORT=http) |
|
|
395
399
|
|
|
396
400
|
**Example with custom config:**
|
|
397
401
|
```bash
|
|
@@ -419,6 +423,7 @@ deepseek-mcp-server/
|
|
|
419
423
|
│ ├── session.ts # In-memory session store (multi-turn)
|
|
420
424
|
│ ├── circuit-breaker.ts # Circuit breaker pattern
|
|
421
425
|
│ ├── usage-tracker.ts # Usage statistics tracker
|
|
426
|
+
│ ├── transport-http.ts # Streamable HTTP transport (Express)
|
|
422
427
|
│ ├── tools/
|
|
423
428
|
│ │ ├── deepseek-chat.ts # deepseek_chat tool (sessions + fallback)
|
|
424
429
|
│ │ ├── deepseek-sessions.ts # deepseek_sessions tool
|
|
@@ -479,6 +484,37 @@ npm start
|
|
|
479
484
|
|
|
480
485
|
The server will start and wait for MCP client connections via stdio.
|
|
481
486
|
|
|
487
|
+
### HTTP Transport
|
|
488
|
+
|
|
489
|
+
Run the server as an HTTP endpoint for remote access:
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
TRANSPORT=http HTTP_PORT=3000 DEEPSEEK_API_KEY=your-key node dist/index.js
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
Test the health endpoint:
|
|
496
|
+
```bash
|
|
497
|
+
curl http://localhost:3000/health
|
|
498
|
+
# → {"status":"ok","version":"1.4.2","uptime":5.2,"transport":"http","timestamp":"..."}
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
The MCP endpoint is available at `POST /mcp` (Streamable HTTP protocol).
|
|
502
|
+
|
|
503
|
+
### Docker
|
|
504
|
+
|
|
505
|
+
```bash
|
|
506
|
+
# Build
|
|
507
|
+
docker build -t deepseek-mcp-server .
|
|
508
|
+
|
|
509
|
+
# Run
|
|
510
|
+
docker run -d -p 3000:3000 -e DEEPSEEK_API_KEY=your-key deepseek-mcp-server
|
|
511
|
+
|
|
512
|
+
# Or use docker-compose
|
|
513
|
+
DEEPSEEK_API_KEY=your-key docker compose up -d
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
The Docker image defaults to HTTP transport on port 3000 with a built-in health check.
|
|
517
|
+
|
|
482
518
|
## Troubleshooting
|
|
483
519
|
|
|
484
520
|
### "DEEPSEEK_API_KEY environment variable is not set"
|
package/dist/config.d.ts
CHANGED
|
@@ -19,6 +19,11 @@ declare const ConfigSchema: z.ZodObject<{
|
|
|
19
19
|
circuitBreakerResetTimeout: z.ZodDefault<z.ZodNumber>;
|
|
20
20
|
maxSessionMessages: z.ZodDefault<z.ZodNumber>;
|
|
21
21
|
enableMultimodal: z.ZodDefault<z.ZodBoolean>;
|
|
22
|
+
transport: z.ZodDefault<z.ZodEnum<{
|
|
23
|
+
stdio: "stdio";
|
|
24
|
+
http: "http";
|
|
25
|
+
}>>;
|
|
26
|
+
httpPort: z.ZodDefault<z.ZodNumber>;
|
|
22
27
|
}, z.core.$strip>;
|
|
23
28
|
export type Config = z.infer<typeof ConfigSchema>;
|
|
24
29
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;iBAkBhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAIlD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAyDnC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/dist/config.js
CHANGED
|
@@ -20,6 +20,8 @@ const ConfigSchema = z.object({
|
|
|
20
20
|
circuitBreakerResetTimeout: z.number().positive().default(30000),
|
|
21
21
|
maxSessionMessages: z.number().positive().default(200),
|
|
22
22
|
enableMultimodal: z.boolean().default(false),
|
|
23
|
+
transport: z.enum(['stdio', 'http']).default('stdio'),
|
|
24
|
+
httpPort: z.number().positive().default(3000),
|
|
23
25
|
});
|
|
24
26
|
let cachedConfig = null;
|
|
25
27
|
/**
|
|
@@ -60,6 +62,8 @@ export function loadConfig() {
|
|
|
60
62
|
? parseInt(process.env.MAX_SESSION_MESSAGES, 10)
|
|
61
63
|
: 200,
|
|
62
64
|
enableMultimodal: process.env.ENABLE_MULTIMODAL === 'true',
|
|
65
|
+
transport: (process.env.TRANSPORT || 'stdio'),
|
|
66
|
+
httpPort: process.env.HTTP_PORT ? parseInt(process.env.HTTP_PORT, 10) : 3000,
|
|
63
67
|
};
|
|
64
68
|
const result = ConfigSchema.safeParse(raw);
|
|
65
69
|
if (!result.success) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAC7D,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IACjD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACtD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AA6FH,wBAAgB,mBAAmB,gEAUlC"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { createServer, version } from './server.js';
|
|
|
11
11
|
import { registerAllTools } from './tools/index.js';
|
|
12
12
|
import { registerAllPrompts } from './prompts/index.js';
|
|
13
13
|
import { registerAllResources } from './resources/index.js';
|
|
14
|
+
import { startHttpTransport } from './transport-http.js';
|
|
14
15
|
async function main() {
|
|
15
16
|
// Load and validate configuration
|
|
16
17
|
try {
|
|
@@ -45,13 +46,26 @@ async function main() {
|
|
|
45
46
|
console.error('[DeepSeek MCP] API connection successful');
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
if (config.transport === 'http') {
|
|
50
|
+
// HTTP transport: per-session McpServer, shared DeepSeekClient
|
|
51
|
+
const serverFactory = () => {
|
|
52
|
+
const s = createServer();
|
|
53
|
+
registerAllTools(s, deepseek);
|
|
54
|
+
registerAllPrompts(s);
|
|
55
|
+
registerAllResources(s);
|
|
56
|
+
return s;
|
|
57
|
+
};
|
|
58
|
+
await startHttpTransport(serverFactory, config.httpPort);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Stdio transport (default)
|
|
62
|
+
const transport = new StdioServerTransport();
|
|
63
|
+
await server.connect(transport);
|
|
64
|
+
console.error('[DeepSeek MCP] Server running on stdio');
|
|
65
|
+
console.error('[DeepSeek MCP] Available tools: deepseek_chat (sessions, fallback), deepseek_sessions');
|
|
66
|
+
console.error('[DeepSeek MCP] Available prompts: 12 reasoning templates');
|
|
67
|
+
console.error('[DeepSeek MCP] Available resources: deepseek://models, deepseek://config, deepseek://usage');
|
|
68
|
+
}
|
|
55
69
|
}
|
|
56
70
|
// Error handling
|
|
57
71
|
process.on('uncaughtException', (error) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -6,7 +6,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { dirname, join } from 'path';
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
|
-
let version = '1.4.
|
|
9
|
+
let version = '1.4.2';
|
|
10
10
|
try {
|
|
11
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
12
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Transport for DeepSeek MCP Server
|
|
3
|
+
* Implements Streamable HTTP transport using the MCP SDK's Express middleware.
|
|
4
|
+
* Each MCP session gets its own McpServer instance; DeepSeekClient is shared.
|
|
5
|
+
*/
|
|
6
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
|
+
export declare function createHttpApp(serverFactory: () => McpServer): import("express").Express;
|
|
8
|
+
export declare function startHttpTransport(serverFactory: () => McpServer, port: number): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=transport-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-http.d.ts","sourceRoot":"","sources":["../src/transport-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,SAAS,6BAsF3D;AAED,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpG"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Transport for DeepSeek MCP Server
|
|
3
|
+
* Implements Streamable HTTP transport using the MCP SDK's Express middleware.
|
|
4
|
+
* Each MCP session gets its own McpServer instance; DeepSeekClient is shared.
|
|
5
|
+
*/
|
|
6
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
7
|
+
import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/express.js';
|
|
8
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { randomUUID } from 'node:crypto';
|
|
10
|
+
import { version } from './server.js';
|
|
11
|
+
const transports = {};
|
|
12
|
+
export function createHttpApp(serverFactory) {
|
|
13
|
+
const app = createMcpExpressApp({ host: '0.0.0.0' });
|
|
14
|
+
// Health check endpoint
|
|
15
|
+
app.get('/health', (_req, res) => {
|
|
16
|
+
res.json({
|
|
17
|
+
status: 'ok',
|
|
18
|
+
version,
|
|
19
|
+
uptime: process.uptime(),
|
|
20
|
+
transport: 'http',
|
|
21
|
+
timestamp: new Date().toISOString(),
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
// POST /mcp — handle JSON-RPC requests
|
|
25
|
+
app.post('/mcp', async (req, res) => {
|
|
26
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
27
|
+
// Existing session — reuse transport
|
|
28
|
+
if (sessionId && transports[sessionId]) {
|
|
29
|
+
await transports[sessionId].handleRequest(req, res, req.body);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// New initialize request — create session
|
|
33
|
+
if (!sessionId && isInitializeRequest(req.body)) {
|
|
34
|
+
const transport = new StreamableHTTPServerTransport({
|
|
35
|
+
sessionIdGenerator: () => randomUUID(),
|
|
36
|
+
onsessioninitialized: (id) => {
|
|
37
|
+
transports[id] = transport;
|
|
38
|
+
console.error(`[DeepSeek MCP] HTTP session initialized: ${id}`);
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
transport.onclose = () => {
|
|
42
|
+
if (transport.sessionId) {
|
|
43
|
+
delete transports[transport.sessionId];
|
|
44
|
+
console.error(`[DeepSeek MCP] HTTP session closed: ${transport.sessionId}`);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const server = serverFactory();
|
|
48
|
+
await server.connect(transport);
|
|
49
|
+
await transport.handleRequest(req, res, req.body);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Invalid request
|
|
53
|
+
res.status(400).json({
|
|
54
|
+
jsonrpc: '2.0',
|
|
55
|
+
error: { code: -32000, message: 'Invalid request: no valid session or not an initialize request' },
|
|
56
|
+
id: null,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
// GET /mcp — SSE stream for existing session
|
|
60
|
+
app.get('/mcp', async (req, res) => {
|
|
61
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
62
|
+
if (sessionId && transports[sessionId]) {
|
|
63
|
+
await transports[sessionId].handleRequest(req, res);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
res.status(400).json({
|
|
67
|
+
jsonrpc: '2.0',
|
|
68
|
+
error: { code: -32000, message: 'Invalid or missing session ID' },
|
|
69
|
+
id: null,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// DELETE /mcp — terminate session
|
|
74
|
+
app.delete('/mcp', async (req, res) => {
|
|
75
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
76
|
+
if (sessionId && transports[sessionId]) {
|
|
77
|
+
await transports[sessionId].close();
|
|
78
|
+
delete transports[sessionId];
|
|
79
|
+
res.status(200).json({ status: 'session terminated' });
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
res.status(400).json({
|
|
83
|
+
jsonrpc: '2.0',
|
|
84
|
+
error: { code: -32000, message: 'Invalid or missing session ID' },
|
|
85
|
+
id: null,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
return app;
|
|
90
|
+
}
|
|
91
|
+
export async function startHttpTransport(serverFactory, port) {
|
|
92
|
+
const app = createHttpApp(serverFactory);
|
|
93
|
+
const httpServer = app.listen(port, '0.0.0.0', () => {
|
|
94
|
+
console.error(`[DeepSeek MCP] HTTP transport listening on http://0.0.0.0:${port}`);
|
|
95
|
+
console.error(`[DeepSeek MCP] Health check: http://localhost:${port}/health`);
|
|
96
|
+
console.error(`[DeepSeek MCP] MCP endpoint: http://localhost:${port}/mcp`);
|
|
97
|
+
});
|
|
98
|
+
const shutdown = async () => {
|
|
99
|
+
console.error('[DeepSeek MCP] Shutting down HTTP transport...');
|
|
100
|
+
for (const [id, transport] of Object.entries(transports)) {
|
|
101
|
+
await transport.close();
|
|
102
|
+
delete transports[id];
|
|
103
|
+
}
|
|
104
|
+
httpServer.close();
|
|
105
|
+
};
|
|
106
|
+
process.on('SIGINT', shutdown);
|
|
107
|
+
process.on('SIGTERM', shutdown);
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=transport-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-http.js","sourceRoot":"","sources":["../src/transport-http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arikusi/deepseek-mcp-server",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"mcpName": "io.github.arikusi/deepseek",
|
|
5
5
|
"description": "MCP Server for DeepSeek API integration - enables Claude Code to use DeepSeek Chat and Reasoner models",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"circuit-breaker",
|
|
38
38
|
"model-fallback",
|
|
39
39
|
"gemini-cli",
|
|
40
|
-
"mcp-server"
|
|
40
|
+
"mcp-server",
|
|
41
|
+
"docker",
|
|
42
|
+
"http-transport",
|
|
43
|
+
"streamable-http"
|
|
41
44
|
],
|
|
42
45
|
"author": "arikusi",
|
|
43
46
|
"license": "MIT",
|
|
@@ -64,6 +67,7 @@
|
|
|
64
67
|
"zod": "^4.3.6"
|
|
65
68
|
},
|
|
66
69
|
"devDependencies": {
|
|
70
|
+
"@types/express": "^5.0.6",
|
|
67
71
|
"@types/node": "^22.10.5",
|
|
68
72
|
"@vitest/coverage-v8": "^4.0.18",
|
|
69
73
|
"typescript": "^5.7.3",
|