delta-force-core 0.2.8 → 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-14T05:55:42.882Z",
4
+ "generatedAt": "2026-10-14T06:57:01.852Z",
5
5
  "operators": [
6
6
  {
7
7
  "category": "突击兵",
package/package.json CHANGED
@@ -1,21 +1,29 @@
1
1
  {
2
2
  "name": "delta-force-core",
3
- "version": "0.2.8",
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
28
  "README.md",
21
29
  "README.en.md"
@@ -25,6 +33,7 @@
25
33
  "build": "tsc && npm run emit-json",
26
34
  "dev": "tsc --watch",
27
35
  "emit-json": "node scripts/emit-json.mjs",
36
+ "mcp": "node bin/mcp.js",
28
37
  "prepublishOnly": "npm run build"
29
38
  },
30
39
  "repository": {
@@ -41,13 +50,20 @@
41
50
  "game-data",
42
51
  "random",
43
52
  "loadout",
44
- "typescript"
53
+ "typescript",
54
+ "mcp",
55
+ "model-context-protocol",
56
+ "ai"
45
57
  ],
46
58
  "license": "MIT",
47
59
  "engines": {
48
60
  "node": ">=18"
49
61
  },
62
+ "dependencies": {
63
+ "@modelcontextprotocol/sdk": "^1.32.1"
64
+ },
50
65
  "devDependencies": {
66
+ "@types/node": "^20.0.0",
51
67
  "typescript": "^5.4.5"
52
68
  }
53
69
  }