@arikusi/deepseek-mcp-server 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/session.d.ts +5 -13
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +5 -20
- package/dist/session.js.map +1 -1
- package/dist/tools/deepseek-chat.d.ts +2 -1
- package/dist/tools/deepseek-chat.d.ts.map +1 -1
- package/dist/tools/deepseek-chat.js +1 -3
- package/dist/tools/deepseek-chat.js.map +1 -1
- package/dist/tools/deepseek-sessions.d.ts +2 -1
- package/dist/tools/deepseek-sessions.d.ts.map +1 -1
- package/dist/tools/deepseek-sessions.js +1 -3
- package/dist/tools/deepseek-sessions.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/usage-tracker.d.ts +12 -0
- package/dist/usage-tracker.d.ts.map +1 -1
- package/dist/usage-tracker.js +23 -6
- package/dist/usage-tracker.js.map +1 -1
- package/package.json +2 -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.7.0] - 2026-04-22
|
|
11
|
+
|
|
12
|
+
### Security
|
|
13
|
+
- **Cross-session data exposure in HTTP transport (high severity).** The `SessionStore` was a process-wide singleton shared across all connected HTTP clients. In HTTP transport mode, any client that provided another client's `session_id` to `deepseek_chat` would read that client's conversation history. The `deepseek_sessions` tool compounded this by letting any client enumerate all active session IDs (`list`), delete any session (`delete`), or wipe every tenant's sessions at once (`clear`). STDIO transport was unaffected because each STDIO client runs its own server process. Full advisory and CVE coordination pending.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **BREAKING (HTTP transport only).** Each HTTP session now gets an isolated `SessionStore` instance. Conversation history, session listings, and session deletion are scoped to the HTTP session that created them. Clients on the same server no longer share session state.
|
|
17
|
+
- `SessionStore` is no longer a singleton. `SessionStore.getInstance()` and `SessionStore.resetInstance()` have been removed. Construct instances with `new SessionStore()` and pass them explicitly to `registerChatTool`, `registerSessionsTool`, and `registerAllTools`.
|
|
18
|
+
- `UsageTracker.getStats().activeSessions` is wired to the STDIO store via `UsageTracker.setSessionSource()`. In HTTP transport it reports `0` by design — a process-wide count across isolated stores would be both meaningless and a minor cross-tenant information leak.
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- `SessionStore` isolation tests: independent instances, no shared state, no cross-store effects on `clear`/`delete`/`list`.
|
|
22
|
+
- HTTP transport integration test (`src/transport-isolation.test.ts`) proving each `serverFactory` invocation produces a fresh store and that user-supplied `session_id` collisions across HTTP sessions do not merge data.
|
|
23
|
+
|
|
10
24
|
## [1.6.0] - 2026-03-17
|
|
11
25
|
|
|
12
26
|
### Added
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
21
|
Compatible with Claude Code, Gemini CLI, Cursor, Windsurf, and any MCP-compatible client.<br />
|
|
22
|
-
Officially listed on the <a href="https://registry.modelcontextprotocol.io/?q=io.github.arikusi"><strong>MCP Registry</strong></a>, <a href="https://smithery.ai/servers/arikusi/deepseek-mcp-server">Smithery</a>, <a href="https://glama.ai/mcp/servers/arikusi/deepseek-mcp-server">Glama</a>,
|
|
22
|
+
Officially listed on the <a href="https://registry.modelcontextprotocol.io/?q=io.github.arikusi"><strong>MCP Registry</strong></a>, <a href="https://smithery.ai/servers/arikusi/deepseek-mcp-server">Smithery</a>, <a href="https://glama.ai/mcp/servers/arikusi/deepseek-mcp-server">Glama</a>, <a href="https://lobehub.com/mcp/arikusi-deepseek-mcp-server">LobeHub</a>, and <a href="https://fronteir.ai/mcp/arikusi-deepseek-mcp-server">Fronteir AI</a>.
|
|
23
23
|
</p>
|
|
24
24
|
|
|
25
25
|
<p align="center">
|
|
@@ -100,7 +100,7 @@ gemini mcp add deepseek npx @arikusi/deepseek-mcp-server -e DEEPSEEK_API_KEY=you
|
|
|
100
100
|
- **Remote Endpoint**: Hosted at `deepseek-mcp.tahirl.com/mcp` — BYOK (Bring Your Own Key), no install needed
|
|
101
101
|
- **HTTP Transport**: Self-hosted remote access via Streamable HTTP with `TRANSPORT=http`
|
|
102
102
|
- **Docker Ready**: Multi-stage Dockerfile with health checks for containerized deployment
|
|
103
|
-
- **Tested**:
|
|
103
|
+
- **Tested**: 265 tests, ~89% line coverage
|
|
104
104
|
- **Type-Safe**: Full TypeScript implementation
|
|
105
105
|
- **MCP Compatible**: Works with any MCP-compatible CLI (Claude Code, Gemini CLI, etc.)
|
|
106
106
|
|
|
@@ -317,7 +317,7 @@ JSON mode ensures the model outputs valid JSON. Include the word "json" in your
|
|
|
317
317
|
}
|
|
318
318
|
```
|
|
319
319
|
|
|
320
|
-
Use the same `session_id` across requests to maintain conversation context.
|
|
320
|
+
Use the same `session_id` across requests to maintain conversation context. Messages are stored in memory and prepended automatically. In HTTP transport each connected MCP session has its own isolated session store — a `session_id` created by one HTTP client is not visible to another (see HTTP Transport below).
|
|
321
321
|
|
|
322
322
|
### `deepseek_sessions`
|
|
323
323
|
|
|
@@ -559,6 +559,12 @@ curl http://localhost:3000/health
|
|
|
559
559
|
|
|
560
560
|
The MCP endpoint is available at `POST /mcp` (Streamable HTTP protocol).
|
|
561
561
|
|
|
562
|
+
**Session isolation (1.7.0+):** In HTTP transport each connected MCP session
|
|
563
|
+
gets its own `McpServer` instance and its own `SessionStore`. Conversation
|
|
564
|
+
history, session listings, and deletions are scoped to the MCP session that
|
|
565
|
+
created them — one client cannot read, enumerate, or wipe another client's
|
|
566
|
+
sessions. STDIO transport is single-tenant by nature and unaffected.
|
|
567
|
+
|
|
562
568
|
### Docker
|
|
563
569
|
|
|
564
570
|
```bash
|
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;AA+GH,wBAAgB,mBAAmB,gEAWlC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,8 @@ import { registerAllTools } from './tools/index.js';
|
|
|
12
12
|
import { registerAllPrompts } from './prompts/index.js';
|
|
13
13
|
import { registerAllResources } from './resources/index.js';
|
|
14
14
|
import { startHttpTransport } from './transport-http.js';
|
|
15
|
+
import { SessionStore } from './session.js';
|
|
16
|
+
import { UsageTracker } from './usage-tracker.js';
|
|
15
17
|
async function main() {
|
|
16
18
|
// Load and validate configuration
|
|
17
19
|
try {
|
|
@@ -29,10 +31,20 @@ async function main() {
|
|
|
29
31
|
const config = getConfig();
|
|
30
32
|
const deepseek = new DeepSeekClient();
|
|
31
33
|
const server = createServer();
|
|
34
|
+
// STDIO mode: single shared SessionStore for the lifetime of this process.
|
|
35
|
+
// (HTTP mode builds its own per-session stores below — see serverFactory.)
|
|
36
|
+
const stdioSessionStore = new SessionStore();
|
|
32
37
|
// Register tools, prompts, and resources
|
|
33
|
-
registerAllTools(server, deepseek);
|
|
38
|
+
registerAllTools(server, deepseek, stdioSessionStore);
|
|
34
39
|
registerAllPrompts(server);
|
|
35
40
|
registerAllResources(server);
|
|
41
|
+
// Wire the usage tracker's active-session count to the STDIO store.
|
|
42
|
+
// In HTTP mode this is intentionally NOT wired: each HTTP session owns its
|
|
43
|
+
// own store, so a process-wide count would be misleading and could leak
|
|
44
|
+
// tenant info.
|
|
45
|
+
if (config.transport !== 'http') {
|
|
46
|
+
UsageTracker.getInstance().setSessionSource(() => stdioSessionStore.list().length);
|
|
47
|
+
}
|
|
36
48
|
console.error(`[DeepSeek MCP] Starting server v${version}...`);
|
|
37
49
|
// Optional connection test (controlled by SKIP_CONNECTION_TEST env)
|
|
38
50
|
if (!config.skipConnectionTest) {
|
|
@@ -47,10 +59,14 @@ async function main() {
|
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
61
|
if (config.transport === 'http') {
|
|
50
|
-
// HTTP transport: per-session McpServer
|
|
62
|
+
// HTTP transport: per-session McpServer AND per-session SessionStore.
|
|
63
|
+
// DeepSeekClient is shared (stateless API client is fine cross-session).
|
|
64
|
+
// Each HTTP session gets an isolated SessionStore so that one client
|
|
65
|
+
// cannot read, list, or clear another client's conversation history.
|
|
51
66
|
const serverFactory = () => {
|
|
52
67
|
const s = createServer();
|
|
53
|
-
|
|
68
|
+
const sessionStore = new SessionStore();
|
|
69
|
+
registerAllTools(s, deepseek, sessionStore);
|
|
54
70
|
registerAllPrompts(s);
|
|
55
71
|
registerAllResources(s);
|
|
56
72
|
return s;
|
|
@@ -83,7 +99,8 @@ export function createSandboxServer() {
|
|
|
83
99
|
loadConfig();
|
|
84
100
|
const client = new DeepSeekClient();
|
|
85
101
|
const server = createServer();
|
|
86
|
-
|
|
102
|
+
const sessionStore = new SessionStore();
|
|
103
|
+
registerAllTools(server, client, sessionStore);
|
|
87
104
|
registerAllPrompts(server);
|
|
88
105
|
registerAllResources(server);
|
|
89
106
|
return server;
|
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;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,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.
|
|
9
|
+
let version = '1.7.0';
|
|
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'));
|
package/dist/session.d.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-Memory Session Store
|
|
3
|
-
* Manages multi-turn conversation sessions within a single MCP server
|
|
3
|
+
* Manages multi-turn conversation sessions within a single MCP server instance lifetime.
|
|
4
|
+
*
|
|
5
|
+
* One SessionStore per McpServer instance. In HTTP transport mode this means
|
|
6
|
+
* one store per connected HTTP session, which gives cross-client isolation.
|
|
7
|
+
* In STDIO mode a single store is shared for the life of the process.
|
|
4
8
|
*/
|
|
5
9
|
import type { ChatMessage, Session, SessionInfo } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Singleton session store backed by an in-memory Map.
|
|
8
|
-
* Sessions live for the duration of the MCP server process.
|
|
9
|
-
* TTL-based cleanup prevents unbounded memory growth.
|
|
10
|
-
*/
|
|
11
10
|
export declare class SessionStore {
|
|
12
|
-
private static instance;
|
|
13
11
|
private sessions;
|
|
14
12
|
private requestCounter;
|
|
15
|
-
private constructor();
|
|
16
|
-
static getInstance(): SessionStore;
|
|
17
|
-
/**
|
|
18
|
-
* Reset singleton (for testing)
|
|
19
|
-
*/
|
|
20
|
-
static resetInstance(): void;
|
|
21
13
|
/**
|
|
22
14
|
* Create a new session or return existing one
|
|
23
15
|
*/
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,cAAc,CAAK;IAE3B;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAgCnC;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAc3C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI;IAc7D;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAM7C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,IAAI,IAAI,WAAW,EAAE;IAkBrB;;OAEG;IACH,OAAO,IAAI,MAAM;IAWjB;;OAEG;IACH,YAAY,IAAI,MAAM;IAQtB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,MAAM;IAMf;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,YAAY;CAarB"}
|
package/dist/session.js
CHANGED
|
@@ -1,31 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* In-Memory Session Store
|
|
3
|
-
* Manages multi-turn conversation sessions within a single MCP server
|
|
3
|
+
* Manages multi-turn conversation sessions within a single MCP server instance lifetime.
|
|
4
|
+
*
|
|
5
|
+
* One SessionStore per McpServer instance. In HTTP transport mode this means
|
|
6
|
+
* one store per connected HTTP session, which gives cross-client isolation.
|
|
7
|
+
* In STDIO mode a single store is shared for the life of the process.
|
|
4
8
|
*/
|
|
5
9
|
import { randomUUID } from 'crypto';
|
|
6
10
|
import { getConfig } from './config.js';
|
|
7
|
-
/**
|
|
8
|
-
* Singleton session store backed by an in-memory Map.
|
|
9
|
-
* Sessions live for the duration of the MCP server process.
|
|
10
|
-
* TTL-based cleanup prevents unbounded memory growth.
|
|
11
|
-
*/
|
|
12
11
|
export class SessionStore {
|
|
13
|
-
static instance = null;
|
|
14
12
|
sessions = new Map();
|
|
15
13
|
requestCounter = 0;
|
|
16
|
-
constructor() { }
|
|
17
|
-
static getInstance() {
|
|
18
|
-
if (!SessionStore.instance) {
|
|
19
|
-
SessionStore.instance = new SessionStore();
|
|
20
|
-
}
|
|
21
|
-
return SessionStore.instance;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Reset singleton (for testing)
|
|
25
|
-
*/
|
|
26
|
-
static resetInstance() {
|
|
27
|
-
SessionStore.instance = null;
|
|
28
|
-
}
|
|
29
14
|
/**
|
|
30
15
|
* Create a new session or return existing one
|
|
31
16
|
*/
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
7
7
|
import type { DeepSeekClient } from '../deepseek-client.js';
|
|
8
|
-
|
|
8
|
+
import type { SessionStore } from '../session.js';
|
|
9
|
+
export declare function registerChatTool(server: McpServer, client: DeepSeekClient, sessionStore: SessionStore): void;
|
|
9
10
|
//# sourceMappingURL=deepseek-chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-chat.d.ts","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"deepseek-chat.d.ts","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqBlD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,YAAY,GACzB,IAAI,CA8RN"}
|
|
@@ -8,7 +8,6 @@ import { getConfig } from '../config.js';
|
|
|
8
8
|
import { calculateCost, formatCost } from '../cost.js';
|
|
9
9
|
import { ExtendedMessageSchema, ChatInputWithToolsSchema, ToolDefinitionSchema, ToolChoiceSchema, ThinkingSchema, } from '../schemas.js';
|
|
10
10
|
import { getErrorMessage, getTextContent } from '../types.js';
|
|
11
|
-
import { SessionStore } from '../session.js';
|
|
12
11
|
import { UsageTracker } from '../usage-tracker.js';
|
|
13
12
|
/** Maximum allowed message content length (from config) */
|
|
14
13
|
function validateMessageLength(input) {
|
|
@@ -20,7 +19,7 @@ function validateMessageLength(input) {
|
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
|
-
export function registerChatTool(server, client) {
|
|
22
|
+
export function registerChatTool(server, client, sessionStore) {
|
|
24
23
|
// Use config's defaultModel if it's a valid model name
|
|
25
24
|
const cfg = getConfig();
|
|
26
25
|
const modelDefault = cfg.defaultModel === 'deepseek-reasoner' ? 'deepseek-reasoner' : 'deepseek-chat';
|
|
@@ -129,7 +128,6 @@ export function registerChatTool(server, client) {
|
|
|
129
128
|
}
|
|
130
129
|
// Session management: build full message list
|
|
131
130
|
let allMessages = validated.messages;
|
|
132
|
-
const sessionStore = SessionStore.getInstance();
|
|
133
131
|
if (validated.session_id) {
|
|
134
132
|
// Create or get session
|
|
135
133
|
const session = sessionStore.create(validated.session_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-chat.js","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GAEf,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"deepseek-chat.js","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
* Session management for multi-turn conversations
|
|
4
4
|
*/
|
|
5
5
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
-
|
|
6
|
+
import type { SessionStore } from '../session.js';
|
|
7
|
+
export declare function registerSessionsTool(server: McpServer, store: SessionStore): void;
|
|
7
8
|
//# sourceMappingURL=deepseek-sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-sessions.d.ts","sourceRoot":"","sources":["../../src/tools/deepseek-sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"deepseek-sessions.d.ts","sourceRoot":"","sources":["../../src/tools/deepseek-sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAuGjF"}
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
* Session management for multi-turn conversations
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { SessionStore } from '../session.js';
|
|
7
6
|
import { getErrorMessage } from '../types.js';
|
|
8
|
-
export function registerSessionsTool(server) {
|
|
7
|
+
export function registerSessionsTool(server, store) {
|
|
9
8
|
server.registerTool('deepseek_sessions', {
|
|
10
9
|
title: 'DeepSeek Session Management',
|
|
11
10
|
description: 'Manage multi-turn conversation sessions. List active sessions, delete a specific session, or clear all sessions. ' +
|
|
@@ -21,7 +20,6 @@ export function registerSessionsTool(server) {
|
|
|
21
20
|
},
|
|
22
21
|
}, async (input) => {
|
|
23
22
|
try {
|
|
24
|
-
const store = SessionStore.getInstance();
|
|
25
23
|
switch (input.action) {
|
|
26
24
|
case 'list': {
|
|
27
25
|
const sessions = store.list();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-sessions.js","sourceRoot":"","sources":["../../src/tools/deepseek-sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"deepseek-sessions.js","sourceRoot":"","sources":["../../src/tools/deepseek-sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
6
|
import type { DeepSeekClient } from '../deepseek-client.js';
|
|
7
|
-
|
|
7
|
+
import type { SessionStore } from '../session.js';
|
|
8
|
+
export declare function registerAllTools(server: McpServer, client: DeepSeekClient, sessionStore: SessionStore): void;
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,YAAY,GACzB,IAAI,CAGN"}
|
package/dist/tools/index.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { registerChatTool } from './deepseek-chat.js';
|
|
6
6
|
import { registerSessionsTool } from './deepseek-sessions.js';
|
|
7
|
-
export function registerAllTools(server, client) {
|
|
8
|
-
registerChatTool(server, client);
|
|
9
|
-
registerSessionsTool(server);
|
|
7
|
+
export function registerAllTools(server, client, sessionStore) {
|
|
8
|
+
registerChatTool(server, client, sessionStore);
|
|
9
|
+
registerSessionsTool(server, sessionStore);
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,UAAU,gBAAgB,CAC9B,MAAiB,EACjB,MAAsB,EACtB,YAA0B;IAE1B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/C,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/usage-tracker.d.ts
CHANGED
|
@@ -12,12 +12,24 @@ export declare class UsageTracker {
|
|
|
12
12
|
private totalCost;
|
|
13
13
|
private cacheHitTokens;
|
|
14
14
|
private cacheMissTokens;
|
|
15
|
+
private sessionSource;
|
|
15
16
|
private constructor();
|
|
16
17
|
static getInstance(): UsageTracker;
|
|
17
18
|
/**
|
|
18
19
|
* Reset singleton (for testing)
|
|
19
20
|
*/
|
|
20
21
|
static resetInstance(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Wire up a callback that reports the current active session count.
|
|
24
|
+
* In STDIO mode this maps to the single shared SessionStore.
|
|
25
|
+
* In HTTP mode no source is set — each HTTP session owns its own store,
|
|
26
|
+
* so a process-wide count would be misleading and could leak tenant info.
|
|
27
|
+
*/
|
|
28
|
+
setSessionSource(fn: () => number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Clear the session source (used in tests or when swapping stores)
|
|
31
|
+
*/
|
|
32
|
+
clearSessionSource(): void;
|
|
21
33
|
/**
|
|
22
34
|
* Track a completed API request
|
|
23
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../src/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../src/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAA+B;IAEpD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,YAAY,CACV,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,EACD,IAAI,EAAE,MAAM,GACX,IAAI;IAeP;;OAEG;IACH,QAAQ,IAAI,UAAU;IAsBtB;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAK3B"}
|
package/dist/usage-tracker.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Usage Tracker
|
|
3
3
|
* Singleton that tracks aggregated API usage statistics
|
|
4
4
|
*/
|
|
5
|
-
import { SessionStore } from './session.js';
|
|
6
5
|
export class UsageTracker {
|
|
7
6
|
static instance = null;
|
|
8
7
|
totalRequests = 0;
|
|
@@ -12,6 +11,7 @@ export class UsageTracker {
|
|
|
12
11
|
totalCost = 0;
|
|
13
12
|
cacheHitTokens = 0;
|
|
14
13
|
cacheMissTokens = 0;
|
|
14
|
+
sessionSource = null;
|
|
15
15
|
constructor() { }
|
|
16
16
|
static getInstance() {
|
|
17
17
|
if (!UsageTracker.instance) {
|
|
@@ -25,6 +25,21 @@ export class UsageTracker {
|
|
|
25
25
|
static resetInstance() {
|
|
26
26
|
UsageTracker.instance = null;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Wire up a callback that reports the current active session count.
|
|
30
|
+
* In STDIO mode this maps to the single shared SessionStore.
|
|
31
|
+
* In HTTP mode no source is set — each HTTP session owns its own store,
|
|
32
|
+
* so a process-wide count would be misleading and could leak tenant info.
|
|
33
|
+
*/
|
|
34
|
+
setSessionSource(fn) {
|
|
35
|
+
this.sessionSource = fn;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clear the session source (used in tests or when swapping stores)
|
|
39
|
+
*/
|
|
40
|
+
clearSessionSource() {
|
|
41
|
+
this.sessionSource = null;
|
|
42
|
+
}
|
|
28
43
|
/**
|
|
29
44
|
* Track a completed API request
|
|
30
45
|
*/
|
|
@@ -46,11 +61,13 @@ export class UsageTracker {
|
|
|
46
61
|
*/
|
|
47
62
|
getStats() {
|
|
48
63
|
let activeSessions = 0;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
if (this.sessionSource) {
|
|
65
|
+
try {
|
|
66
|
+
activeSessions = this.sessionSource();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// callback failed — fall through with 0
|
|
70
|
+
}
|
|
54
71
|
}
|
|
55
72
|
return {
|
|
56
73
|
totalRequests: this.totalRequests,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../src/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../src/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,OAAO,YAAY;IACf,MAAM,CAAC,QAAQ,GAAwB,IAAI,CAAC;IAE5C,aAAa,GAAG,CAAC,CAAC;IAClB,WAAW,GAAG,CAAC,CAAC;IAChB,iBAAiB,GAAG,CAAC,CAAC;IACtB,qBAAqB,GAAG,CAAC,CAAC;IAC1B,SAAS,GAAG,CAAC,CAAC;IACd,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,CAAC,CAAC;IACpB,aAAa,GAA0B,IAAI,CAAC;IAEpD,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,EAAgB;QAC/B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,YAAY,CACV,KAMC,EACD,IAAY;QAEZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,uBAAuB,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,wBAAwB,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;QACzD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arikusi/deepseek-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
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",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"license": "MIT",
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|
|
49
|
-
"url": "
|
|
49
|
+
"url": "https://github.com/arikusi/deepseek-mcp-server"
|
|
50
50
|
},
|
|
51
51
|
"bugs": {
|
|
52
52
|
"url": "https://github.com/arikusi/deepseek-mcp-server/issues"
|