@arikusi/deepseek-mcp-server 1.1.1 → 1.3.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.
Files changed (67) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/README.md +134 -18
  3. package/dist/circuit-breaker.d.ts +37 -0
  4. package/dist/circuit-breaker.d.ts.map +1 -0
  5. package/dist/circuit-breaker.js +101 -0
  6. package/dist/circuit-breaker.js.map +1 -0
  7. package/dist/config.d.ts +9 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +10 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/cost.d.ts +30 -13
  12. package/dist/cost.d.ts.map +1 -1
  13. package/dist/cost.js +58 -19
  14. package/dist/cost.js.map +1 -1
  15. package/dist/deepseek-client.d.ts +23 -5
  16. package/dist/deepseek-client.d.ts.map +1 -1
  17. package/dist/deepseek-client.js +256 -115
  18. package/dist/deepseek-client.js.map +1 -1
  19. package/dist/errors.d.ts +13 -0
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +18 -0
  22. package/dist/errors.js.map +1 -1
  23. package/dist/index.js +5 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/resources/config.d.ts +7 -0
  26. package/dist/resources/config.d.ts.map +1 -0
  27. package/dist/resources/config.js +44 -0
  28. package/dist/resources/config.js.map +1 -0
  29. package/dist/resources/index.d.ts +7 -0
  30. package/dist/resources/index.d.ts.map +1 -0
  31. package/dist/resources/index.js +13 -0
  32. package/dist/resources/index.js.map +1 -0
  33. package/dist/resources/models.d.ts +7 -0
  34. package/dist/resources/models.d.ts.map +1 -0
  35. package/dist/resources/models.js +62 -0
  36. package/dist/resources/models.js.map +1 -0
  37. package/dist/resources/usage.d.ts +7 -0
  38. package/dist/resources/usage.d.ts.map +1 -0
  39. package/dist/resources/usage.js +31 -0
  40. package/dist/resources/usage.js.map +1 -0
  41. package/dist/schemas.d.ts +72 -20
  42. package/dist/schemas.d.ts.map +1 -1
  43. package/dist/schemas.js +15 -2
  44. package/dist/schemas.js.map +1 -1
  45. package/dist/session.d.ts +68 -0
  46. package/dist/session.d.ts.map +1 -0
  47. package/dist/session.js +184 -0
  48. package/dist/session.js.map +1 -0
  49. package/dist/tools/deepseek-chat.d.ts +2 -1
  50. package/dist/tools/deepseek-chat.d.ts.map +1 -1
  51. package/dist/tools/deepseek-chat.js +97 -32
  52. package/dist/tools/deepseek-chat.js.map +1 -1
  53. package/dist/tools/deepseek-sessions.d.ts +7 -0
  54. package/dist/tools/deepseek-sessions.d.ts.map +1 -0
  55. package/dist/tools/deepseek-sessions.js +101 -0
  56. package/dist/tools/deepseek-sessions.js.map +1 -0
  57. package/dist/tools/index.d.ts.map +1 -1
  58. package/dist/tools/index.js +2 -0
  59. package/dist/tools/index.js.map +1 -1
  60. package/dist/types.d.ts +71 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/types.js.map +1 -1
  63. package/dist/usage-tracker.d.ts +40 -0
  64. package/dist/usage-tracker.d.ts.map +1 -0
  65. package/dist/usage-tracker.js +76 -0
  66. package/dist/usage-tracker.js.map +1 -0
  67. package/package.json +5 -2
