@arikusi/deepseek-mcp-server 1.0.3 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -1
- package/README.md +120 -23
- package/dist/config.d.ts +48 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +68 -0
- package/dist/config.js.map +1 -0
- package/dist/cost.d.ts +24 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +34 -0
- package/dist/cost.js.map +1 -0
- package/dist/deepseek-client.d.ts +10 -3
- package/dist/deepseek-client.d.ts.map +1 -1
- package/dist/deepseek-client.js +99 -37
- package/dist/deepseek-client.js.map +1 -1
- package/dist/errors.d.ts +71 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +74 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -505
- package/dist/index.js.map +1 -1
- package/dist/prompts/advanced.d.ts +8 -0
- package/dist/prompts/advanced.d.ts.map +1 -0
- package/dist/prompts/advanced.js +187 -0
- package/dist/prompts/advanced.js.map +1 -0
- package/dist/prompts/core.d.ts +8 -0
- package/dist/prompts/core.d.ts.map +1 -0
- package/dist/prompts/core.js +188 -0
- package/dist/prompts/core.js.map +1 -0
- package/dist/prompts/function-calling.d.ts +7 -0
- package/dist/prompts/function-calling.d.ts.map +1 -0
- package/dist/prompts/function-calling.js +87 -0
- package/dist/prompts/function-calling.js.map +1 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +13 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/schemas.d.ts +258 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +56 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +16 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/deepseek-chat.d.ts +8 -0
- package/dist/tools/deepseek-chat.d.ts.map +1 -0
- package/dist/tools/deepseek-chat.js +162 -0
- package/dist/tools/deepseek-chat.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +135 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -1
- package/dist/types.js.map +1 -1
- package/package.json +10 -4
package/dist/types.d.ts
CHANGED
|
@@ -9,13 +9,50 @@ export type DeepSeekModel = 'deepseek-chat' | 'deepseek-reasoner';
|
|
|
9
9
|
/**
|
|
10
10
|
* Message role in conversation
|
|
11
11
|
*/
|
|
12
|
-
export type MessageRole = 'system' | 'user' | 'assistant';
|
|
12
|
+
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
13
13
|
/**
|
|
14
14
|
* Chat message structure
|
|
15
15
|
*/
|
|
16
16
|
export interface ChatMessage {
|
|
17
17
|
role: MessageRole;
|
|
18
18
|
content: string;
|
|
19
|
+
tool_call_id?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Function definition within a tool
|
|
23
|
+
*/
|
|
24
|
+
export interface FunctionDefinition {
|
|
25
|
+
name: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
parameters?: Record<string, unknown>;
|
|
28
|
+
strict?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Tool definition for function calling
|
|
32
|
+
*/
|
|
33
|
+
export interface ToolDefinition {
|
|
34
|
+
type: 'function';
|
|
35
|
+
function: FunctionDefinition;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Controls which tool the model calls
|
|
39
|
+
*/
|
|
40
|
+
export type ToolChoice = 'auto' | 'none' | 'required' | {
|
|
41
|
+
type: 'function';
|
|
42
|
+
function: {
|
|
43
|
+
name: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Tool call returned by the model
|
|
48
|
+
*/
|
|
49
|
+
export interface ToolCall {
|
|
50
|
+
id: string;
|
|
51
|
+
type: 'function';
|
|
52
|
+
function: {
|
|
53
|
+
name: string;
|
|
54
|
+
arguments: string;
|
|
55
|
+
};
|
|
19
56
|
}
|
|
20
57
|
/**
|
|
21
58
|
* Parameters for chat completion request
|
|
@@ -29,6 +66,8 @@ export interface ChatCompletionParams {
|
|
|
29
66
|
frequency_penalty?: number;
|
|
30
67
|
presence_penalty?: number;
|
|
31
68
|
stop?: string | string[];
|
|
69
|
+
tools?: ToolDefinition[];
|
|
70
|
+
tool_choice?: ToolChoice;
|
|
32
71
|
}
|
|
33
72
|
/**
|
|
34
73
|
* Response from DeepSeek chat completion
|
|
@@ -43,6 +82,7 @@ export interface ChatCompletionResponse {
|
|
|
43
82
|
total_tokens: number;
|
|
44
83
|
};
|
|
45
84
|
finish_reason: string;
|
|
85
|
+
tool_calls?: ToolCall[];
|
|
46
86
|
}
|
|
47
87
|
/**
|
|
48
88
|
* Tool input schema for deepseek_chat tool
|
|
@@ -51,11 +91,27 @@ export interface DeepSeekChatInput {
|
|
|
51
91
|
messages: Array<{
|
|
52
92
|
role: string;
|
|
53
93
|
content: string;
|
|
94
|
+
tool_call_id?: string;
|
|
54
95
|
}>;
|
|
55
96
|
model?: 'deepseek-chat' | 'deepseek-reasoner';
|
|
56
97
|
temperature?: number;
|
|
57
98
|
max_tokens?: number;
|
|
58
99
|
stream?: boolean;
|
|
100
|
+
tools?: Array<{
|
|
101
|
+
type: 'function';
|
|
102
|
+
function: {
|
|
103
|
+
name: string;
|
|
104
|
+
description?: string;
|
|
105
|
+
parameters?: Record<string, unknown>;
|
|
106
|
+
strict?: boolean;
|
|
107
|
+
};
|
|
108
|
+
}>;
|
|
109
|
+
tool_choice?: 'auto' | 'none' | 'required' | {
|
|
110
|
+
type: 'function';
|
|
111
|
+
function: {
|
|
112
|
+
name: string;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
59
115
|
}
|
|
60
116
|
/**
|
|
61
117
|
* Error response structure
|
|
@@ -67,4 +123,82 @@ export interface DeepSeekError {
|
|
|
67
123
|
code: string;
|
|
68
124
|
};
|
|
69
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* DeepSeek chat completion message (extends OpenAI with reasoning_content)
|
|
128
|
+
*/
|
|
129
|
+
export interface DeepSeekChatCompletionMessage {
|
|
130
|
+
content: string | null;
|
|
131
|
+
role: 'assistant';
|
|
132
|
+
tool_calls?: Array<{
|
|
133
|
+
id: string;
|
|
134
|
+
type: 'function';
|
|
135
|
+
function: {
|
|
136
|
+
name: string;
|
|
137
|
+
arguments: string;
|
|
138
|
+
};
|
|
139
|
+
}>;
|
|
140
|
+
reasoning_content?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* DeepSeek chat completion choice
|
|
144
|
+
*/
|
|
145
|
+
export interface DeepSeekChatCompletionChoice {
|
|
146
|
+
message: DeepSeekChatCompletionMessage;
|
|
147
|
+
finish_reason: string;
|
|
148
|
+
index: number;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* DeepSeek chat completion response (extends OpenAI response)
|
|
152
|
+
*/
|
|
153
|
+
export interface DeepSeekRawResponse {
|
|
154
|
+
id: string;
|
|
155
|
+
choices: DeepSeekChatCompletionChoice[];
|
|
156
|
+
model: string;
|
|
157
|
+
usage?: {
|
|
158
|
+
prompt_tokens: number;
|
|
159
|
+
completion_tokens: number;
|
|
160
|
+
total_tokens: number;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* DeepSeek stream delta
|
|
165
|
+
*/
|
|
166
|
+
export interface DeepSeekStreamDelta {
|
|
167
|
+
content?: string;
|
|
168
|
+
reasoning_content?: string;
|
|
169
|
+
tool_calls?: Array<{
|
|
170
|
+
index: number;
|
|
171
|
+
id?: string;
|
|
172
|
+
type?: 'function';
|
|
173
|
+
function?: {
|
|
174
|
+
name?: string;
|
|
175
|
+
arguments?: string;
|
|
176
|
+
};
|
|
177
|
+
}>;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* DeepSeek stream chunk
|
|
181
|
+
*/
|
|
182
|
+
export interface DeepSeekStreamChunk {
|
|
183
|
+
choices: Array<{
|
|
184
|
+
delta: DeepSeekStreamDelta;
|
|
185
|
+
finish_reason: string | null;
|
|
186
|
+
}>;
|
|
187
|
+
model: string;
|
|
188
|
+
usage?: {
|
|
189
|
+
prompt_tokens: number;
|
|
190
|
+
completion_tokens: number;
|
|
191
|
+
total_tokens: number;
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if a message has reasoning_content (DeepSeek Reasoner)
|
|
196
|
+
*/
|
|
197
|
+
export declare function hasReasoningContent(message: unknown): message is {
|
|
198
|
+
reasoning_content: string;
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Extract error message from unknown error
|
|
202
|
+
*/
|
|
203
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
70
204
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -2,5 +2,24 @@
|
|
|
2
2
|
* DeepSeek MCP Server Types
|
|
3
3
|
* Type definitions for DeepSeek API integration with Model Context Protocol
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
// ─── Type Guards ───────────────────────────────────────────────
|
|
6
|
+
/**
|
|
7
|
+
* Check if a message has reasoning_content (DeepSeek Reasoner)
|
|
8
|
+
*/
|
|
9
|
+
export function hasReasoningContent(message) {
|
|
10
|
+
return (typeof message === 'object' &&
|
|
11
|
+
message !== null &&
|
|
12
|
+
'reasoning_content' in message &&
|
|
13
|
+
typeof message.reasoning_content === 'string');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extract error message from unknown error
|
|
17
|
+
*/
|
|
18
|
+
export function getErrorMessage(error) {
|
|
19
|
+
if (error instanceof Error)
|
|
20
|
+
return error.message;
|
|
21
|
+
if (typeof error === 'string')
|
|
22
|
+
return error;
|
|
23
|
+
return 'Unknown error';
|
|
24
|
+
}
|
|
6
25
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6MH,kEAAkE;AAElE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,mBAAmB,IAAI,OAAO;QAC9B,OAAQ,OAAmC,CAAC,iBAAiB,KAAK,QAAQ,CAC3E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arikusi/deepseek-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "MCP Server for DeepSeek API integration - enables Claude Code to use DeepSeek Chat and Reasoner models",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"watch": "tsc --watch",
|
|
13
13
|
"prepare": "npm run build",
|
|
14
14
|
"start": "node dist/index.js",
|
|
15
|
-
"test": "
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest",
|
|
17
|
+
"test:coverage": "vitest run --coverage",
|
|
16
18
|
"lint": "tsc --noEmit",
|
|
17
19
|
"prepublishOnly": "npm run build"
|
|
18
20
|
},
|
|
@@ -27,7 +29,9 @@
|
|
|
27
29
|
"claude-code",
|
|
28
30
|
"ai",
|
|
29
31
|
"llm",
|
|
30
|
-
"openai-compatible"
|
|
32
|
+
"openai-compatible",
|
|
33
|
+
"function-calling",
|
|
34
|
+
"tool-use"
|
|
31
35
|
],
|
|
32
36
|
"author": "arikusi",
|
|
33
37
|
"license": "MIT",
|
|
@@ -55,7 +59,9 @@
|
|
|
55
59
|
},
|
|
56
60
|
"devDependencies": {
|
|
57
61
|
"@types/node": "^22.10.5",
|
|
58
|
-
"
|
|
62
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
63
|
+
"typescript": "^5.7.3",
|
|
64
|
+
"vitest": "^4.0.18"
|
|
59
65
|
},
|
|
60
66
|
"engines": {
|
|
61
67
|
"node": ">=18.0.0"
|