delta-force-core 0.2.5 → 0.4.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/bin/mcp.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ // =====================================================
3
+ // delta-force-core —— MCP CLI 入口
4
+ // =====================================================
5
+
6
+ import { startMcpServer } from '../dist/mcp.js';
7
+
8
+ startMcpServer().catch((err) => {
9
+ console.error('[delta-force-core] MCP server failed to start:');
10
+ console.error(err);
11
+ process.exit(1);
12
+ });
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 启动 MCP Server(stdio 传输)。
3
+ *
4
+ * 注意:`@modelcontextprotocol/sdk` 是 optionalDependency,
5
+ * 并且采用**动态 import**,所以纯 JS 用户 import 本包时**不会**加载它。
6
+ */
7
+ export declare function startMcpServer(): Promise<void>;
8
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4SpD"}
package/dist/mcp.js ADDED
@@ -0,0 +1,284 @@
1
+ // =====================================================
2
+ // delta-force-core —— MCP Server 入口
3
+ //
4
+ // 使用方式(在 AI 客户端配置里):
5
+ // "command": "npx",
6
+ // "args": ["-y", "-p", "delta-force-core", "delta-force-mcp"]
7
+ //
8
+ // 本地运行:
9
+ // node bin/mcp.js
10
+ // =====================================================
11
+ import { getRandomLoadout, getRandomWeapon, getRandomOperator, getRandomAmmo, findWeaponById, findOperatorById, findAmmoById, findWeaponsByCaliber, findAmmoByCaliber, listAllWeapons, listAllOperators, listWeaponCategories, listOperatorCategories, WEAPONS, OPERATORS, EQUIPMENT, AMMO, } from './index.js';
12
+ /**
13
+ * 启动 MCP Server(stdio 传输)。
14
+ *
15
+ * 注意:`@modelcontextprotocol/sdk` 是 optionalDependency,
16
+ * 并且采用**动态 import**,所以纯 JS 用户 import 本包时**不会**加载它。
17
+ */
18
+ export async function startMcpServer() {
19
+ let Server;
20
+ let StdioServerTransport;
21
+ let schemas;
22
+ try {
23
+ // 动态 import —— 只有真正跑 MCP 时才加载 SDK
24
+ ({ Server } = await import('@modelcontextprotocol/sdk/server/index.js'));
25
+ ({ StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js'));
26
+ const types = await import('@modelcontextprotocol/sdk/types.js');
27
+ schemas = {
28
+ ListToolsRequestSchema: types.ListToolsRequestSchema,
29
+ CallToolRequestSchema: types.CallToolRequestSchema,
30
+ ListResourcesRequestSchema: types.ListResourcesRequestSchema,
31
+ ReadResourceRequestSchema: types.ReadResourceRequestSchema,
32
+ };
33
+ }
34
+ catch (err) {
35
+ console.error([
36
+ '[delta-force-core] 无法加载 @modelcontextprotocol/sdk。',
37
+ '请运行:',
38
+ ' npm install @modelcontextprotocol/sdk',
39
+ '或者忽略此错误(如果你只是用 delta-force-core 作为 JS 库)。',
40
+ ].join('\n'));
41
+ throw err;
42
+ }
43
+ const server = new Server({ name: 'delta-force-core', version: '0.3.0' }, { capabilities: { tools: {}, resources: {} } });
44
+ // ---------------------------------------------------
45
+ // Tools
46
+ // ---------------------------------------------------
47
+ server.setRequestHandler(schemas.ListToolsRequestSchema, async () => ({
48
+ tools: [
49
+ {
50
+ name: 'get_random_loadout',
51
+ description: 'Randomly generate a full Delta Force loadout (operator + weapon + armor + helmet + backpack + chest rig).',
52
+ inputSchema: {
53
+ type: 'object',
54
+ properties: {
55
+ allowNormal: {
56
+ type: 'boolean',
57
+ description: 'Only items allowed in Normal mode',
58
+ },
59
+ },
60
+ },
61
+ },
62
+ {
63
+ name: 'get_random_weapon',
64
+ description: 'Pick a random weapon, optionally filtered by category / quality / normal-mode.',
65
+ inputSchema: {
66
+ type: 'object',
67
+ properties: {
68
+ category: { type: 'string', description: "e.g. '突击步枪'" },
69
+ quality: {
70
+ type: 'string',
71
+ enum: ['绿色', '蓝色', '紫色', '金色'],
72
+ description: 'Requires qualityOverride on a custom engine; ignored on default engine.',
73
+ },
74
+ allowNormal: { type: 'boolean' },
75
+ },
76
+ },
77
+ },
78
+ {
79
+ name: 'get_random_operator',
80
+ description: 'Pick a random operator, optionally by role category.',
81
+ inputSchema: {
82
+ type: 'object',
83
+ properties: {
84
+ category: {
85
+ type: 'string',
86
+ description: "'突击兵' | '支援兵' | '工程兵' | '侦察兵'",
87
+ },
88
+ },
89
+ },
90
+ },
91
+ {
92
+ name: 'get_random_ammo',
93
+ description: 'Pick a random ammo type, optionally by caliber.',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ caliber: { type: 'string', description: "e.g. '5.56x45mm'" },
98
+ },
99
+ },
100
+ },
101
+ {
102
+ name: 'find_weapon',
103
+ description: 'Find a weapon by its id.',
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: { id: { type: 'string' } },
107
+ required: ['id'],
108
+ },
109
+ },
110
+ {
111
+ name: 'find_operator',
112
+ description: 'Find an operator by id.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: { id: { type: 'string' } },
116
+ required: ['id'],
117
+ },
118
+ },
119
+ {
120
+ name: 'find_ammo',
121
+ description: 'Find an ammo entry by id.',
122
+ inputSchema: {
123
+ type: 'object',
124
+ properties: { id: { type: 'string' } },
125
+ required: ['id'],
126
+ },
127
+ },
128
+ {
129
+ name: 'find_weapons_by_caliber',
130
+ description: 'Find all weapons that use the given caliber.',
131
+ inputSchema: {
132
+ type: 'object',
133
+ properties: { caliber: { type: 'string' } },
134
+ required: ['caliber'],
135
+ },
136
+ },
137
+ {
138
+ name: 'find_ammo_by_caliber',
139
+ description: 'Find all ammo entries for the given caliber.',
140
+ inputSchema: {
141
+ type: 'object',
142
+ properties: { caliber: { type: 'string' } },
143
+ required: ['caliber'],
144
+ },
145
+ },
146
+ {
147
+ name: 'list_weapons',
148
+ description: 'List all weapons, optionally filtered by category.',
149
+ inputSchema: {
150
+ type: 'object',
151
+ properties: {
152
+ category: { type: 'string', description: "e.g. '突击步枪'" },
153
+ },
154
+ },
155
+ },
156
+ {
157
+ name: 'list_operators',
158
+ description: 'List all operators, optionally filtered by category.',
159
+ inputSchema: {
160
+ type: 'object',
161
+ properties: {
162
+ category: { type: 'string', description: "e.g. '突击兵'" },
163
+ },
164
+ },
165
+ },
166
+ {
167
+ name: 'list_categories',
168
+ description: 'List available weapon and operator categories.',
169
+ inputSchema: { type: 'object', properties: {} },
170
+ },
171
+ ],
172
+ }));
173
+ server.setRequestHandler(schemas.CallToolRequestSchema, async (request) => {
174
+ const { name, arguments: args } = request.params;
175
+ const a = (args ?? {});
176
+ const wrap = (payload) => ({
177
+ content: [
178
+ { type: 'text', text: JSON.stringify(payload, null, 2) },
179
+ ],
180
+ });
181
+ switch (name) {
182
+ case 'get_random_loadout':
183
+ return wrap(getRandomLoadout({
184
+ allowNormal: a.allowNormal,
185
+ }));
186
+ case 'get_random_weapon':
187
+ return wrap(getRandomWeapon({
188
+ category: a.category,
189
+ quality: a.quality,
190
+ allowNormal: a.allowNormal,
191
+ }));
192
+ case 'get_random_operator':
193
+ return wrap(getRandomOperator(a.category));
194
+ case 'get_random_ammo':
195
+ return wrap(getRandomAmmo({ caliber: a.caliber }));
196
+ case 'find_weapon':
197
+ return wrap(findWeaponById(a.id) ?? null);
198
+ case 'find_operator':
199
+ return wrap(findOperatorById(a.id) ?? null);
200
+ case 'find_ammo':
201
+ return wrap(findAmmoById(a.id) ?? null);
202
+ case 'find_weapons_by_caliber':
203
+ return wrap(findWeaponsByCaliber(a.caliber));
204
+ case 'find_ammo_by_caliber':
205
+ return wrap(findAmmoByCaliber(a.caliber));
206
+ case 'list_weapons': {
207
+ if (a.category) {
208
+ const group = WEAPONS.find((g) => g.category === a.category);
209
+ return wrap(group ? group.weapons : []);
210
+ }
211
+ return wrap(listAllWeapons());
212
+ }
213
+ case 'list_operators': {
214
+ if (a.category) {
215
+ const group = OPERATORS.find((g) => g.category === a.category);
216
+ return wrap(group ? group.operators : []);
217
+ }
218
+ return wrap(listAllOperators());
219
+ }
220
+ case 'list_categories':
221
+ return wrap({
222
+ weaponCategories: listWeaponCategories(),
223
+ operatorCategories: listOperatorCategories(),
224
+ });
225
+ default:
226
+ throw new Error(`Unknown tool: ${name}`);
227
+ }
228
+ });
229
+ // ---------------------------------------------------
230
+ // Resources
231
+ // ---------------------------------------------------
232
+ server.setRequestHandler(schemas.ListResourcesRequestSchema, async () => ({
233
+ resources: [
234
+ {
235
+ uri: 'delta-force://weapons',
236
+ name: 'All weapons',
237
+ mimeType: 'application/json',
238
+ },
239
+ {
240
+ uri: 'delta-force://operators',
241
+ name: 'All operators',
242
+ mimeType: 'application/json',
243
+ },
244
+ {
245
+ uri: 'delta-force://equipment',
246
+ name: 'All equipment',
247
+ mimeType: 'application/json',
248
+ },
249
+ {
250
+ uri: 'delta-force://ammo',
251
+ name: 'All ammo',
252
+ mimeType: 'application/json',
253
+ },
254
+ ],
255
+ }));
256
+ server.setRequestHandler(schemas.ReadResourceRequestSchema, async (request) => {
257
+ const uri = request.params.uri;
258
+ const map = {
259
+ 'delta-force://weapons': WEAPONS,
260
+ 'delta-force://operators': OPERATORS,
261
+ 'delta-force://equipment': EQUIPMENT,
262
+ 'delta-force://ammo': AMMO,
263
+ };
264
+ const data = map[uri];
265
+ if (data === undefined)
266
+ throw new Error(`Unknown resource: ${uri}`);
267
+ return {
268
+ contents: [
269
+ {
270
+ uri,
271
+ mimeType: 'application/json',
272
+ text: JSON.stringify(data, null, 2),
273
+ },
274
+ ],
275
+ };
276
+ });
277
+ // ---------------------------------------------------
278
+ // Start
279
+ // ---------------------------------------------------
280
+ const transport = new StdioServerTransport();
281
+ await server.connect(transport);
282
+ console.error('[delta-force-core] MCP server running on stdio');
283
+ }
284
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/index.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/delta-force-core/schema/main/v1.json",
3
3
  "version": "0.2.0",