@@ -0,0 +1,184 @@
1
+ /**
2
+ * In-Memory Session Store
3
+ * Manages multi-turn conversation sessions within a single MCP server process lifetime
4
+ */
5
+ import { randomUUID } from 'crypto';
6
+ 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
+ export class SessionStore {
13
+ static instance = null;
14
+ sessions = new Map();
15
+ 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
+ /**
30
+ * Create a new session or return existing one
31
+ */
32
+ create(sessionId) {
33
+ const id = sessionId || randomUUID();
34
+ const existing = this.sessions.get(id);
35
+ if (existing) {
36
+ existing.lastAccessedAt = Date.now();
37
+ return existing;
38
+ }
39
+ // Enforce max sessions limit
40
+ const config = getConfig();
41
+ if (this.sessions.size >= config.maxSessions) {
42
+ this.cleanup();
43
+ // If still at limit after cleanup, remove oldest session
44
+ if (this.sessions.size >= config.maxSessions) {
45
+ this.removeOldest();
46
+ }
47
+ }
48
+ const session = {
49
+ id,
50
+ messages: [],
51
+ createdAt: Date.now(),
52
+ lastAccessedAt: Date.now(),
53
+ totalCost: 0,
54
+ requestCount: 0,
55
+ };
56
+ this.sessions.set(id, session);
57
+ return session;
58
+ }
59
+ /**
60
+ * Get a session by ID, returns undefined if not found or expired
61
+ */
62
+ get(sessionId) {
63
+ const session = this.sessions.get(sessionId);
64
+ if (!session)
65
+ return undefined;
66
+ // Check TTL
67
+ if (this.isExpired(session)) {
68
+ this.sessions.delete(sessionId);
69
+ return undefined;
70
+ }
71
+ session.lastAccessedAt = Date.now();
72
+ return session;
73
+ }
74
+ /**
75
+ * Add messages to a session
76
+ */
77
+ addMessages(sessionId, messages) {
78
+ const session = this.get(sessionId);
79
+ if (!session) {
80
+ throw new Error(`Session not found: ${sessionId}`);
81
+ }
82
+ session.messages.push(...messages);
83
+ }
84
+ /**
85
+ * Get all messages from a session
86
+ */
87
+ getMessages(sessionId) {
88
+ const session = this.get(sessionId);
89
+ if (!session)
90
+ return [];
91
+ return [...session.messages];
92
+ }
93
+ /**
94
+ * Delete a session
95
+ */
96
+ delete(sessionId) {
97
+ return this.sessions.delete(sessionId);
98
+ }
99
+ /**
100
+ * List all active (non-expired) sessions
101
+ */
102
+ list() {
103
+ this.lazyCleanup();
104
+ const result = [];
105
+ for (const session of this.sessions.values()) {
106
+ if (!this.isExpired(session)) {
107
+ result.push({
108
+ id: session.id,
109
+ messageCount: session.messages.length,
110
+ createdAt: session.createdAt,
111
+ lastAccessedAt: session.lastAccessedAt,
112
+ totalCost: session.totalCost,
113
+ requestCount: session.requestCount,
114
+ });
115
+ }
116
+ }
117
+ return result;
118
+ }
119
+ /**
120
+ * Clean up expired sessions, returns number of removed sessions
121
+ */
122
+ cleanup() {
123
+ let removed = 0;
124
+ for (const [id, session] of this.sessions) {
125
+ if (this.isExpired(session)) {
126
+ this.sessions.delete(id);
127
+ removed++;
128
+ }
129
+ }
130
+ return removed;
131
+ }
132
+ /**
133
+ * Get total cost across all sessions
134
+ */
135
+ getTotalCost() {
136
+ let total = 0;
137
+ for (const session of this.sessions.values()) {
138
+ total += session.totalCost;
139
+ }
140
+ return total;
141
+ }
142
+ /**
143
+ * Get active session count
144
+ */
145
+ get size() {
146
+ return this.sessions.size;
147
+ }
148
+ /**
149
+ * Clear all sessions
150
+ */
151
+ clear() {
152
+ const count = this.sessions.size;
153
+ this.sessions.clear();
154
+ return count;
155
+ }
156
+ /**
157
+ * Lazy cleanup: runs full cleanup every 10 requests
158
+ */
159
+ lazyCleanup() {
160
+ this.requestCounter++;
161
+ if (this.requestCounter % 10 === 0) {
162
+ this.cleanup();
163
+ }
164
+ }
165
+ isExpired(session) {
166
+ const config = getConfig();
167
+ const ttlMs = config.sessionTtlMinutes * 60 * 1000;
168
+ return Date.now() - session.lastAccessedAt > ttlMs;
169
+ }
170
+ removeOldest() {
171
+ let oldestId = null;
172
+ let oldestTime = Infinity;
173
+ for (const [id, session] of this.sessions) {
174
+ if (session.lastAccessedAt < oldestTime) {
175
+ oldestTime = session.lastAccessedAt;
176
+ oldestId = id;
177
+ }
178
+ }
179
+ if (oldestId) {
180
+ this.sessions.delete(oldestId);
181
+ }
182
+ }
183
+ }
184
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Tool: deepseek_chat
3
- * Chat completion with DeepSeek models
3
+ * Chat completion with DeepSeek models (V3.2)
4
+ * Supports multi-turn conversations via session_id
4
5
  */
