@arikusi/deepseek-mcp-server 1.0.2 → 1.1.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.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Centralized Configuration
3
+ * Loads and validates configuration from environment variables
4
+ */
5
+ import { z } from 'zod';
6
+ declare const ConfigSchema: z.ZodObject<{
7
+ apiKey: z.ZodString;
8
+ baseUrl: z.ZodDefault<z.ZodString>;
9
+ showCostInfo: z.ZodDefault<z.ZodBoolean>;
10
+ requestTimeout: z.ZodDefault<z.ZodNumber>;
11
+ maxRetries: z.ZodDefault<z.ZodNumber>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ apiKey: string;
14
+ baseUrl: string;
15
+ showCostInfo: boolean;
16
+ requestTimeout: number;
17
+ maxRetries: number;
18
+ }, {
19
+ apiKey: string;
20
+ baseUrl?: string | undefined;
21
+ showCostInfo?: boolean | undefined;
22
+ requestTimeout?: number | undefined;
23
+ maxRetries?: number | undefined;
24
+ }>;
25
+ export type Config = z.infer<typeof ConfigSchema>;
26
+ /**
27
+ * Load configuration from environment variables.
28
+ * Validates with Zod and caches the result.
29
+ * Exits process if validation fails (e.g., missing API key).
30
+ */
31
+ export declare function loadConfig(): Config;
32
+ /**
33
+ * Get the cached configuration.
34
+ * Throws if loadConfig() hasn't been called yet.
35
+ */
36
+ export declare function getConfig(): Config;
37
+ /**
38
+ * Reset cached configuration (for testing).
39
+ */
40
+ export declare function resetConfig(): void;
41
+ export {};
42
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +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;AAExB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAMhB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAIlD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA8BnC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/dist/config.js ADDED
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Centralized Configuration
3
+ * Loads and validates configuration from environment variables
4
+ */
5
+ import { z } from 'zod';
6
+ const ConfigSchema = z.object({
7
+ apiKey: z.string().min(1, 'DEEPSEEK_API_KEY is required'),
8
+ baseUrl: z.string().url().default('https://api.deepseek.com'),
9
+ showCostInfo: z.boolean().default(true),
10
+ requestTimeout: z.number().positive().default(60000),
11
+ maxRetries: z.number().min(0).max(10).default(2),
12
+ });
13
+ let cachedConfig = null;
14
+ /**
15
+ * Load configuration from environment variables.
16
+ * Validates with Zod and caches the result.
17
+ * Exits process if validation fails (e.g., missing API key).
18
+ */
19
+ export function loadConfig() {
20
+ const raw = {
21
+ apiKey: process.env.DEEPSEEK_API_KEY || '',
22
+ baseUrl: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com',
23
+ showCostInfo: process.env.SHOW_COST_INFO !== 'false',
24
+ requestTimeout: process.env.REQUEST_TIMEOUT
25
+ ? parseInt(process.env.REQUEST_TIMEOUT, 10)
26
+ : 60000,
27
+ maxRetries: process.env.MAX_RETRIES
28
+ ? parseInt(process.env.MAX_RETRIES, 10)
29
+ : 2,
30
+ };
31
+ const result = ConfigSchema.safeParse(raw);
32
+ if (!result.success) {
33
+ console.error('Error: Configuration validation failed');
34
+ const issues = result.error.issues;
35
+ for (const issue of issues) {
36
+ console.error(` - ${issue.path.join('.')}: ${issue.message}`);
37
+ }
38
+ if (!raw.apiKey) {
39
+ console.error('Please set your DeepSeek API key:');
40
+ console.error(' export DEEPSEEK_API_KEY="your-api-key-here"');
41
+ }
42
+ process.exit(1);
43
+ }
44
+ cachedConfig = result.data;
45
+ return cachedConfig;
46
+ }
47
+ /**
48
+ * Get the cached configuration.
49
+ * Throws if loadConfig() hasn't been called yet.
50
+ */
51
+ export function getConfig() {
52
+ if (!cachedConfig) {
53
+ throw new Error('Config not loaded. Call loadConfig() first.');
54
+ }
55
+ return cachedConfig;
56
+ }
57
+ /**
58
+ * Reset cached configuration (for testing).
59
+ */
60
+ export function resetConfig() {
61
+ cachedConfig = null;
62
+ }
63
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,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;CACjD,CAAC,CAAC;AAIH,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG;QACV,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;QAC1C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,0BAA0B;QACpE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,OAAO;QACpD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;YACzC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3C,CAAC,CAAC,KAAK;QACT,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YACjC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC;KACN,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
package/dist/cost.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Cost Calculation Module
3
+ * Handles pricing and cost formatting for DeepSeek API requests
4
+ */
5
+ /** DeepSeek pricing per 1M tokens (USD) */
6
+ export declare const PRICING: {
7
+ readonly 'deepseek-chat': {
8
+ readonly prompt: 0.14;
9
+ readonly completion: 0.28;
10
+ };
11
+ readonly 'deepseek-reasoner': {
12
+ readonly prompt: 0.55;
13
+ readonly completion: 2.19;
14
+ };
15
+ };
16
+ /**
17
+ * Calculate cost for a request based on token usage
18
+ */
19
+ export declare function calculateCost(promptTokens: number, completionTokens: number, model: string): number;
20
+ /**
21
+ * Format cost as readable USD string
22
+ */
23
+ export declare function formatCost(cost: number): string;
24
+ //# sourceMappingURL=cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,2CAA2C;AAC3C,eAAO,MAAM,OAAO;;;;;;;;;CASV,CAAC;AAEX;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C"}
package/dist/cost.js ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Cost Calculation Module
3
+ * Handles pricing and cost formatting for DeepSeek API requests
4
+ */
5
+ /** DeepSeek pricing per 1M tokens (USD) */
6
+ export const PRICING = {
7
+ 'deepseek-chat': {
8
+ prompt: 0.14,
9
+ completion: 0.28,
10
+ },
11
+ 'deepseek-reasoner': {
12
+ prompt: 0.55,
13
+ completion: 2.19,
14
+ },
15
+ };
16
+ /**
17
+ * Calculate cost for a request based on token usage
18
+ */
19
+ export function calculateCost(promptTokens, completionTokens, model) {
20
+ const modelPricing = PRICING[model] || PRICING['deepseek-chat'];
21
+ const promptCost = (promptTokens / 1_000_000) * modelPricing.prompt;
22
+ const completionCost = (completionTokens / 1_000_000) * modelPricing.completion;
23
+ return promptCost + completionCost;
24
+ }
25
+ /**
26
+ * Format cost as readable USD string
27
+ */
28
+ export function formatCost(cost) {
29
+ if (cost < 0.01) {
30
+ return `$${cost.toFixed(4)}`;
31
+ }
32
+ return `$${cost.toFixed(2)}`;
33
+ }
34
+ //# sourceMappingURL=cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;KACjB;IACD,mBAAmB,EAAE;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;KACjB;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAoB,EACpB,gBAAwB,EACxB,KAAa;IAEb,MAAM,YAAY,GAChB,OAAO,CAAC,KAA6B,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAErE,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IACpE,MAAM,cAAc,GAClB,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC;IAE3D,OAAO,UAAU,GAAG,cAAc,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,CAAC"}
@@ -5,15 +5,14 @@
5
5
  import type { ChatCompletionParams, ChatCompletionResponse } from './types.js';