4
- "generatedAt": "2026-10-14T04:34:23.235Z",
4
+ "generatedAt": "2026-10-14T06:57:01.852Z",
5
5
  "operators": [
6
6
  {
7
7
  "category": "突击兵",
package/package.json CHANGED
@@ -1,44 +1,69 @@
1
1
  {
2
2
  "name": "delta-force-core",
3
- "version": "0.2.5",
3
+ "version": "0.4.0",
4
4
  "description": "三角洲行动核心数据与随机抽签库(干员 / 武器 / 装备 / 子弹)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
+ "bin": {
10
+ "delta-force-mcp": "./bin/mcp.js"
11
+ },
9
12
  "exports": {
10
13
  ".": {
11
14
  "types": "./dist/index.d.ts",
12
15
  "import": "./dist/index.js"
13
16
  },
17
+ "./mcp": {
18
+ "types": "./dist/mcp.d.ts",
19
+ "import": "./dist/mcp.js"
20
+ },
14
21
  "./index.json": "./index.json",
15
22
  "./package.json": "./package.json"
16
23
  },
17
24
  "files": [
18
25
  "dist",
26
+ "bin",
19
27
  "index.json",
20
- "README.md"
28
+ "README.md",
29
+ "README.en.md"
21
30
  ],
22
31
  "sideEffects": false,
23
32
  "scripts": {
24
33
  "build": "tsc && npm run emit-json",
25
34
  "dev": "tsc --watch",
26
35
  "emit-json": "node scripts/emit-json.mjs",
36
+ "mcp": "node bin/mcp.js",
27
37
  "prepublishOnly": "npm run build"
28
38
  },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/Zhoyi011/delta-force-core.git"
42
+ },
43
+ "homepage": "https://github.com/Zhoyi011/delta-force-core#readme",
44
+ "bugs": {
45
+ "url": "https://github.com/Zhoyi011/delta-force-core/issues"
46
+ },
29
47
  "keywords": [
30
48
  "delta-force",
31
49
  "三角洲行动",
32
50
  "game-data",
33
51
  "random",
34
52
  "loadout",
35
- "typescript"
53
+ "typescript",
54
+ "mcp",
55
+ "model-context-protocol",
56
+ "ai"
36
57
  ],
37
58
  "license": "MIT",
38
59
  "engines": {
39
60
  "node": ">=18"
40
61
  },
62
+ "dependencies": {
63
+ "@modelcontextprotocol/sdk": "^1.32.1"
64
+ },
41
65
  "devDependencies": {
66
+ "@types/node": "^20.0.0",
42
67
  "typescript": "^5.4.5"
43
68
  }
44
69
  }