5
6
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
7
  import type { DeepSeekClient } from '../deepseek-client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-chat.d.ts","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAkLhF"}
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;AAWzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAuB5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAoQhF"}
@@ -1,12 +1,15 @@
1
1
  /**
2
2
  * Tool: deepseek_chat
3
- * Chat completion with DeepSeek models
3
+ * Chat completion with DeepSeek models (V3.2)
4
+ * Supports multi-turn conversations via session_id
4
5
  */
5
6
  import { z } from 'zod';
6
7
  import { getConfig } from '../config.js';
7
8
  import { calculateCost, formatCost } from '../cost.js';
8
- import { ExtendedMessageSchema, ChatInputWithToolsSchema, ToolDefinitionSchema, ToolChoiceSchema, } from '../schemas.js';
9
+ import { ExtendedMessageSchema, ChatInputWithToolsSchema, ToolDefinitionSchema, ToolChoiceSchema, ThinkingSchema, } from '../schemas.js';
9
10
  import { getErrorMessage } from '../types.js';
11
+ import { SessionStore } from '../session.js';
12
+ import { UsageTracker } from '../usage-tracker.js';
10
13
  /** Maximum allowed message content length (from config) */
11
14
  function validateMessageLength(input) {
12
15
  const maxLen = getConfig().maxMessageLength;
@@ -19,10 +22,10 @@ function validateMessageLength(input) {
19
22
  export function registerChatTool(server, client) {
20
23
  server.registerTool('deepseek_chat', {
21
24
  title: 'DeepSeek Chat Completion',
22
- description: 'Chat with DeepSeek AI models. Supports deepseek-chat for general conversations and ' +
23
- 'deepseek-reasoner (R1) for complex reasoning tasks with chain-of-thought explanations. ' +
24
- 'Supports function calling via the tools parameter for structured tool use. ' +
25
- 'The reasoner model provides both reasoning_content (thinking process) and content (final answer).',
25
+ description: 'Chat with DeepSeek V3.2 AI models. Supports deepseek-chat for general conversations and ' +
26
+ 'deepseek-reasoner for complex reasoning tasks with chain-of-thought explanations. ' +
27
+ 'Features: multi-turn sessions (session_id), function calling (tools parameter), thinking mode, ' +
28
+ 'JSON output mode, automatic cost tracking, and model fallback with circuit breaker resilience.',
26
29
  inputSchema: {
27
30
  messages: z
28
31
  .array(ExtendedMessageSchema)
@@ -31,19 +34,19 @@ export function registerChatTool(server, client) {
31
34
  model: z
32
35
  .enum(['deepseek-chat', 'deepseek-reasoner'])
33
36
  .default('deepseek-chat')
34
- .describe('Model to use. deepseek-chat for general tasks, deepseek-reasoner for complex reasoning'),
37
+ .describe('Model to use. Both run DeepSeek V3.2 (128K context). deepseek-chat: non-thinking mode (max 8K output), deepseek-reasoner: thinking mode (max 64K output)'),
35
38
  temperature: z
36
39
  .number()
37
40
  .min(0)
38
41
  .max(2)
39
42
  .optional()
40
- .describe('Sampling temperature (0-2). Higher = more random. Default: 1.0'),
43
+ .describe('Sampling temperature (0-2). Higher = more random. Default: 1.0. Ignored when thinking mode is enabled.'),
41
44
  max_tokens: z
42
45
  .number()
43
46
  .min(1)
44
- .max(32768)
47
+ .max(65536)
45
48
  .optional()
46
- .describe('Maximum tokens to generate. Default: model maximum'),
49
+ .describe('Maximum tokens to generate. deepseek-chat: max 8192, deepseek-reasoner: max 65536'),
47
50
  stream: z
48
51
  .boolean()
49
52
  .optional()
@@ -55,6 +58,16 @@ export function registerChatTool(server, client) {
55
58
  .optional()
56
59
  .describe('Array of tool definitions for function calling. Each tool has type "function" and a function object with name, description, and parameters (JSON Schema).'),
57
60
  tool_choice: ToolChoiceSchema.optional().describe('Controls which tool the model calls. "auto" (default), "none", "required", or {type:"function",function:{name:"..."}}'),
61
+ thinking: ThinkingSchema.describe('Enable thinking mode for enhanced reasoning. When enabled, temperature/top_p/frequency_penalty/presence_penalty are automatically ignored. Use {type: "enabled"} to activate.'),
62
+ json_mode: z
63
+ .boolean()
64
+ .optional()
65
+ .describe('Enable JSON output mode. The model will output valid JSON. Include the word "json" in your prompt for best results. Supported by both models.'),
66
+ session_id: z
67
+ .string()
68
+ .optional()
69
+ .describe('Session ID for multi-turn conversations. When provided, previous messages from this session are prepended to the current messages. ' +
70
+ 'If the session does not exist, it is created automatically. Omit for stateless single-turn requests.'),
58
71
  },
59
72
  outputSchema: {
60
73
  content: z.string(),
@@ -64,6 +77,8 @@ export function registerChatTool(server, client) {
64
77
  prompt_tokens: z.number(),
65
78
  completion_tokens: z.number(),
66
79
  total_tokens: z.number(),
80
+ prompt_cache_hit_tokens: z.number().optional(),
81
+ prompt_cache_miss_tokens: z.number().optional(),
67
82
  }),
68
83
  finish_reason: z.string(),
69
84
  tool_calls: z
@@ -76,33 +91,78 @@ export function registerChatTool(server, client) {
76
91
  }),
77
92
  }))
78
93
  .optional(),
94
+ session_id: z.string().optional(),
79
95
  },
80
96
  }, async (input) => {
81
97
  try {
82
98
  // Validate message content length
83
99
  validateMessageLength(input);
84
- // Validate input with extended schema (supports tools)
100
+ // Validate input with extended schema (supports tools + session_id)
85
101
  const validated = ChatInputWithToolsSchema.parse(input);
86
- console.error(`[DeepSeek MCP] Request: model=${validated.model}, messages=${validated.messages.length}, stream=${validated.stream}${validated.tools ? `, tools=${validated.tools.length}` : ''}`);
102
+ // JSON mode guard: warn if "json" word is not in any message content
103
+ if (validated.json_mode) {
104
+ const hasJsonWord = validated.messages.some((m) => m.content.toLowerCase().includes('json'));
105
+ if (!hasJsonWord) {
106
+ console.error('[DeepSeek MCP] Warning: json_mode enabled but no "json" word found in messages. Results may be unreliable.');
107
+ }
108
+ }
109
+ // Model-aware max_tokens warnings
110
+ if (validated.max_tokens) {
111
+ if (validated.model === 'deepseek-chat' && validated.max_tokens > 8192) {
112
+ console.error(`[DeepSeek MCP] Warning: deepseek-chat max output is 8192 tokens, requested ${validated.max_tokens}. API may truncate.`);
113
+ }
114
+ if (validated.model === 'deepseek-reasoner' && validated.max_tokens > 65536) {
115
+ console.error(`[DeepSeek MCP] Warning: deepseek-reasoner max output is 65536 tokens, requested ${validated.max_tokens}. API may truncate.`);
116
+ }
117
+ }
118
+ // Session management: build full message list
119
+ let allMessages = validated.messages;
120
+ const sessionStore = SessionStore.getInstance();
121
+ if (validated.session_id) {
122
+ // Create or get session
123
+ const session = sessionStore.create(validated.session_id);
124
+ // Prepend previous session messages to current messages
125
+ const previousMessages = sessionStore.getMessages(validated.session_id);
126
+ allMessages = [...previousMessages, ...validated.messages];
127
+ console.error(`[DeepSeek MCP] Session: id=${validated.session_id}, previous_messages=${previousMessages.length}, total_messages=${allMessages.length}`);
128
+ }
129
+ console.error(`[DeepSeek MCP] Request: model=${validated.model}, messages=${allMessages.length}, stream=${validated.stream}${validated.tools ? `, tools=${validated.tools.length}` : ''}${validated.thinking ? `, thinking=${validated.thinking.type}` : ''}${validated.json_mode ? ', json_mode=true' : ''}${validated.session_id ? `, session=${validated.session_id}` : ''}`);
130
+ // Build params for client
131
+ const clientParams = {
132
+ model: validated.model,
133
+ messages: allMessages,
134
+ temperature: validated.temperature,
135
+ max_tokens: validated.max_tokens,
136
+ tools: validated.tools,
137
+ tool_choice: validated.tool_choice,
138
+ thinking: validated.thinking,
139
+ response_format: validated.json_mode
140
+ ? { type: 'json_object' }
141
+ : undefined,
142
+ };
87
143
  // Call appropriate method based on stream parameter
88
144
  const response = validated.stream
89
- ? await client.createStreamingChatCompletion({
90
- model: validated.model,
91
- messages: validated.messages,
92
- temperature: validated.temperature,
93
- max_tokens: validated.max_tokens,
94
- tools: validated.tools,
95
- tool_choice: validated.tool_choice,
96
- })
97
- : await client.createChatCompletion({
98
- model: validated.model,
99
- messages: validated.messages,
100
- temperature: validated.temperature,
101
- max_tokens: validated.max_tokens,
102
- tools: validated.tools,
103
- tool_choice: validated.tool_choice,
104
- });
145
+ ? await client.createStreamingChatCompletion(clientParams)
146
+ : await client.createChatCompletion(clientParams);
105
147
  console.error(`[DeepSeek MCP] Response: tokens=${response.usage.total_tokens}, finish_reason=${response.finish_reason}${response.tool_calls ? `, tool_calls=${response.tool_calls.length}` : ''}`);
148
+ // Calculate cost
149
+ const costBreakdown = calculateCost(response.usage);
150
+ // Update session with new messages and response
151
+ if (validated.session_id) {
152
+ const session = sessionStore.get(validated.session_id);
153
+ if (session) {
154
+ // Add the new user messages to session
155
+ sessionStore.addMessages(validated.session_id, validated.messages);
156
+ // Add assistant response to session
157
+ sessionStore.addMessages(validated.session_id, [
158
+ { role: 'assistant', content: response.content },
159
+ ]);
160
+ session.totalCost += costBreakdown.totalCost;
161
+ session.requestCount++;
162
+ }
163
+ }
164
+ // Track usage globally
165
+ UsageTracker.getInstance().trackRequest(response.usage, costBreakdown.totalCost);
106
166
  // Format response
107
167
  let responseText = '';
108
168
  // Add reasoning content if available (for deepseek-reasoner)
@@ -119,17 +179,21 @@ export function registerChatTool(server, client) {
119
179
  responseText += `- Arguments: ${tc.function.arguments}\n\n`;
120
180
  }
121
181
  }
122
- // Calculate cost
123
- const cost = calculateCost(response.usage.prompt_tokens, response.usage.completion_tokens, response.model);
124
182
  // Add usage stats with cost information (controlled by config)
125
183
  if (getConfig().showCostInfo) {
126
184
  responseText += `\n---\n**Request Information:**\n`;
127
185
  responseText += `- **Tokens:** ${response.usage.total_tokens} (${response.usage.prompt_tokens} prompt + ${response.usage.completion_tokens} completion)\n`;
128
186
  responseText += `- **Model:** ${response.model}\n`;
129
- responseText += `- **Cost:** ${formatCost(cost)}`;
187
+ responseText += `- **Cost:** ${formatCost(costBreakdown)}`;
130
188
  if (response.tool_calls?.length) {
131
189
  responseText += `\n- **Tool Calls:** ${response.tool_calls.length}`;
132
190
  }
191
+ if (validated.session_id) {
192
+ const session = sessionStore.get(validated.session_id);
193
+ if (session) {
194
+ responseText += `\n- **Session:** ${validated.session_id} (${session.messages.length} messages, ${session.requestCount} requests, $${session.totalCost.toFixed(4)} total)`;
195
+ }
196
+ }
133
197
  }
134
198
  return {
135
199
  content: [
@@ -140,7 +204,8 @@ export function registerChatTool(server, client) {
140
204
  ],
141
205
  structuredContent: {
142
206
  ...response,
143
- cost_usd: parseFloat(cost.toFixed(6)),
207
+ cost_usd: parseFloat(costBreakdown.totalCost.toFixed(6)),
208
+ ...(validated.session_id ? { session_id: validated.session_id } : {}),
144
209
  },
145
210
  };
146
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-chat.js","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepseek-chat.js","sourceRoot":"","sources":["../../src/tools/deepseek-chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool: deepseek_sessions
3
+ * Session management for multi-turn conversations
4
+ */
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ export declare function registerSessionsTool(server: McpServer): void;
7
+ //# sourceMappingURL=deepseek-sessions.d.ts.map
@@ -0,0 +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;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwG5D"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Tool: deepseek_sessions
3
+ * Session management for multi-turn conversations
4
+ */
5
+ import { z } from 'zod';
6
+ import { SessionStore } from '../session.js';
7
+ import { getErrorMessage } from '../types.js';
8
+ export function registerSessionsTool(server) {
9
+ server.registerTool('deepseek_sessions', {
10
+ title: 'DeepSeek Session Management',
11
+ description: 'Manage multi-turn conversation sessions. List active sessions, delete a specific session, or clear all sessions. ' +
12
+ 'Sessions store conversation history for use with the session_id parameter in deepseek_chat.',
13
+ inputSchema: {
14
+ action: z
15
+ .enum(['list', 'clear', 'delete'])
16
+ .describe('Action to perform. "list": show all active sessions, "clear": remove all sessions, "delete": remove a specific session (requires session_id)'),
17
+ session_id: z
18
+ .string()
19
+ .optional()
20
+ .describe('Session ID to delete (required when action is "delete")'),
21
+ },
22
+ }, async (input) => {
23
+ try {
24
+ const store = SessionStore.getInstance();
25
+ switch (input.action) {
26
+ case 'list': {
27
+ const sessions = store.list();
28
+ if (sessions.length === 0) {
29
+ return {
30
+ content: [
31
+ {
32
+ type: 'text',
33
+ text: 'No active sessions.',
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ let text = `**Active Sessions (${sessions.length}):**\n\n`;
39
+ for (const s of sessions) {
40
+ const created = new Date(s.createdAt).toISOString();
41
+ const lastAccess = new Date(s.lastAccessedAt).toISOString();
42
+ text += `- **${s.id}**\n`;
43
+ text += ` Messages: ${s.messageCount} | Requests: ${s.requestCount} | Cost: $${s.totalCost.toFixed(4)}\n`;
44
+ text += ` Created: ${created} | Last access: ${lastAccess}\n\n`;
45
+ }
46
+ return {
47
+ content: [{ type: 'text', text }],
48
+ };
49
+ }
50
+ case 'delete': {
51
+ if (!input.session_id) {
52
+ return {
53
+ content: [
54
+ {
55
+ type: 'text',
56
+ text: 'Error: session_id is required for delete action.',
57
+ },
58
+ ],
59
+ isError: true,
60
+ };
61
+ }
62
+ const deleted = store.delete(input.session_id);
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: deleted
68
+ ? `Session "${input.session_id}" deleted successfully.`
69
+ : `Session "${input.session_id}" not found.`,
70
+ },
71
+ ],
72
+ };
73
+ }
74
+ case 'clear': {
75
+ const count = store.clear();
76
+ return {
77
+ content: [
78
+ {
79
+ type: 'text',
80
+ text: `Cleared ${count} session(s).`,
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ }
86
+ }
87
+ catch (error) {
88
+ console.error('[DeepSeek MCP] Session error:', error);
89
+ return {
90
+ content: [
91
+ {
92
+ type: 'text',
93
+ text: `Error: ${getErrorMessage(error)}`,
94
+ },
95
+ ],
96
+ isError: true,
97
+ };
98
+ }
99
+ });
100
+ }
101
+ //# sourceMappingURL=deepseek-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepseek-sessions.js","sourceRoot":"","sources":["../../src/tools/deepseek-sessions.ts"],"names":[],"mappings":"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"}
@@ -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;AAG5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAEhF"}
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;AAI5D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAGhF"}
@@ -3,7 +3,9 @@
3
3
  * Registers all tools with the MCP server
4
4
  */
5
5
  import { registerChatTool } from './deepseek-chat.js';
6
+ import { registerSessionsTool } from './deepseek-sessions.js';
6
7
  export function registerAllTools(server, client) {
7
8
  registerChatTool(server, client);
9
+ registerSessionsTool(server);
8
10
  }
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAsB;IACxE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAsB;IACxE,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}