6
6
  export declare class DeepSeekClient {
7
7
  private client;
8
- private baseURL;
9
- constructor(apiKey: string);
8
+ constructor();
10
9
  /**
11
10
  * Create a chat completion (non-streaming)
12
11
  */
13
12
  createChatCompletion(params: ChatCompletionParams): Promise<ChatCompletionResponse>;
14
13
  /**
15
14
  * Create a streaming chat completion
16
- * Returns the full text after streaming completes
15
+ * Returns the full text after streaming completes (buffered)
17
16
  */
18
17
  createStreamingChatCompletion(params: ChatCompletionParams): Promise<ChatCompletionResponse>;
19
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-client.d.ts","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA8B;gBAEjC,MAAM,EAAE,MAAM;IAW1B;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IA4ClC;;;OAGG;IACG,6BAA6B,CACjC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IAsElC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAazC"}
1
+ {"version":3,"file":"deepseek-client.d.ts","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;;IAavB;;OAEG;IACG,oBAAoB,CACxB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IAkElC;;;OAGG;IACG,6BAA6B,CACjC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IAyHlC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAazC"}
@@ -3,16 +3,16 @@
3
3
  * Wrapper around OpenAI SDK for DeepSeek API
4
4
  */
5
5
  import OpenAI from 'openai';
6
+ import { getConfig } from './config.js';
6
7
  export class DeepSeekClient {
7
8
  client;
8
- baseURL = 'https://api.deepseek.com';
9
- constructor(apiKey) {
10
- if (!apiKey) {
11
- throw new Error('DeepSeek API key is required');
12
- }
9
+ constructor() {
10
+ const config = getConfig();
13
11
  this.client = new OpenAI({
14
- apiKey,
15
- baseURL: this.baseURL,
12
+ apiKey: config.apiKey,
13
+ baseURL: config.baseUrl,
14
+ timeout: config.requestTimeout,
15
+ maxRetries: config.maxRetries,
16
16
  });
17
17
  }
18
18
  /**
@@ -20,7 +20,9 @@ export class DeepSeekClient {
20
20
  */
21
21
  async createChatCompletion(params) {
22
22
  try {
23
- const response = await this.client.chat.completions.create({
23
+ // Build request params - using 'any' for OpenAI SDK compatibility
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ const requestParams = {
24
26
  model: params.model,
25
27
  messages: params.messages,
26
28
  temperature: params.temperature ?? 1.0,
@@ -30,7 +32,14 @@ export class DeepSeekClient {
30
32
  presence_penalty: params.presence_penalty,
31
33
  stop: params.stop,
32
34
  stream: false,
33
- });
35
+ };
36
+ if (params.tools?.length) {
37
+ requestParams.tools = params.tools;
38
+ }
39
+ if (params.tool_choice !== undefined) {
40
+ requestParams.tool_choice = params.tool_choice;
41
+ }
42
+ const response = await this.client.chat.completions.create(requestParams);
34
43
  const choice = response.choices[0];
35
44
  if (!choice) {
36
45
  throw new Error('No response from DeepSeek API');
@@ -39,6 +48,15 @@ export class DeepSeekClient {
39
48
  const reasoning_content = 'reasoning_content' in choice.message
40
49
  ? choice.message.reasoning_content
41
50
  : undefined;
51
+ // Extract tool_calls if present
52
+ const tool_calls = choice.message.tool_calls?.map((tc) => ({
53
+ id: tc.id,
54
+ type: 'function',
55
+ function: {
56
+ name: tc.function.name,
57
+ arguments: tc.function.arguments,
58
+ },
59
+ }));
42
60
  return {
43
61
  content: choice.message.content || '',
44
62
  reasoning_content,
@@ -49,6 +67,7 @@ export class DeepSeekClient {
49
67
  total_tokens: response.usage?.total_tokens || 0,
50
68
  },
51
69
  finish_reason: choice.finish_reason || 'stop',
70
+ tool_calls: tool_calls?.length ? tool_calls : undefined,
52
71
  };
53
72
  }
54
73
  catch (error) {
@@ -58,11 +77,13 @@ export class DeepSeekClient {
58
77
  }
59
78
  /**
60
79
  * Create a streaming chat completion
61
- * Returns the full text after streaming completes
80
+ * Returns the full text after streaming completes (buffered)
62
81
  */
63
82
  async createStreamingChatCompletion(params) {
64
83
  try {
65
- const stream = await this.client.chat.completions.create({
84
+ // Build request params - using 'any' for OpenAI SDK compatibility
85
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+ const requestParams = {
66
87
  model: params.model,
67
88
  messages: params.messages,
68
89
  temperature: params.temperature ?? 1.0,
@@ -72,7 +93,14 @@ export class DeepSeekClient {
72
93
  presence_penalty: params.presence_penalty,
73
94
  stop: params.stop,
74
95
  stream: true,
75
- });
96
+ };
97
+ if (params.tools?.length) {
98
+ requestParams.tools = params.tools;
99
+ }
100
+ if (params.tool_choice !== undefined) {
101
+ requestParams.tool_choice = params.tool_choice;
102
+ }
103
+ const stream = await this.client.chat.completions.create(requestParams);
76
104
  let fullContent = '';
77
105
  let reasoningContent = '';
78
106
  let modelName = params.model;
@@ -82,6 +110,8 @@ export class DeepSeekClient {
82
110
  completion_tokens: 0,
83
111
  total_tokens: 0,
84
112
  };
113
+ // Tool calls accumulation (index-based)
114
+ const toolCallsMap = new Map();
85
115
  // Collect all chunks
86
116
  for await (const chunk of stream) {
87
117
  const choice = chunk.choices[0];
@@ -92,9 +122,31 @@ export class DeepSeekClient {
92
122
  fullContent += choice.delta.content;
93
123
  }
94
124
  // Collect reasoning content (for deepseek-reasoner)
95
- if ('reasoning_content' in choice.delta) {
125
+ if ('reasoning_content' in (choice.delta || {})) {
96
126
  reasoningContent += choice.delta.reasoning_content || '';
97
127
  }
128
+ // Accumulate tool_calls deltas
129
+ if (choice.delta?.tool_calls) {
130
+ for (const tc of choice.delta.tool_calls) {
131
+ const existing = toolCallsMap.get(tc.index);
132
+ if (existing) {
133
+ if (tc.function?.name)
134
+ existing.function.name += tc.function.name;
135
+ if (tc.function?.arguments)
136
+ existing.function.arguments += tc.function.arguments;
137
+ }
138
+ else {
139
+ toolCallsMap.set(tc.index, {
140
+ id: tc.id || '',
141
+ type: 'function',
142
+ function: {
143
+ name: tc.function?.name || '',
144
+ arguments: tc.function?.arguments || '',
145
+ },
146
+ });
147
+ }
148
+ }
149
+ }
98
150
  // Get finish reason
99
151
  if (choice.finish_reason) {
100
152
  finishReason = choice.finish_reason;
@@ -108,12 +160,19 @@ export class DeepSeekClient {
108
160
  usage = chunk.usage;
109
161
  }
110
162
  }
163
+ // Convert tool calls map to sorted array
164
+ const toolCalls = toolCallsMap.size > 0
165
+ ? Array.from(toolCallsMap.entries())
166
+ .sort(([a], [b]) => a - b)
167
+ .map(([, tc]) => tc)
168
+ : undefined;
111
169
  return {
112
170
  content: fullContent,
113
171
  reasoning_content: reasoningContent || undefined,
114
172
  model: modelName,
115
173
  usage,
116
174
  finish_reason: finishReason,
175
+ tool_calls: toolCalls,
117
176
  };
118
177
  }
119
178
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-client.js","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepseek-client.js","sourceRoot":"","sources":["../src/deepseek-client.ts"],"names":[],"mappings":"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"}