@ztgkzhaohao/geo-effect-kit-mcp 0.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.
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +47 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +103 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 zhaohao
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# @ztgkzhaohao/geo-effect-kit-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for querying `geo-effect-kit` Cesium effect manifests, schemas, usage examples, and integration notes.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @ztgkzhaohao/geo-effect-kit-mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Tools
|
|
12
|
+
|
|
13
|
+
- `list_effects`: list all available effects.
|
|
14
|
+
- `get_effect_schema`: return the manifest and option schema for one effect.
|
|
15
|
+
- `get_usage_example`: return a named usage example.
|
|
16
|
+
- `generate_integration_notes`: generate target-project integration notes.
|
|
17
|
+
|
|
18
|
+
## MCP client configuration
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"geo-effect-kit": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["@ztgkzhaohao/geo-effect-kit-mcp"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Relationship to the SDK
|
|
32
|
+
|
|
33
|
+
Runtime projects install `@ztgkzhaohao/geo-effect-kit`. AI agents and MCP clients use `@ztgkzhaohao/geo-effect-kit-mcp` to discover effects and generate integration code.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { generateIntegrationNotes, getEffectSchema, getUsageExample, listEffects, } from './index.js';
|
|
6
|
+
const server = new McpServer({
|
|
7
|
+
name: 'geo-effect-kit',
|
|
8
|
+
version: '0.1.0',
|
|
9
|
+
});
|
|
10
|
+
server.registerTool('list_effects', {
|
|
11
|
+
title: 'List Effects',
|
|
12
|
+
description: 'List available geo-effect-kit effects.',
|
|
13
|
+
inputSchema: {},
|
|
14
|
+
}, async () => ({
|
|
15
|
+
content: [{ type: 'text', text: JSON.stringify(await listEffects(), null, 2) }],
|
|
16
|
+
}));
|
|
17
|
+
server.registerTool('get_effect_schema', {
|
|
18
|
+
title: 'Get Effect Schema',
|
|
19
|
+
description: 'Return the full manifest and option schema for an effect.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
effectId: z.string(),
|
|
22
|
+
},
|
|
23
|
+
}, async ({ effectId }) => ({
|
|
24
|
+
content: [{ type: 'text', text: JSON.stringify(await getEffectSchema(effectId), null, 2) }],
|
|
25
|
+
}));
|
|
26
|
+
server.registerTool('get_usage_example', {
|
|
27
|
+
title: 'Get Usage Example',
|
|
28
|
+
description: 'Return a named usage example for an effect.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
effectId: z.string(),
|
|
31
|
+
exampleName: z.string().optional(),
|
|
32
|
+
},
|
|
33
|
+
}, async ({ effectId, exampleName }) => ({
|
|
34
|
+
content: [{ type: 'text', text: JSON.stringify(await getUsageExample(effectId, exampleName), null, 2) }],
|
|
35
|
+
}));
|
|
36
|
+
server.registerTool('generate_integration_notes', {
|
|
37
|
+
title: 'Generate Integration Notes',
|
|
38
|
+
description: 'Generate project-specific integration guidance for an effect.',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
effectId: z.string(),
|
|
41
|
+
targetProject: z.string().optional(),
|
|
42
|
+
},
|
|
43
|
+
}, async ({ effectId, targetProject }) => ({
|
|
44
|
+
content: [{ type: 'text', text: await generateIntegrationNotes(effectId, targetProject) }],
|
|
45
|
+
}));
|
|
46
|
+
await server.connect(new StdioServerTransport());
|
|
47
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,WAAW,GACZ,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;IACE,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,wCAAwC;IACrD,WAAW,EAAE,EAAE;CAChB,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAChF,CAAC,CACH,CAAA;AAED,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;IACE,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,2DAA2D;IACxE,WAAW,EAAE;QACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB;CACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAC5F,CAAC,CACH,CAAA;AAED,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;IACE,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EAAE,6CAA6C;IAC1D,WAAW,EAAE;QACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC;CACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CACzG,CAAC,CACH,CAAA;AAED,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;IACE,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,+DAA+D;IAC5E,WAAW,EAAE;QACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC;CACF,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;CAC3F,CAAC,CACH,CAAA;AAED,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface EffectSummary {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
packageName: string;
|
|
5
|
+
importName: string;
|
|
6
|
+
summary: string;
|
|
7
|
+
useCases: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface EffectExample {
|
|
10
|
+
language: string;
|
|
11
|
+
code: string;
|
|
12
|
+
}
|
|
13
|
+
export interface EffectManifest extends EffectSummary {
|
|
14
|
+
options: {
|
|
15
|
+
properties: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
methods: string[];
|
|
18
|
+
examples: Record<string, EffectExample>;
|
|
19
|
+
notes: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function listEffects(): Promise<EffectSummary[]>;
|
|
22
|
+
export declare function getEffectSchema(effectId: string): Promise<EffectManifest>;
|
|
23
|
+
export declare function getUsageExample(effectId: string, exampleName?: string): Promise<EffectExample>;
|
|
24
|
+
export declare function generateIntegrationNotes(effectId: string, targetProject?: string): Promise<string>;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;IACD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACvC,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAuBD,wBAAsB,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAW5D;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE/E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAQvG;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,SAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAuC1H"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const currentDir = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
const repositoryRoot = path.resolve(currentDir, '../..');
|
|
6
|
+
const effectsDir = path.join(repositoryRoot, 'knowledge/effects');
|
|
7
|
+
const docsDir = path.join(repositoryRoot, 'knowledge/docs');
|
|
8
|
+
const effectFiles = {
|
|
9
|
+
'radar-scan': path.join(effectsDir, 'radar-scan.effect.json'),
|
|
10
|
+
'ripple-spread': path.join(effectsDir, 'ripple-spread.effect.json'),
|
|
11
|
+
'scene-weather': path.join(effectsDir, 'scene-weather.effect.json'),
|
|
12
|
+
'post-process': path.join(effectsDir, 'post-process.effect.json'),
|
|
13
|
+
'polyline-flow': path.join(effectsDir, 'polyline-flow.effect.json'),
|
|
14
|
+
'fly-line': path.join(effectsDir, 'fly-line.effect.json'),
|
|
15
|
+
'pipe-flow': path.join(effectsDir, 'pipe-flow.effect.json'),
|
|
16
|
+
'water-surface': path.join(effectsDir, 'water-surface.effect.json'),
|
|
17
|
+
'light-wall': path.join(effectsDir, 'light-wall.effect.json'),
|
|
18
|
+
'scan-cone': path.join(effectsDir, 'scan-cone.effect.json'),
|
|
19
|
+
'shield-dome': path.join(effectsDir, 'shield-dome.effect.json'),
|
|
20
|
+
'temperature-field': path.join(effectsDir, 'temperature-field.effect.json'),
|
|
21
|
+
'fire-billboard': path.join(effectsDir, 'fire-billboard.effect.json'),
|
|
22
|
+
};
|
|
23
|
+
export async function listEffects() {
|
|
24
|
+
const manifests = await Promise.all(Object.keys(effectFiles).map((id) => readEffectManifest(id)));
|
|
25
|
+
return manifests.map(({ id, name, packageName, importName, summary, useCases }) => ({
|
|
26
|
+
id,
|
|
27
|
+
name,
|
|
28
|
+
packageName,
|
|
29
|
+
importName,
|
|
30
|
+
summary,
|
|
31
|
+
useCases,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
export async function getEffectSchema(effectId) {
|
|
35
|
+
return readEffectManifest(effectId);
|
|
36
|
+
}
|
|
37
|
+
export async function getUsageExample(effectId, exampleName = 'minimal') {
|
|
38
|
+
const manifest = await readEffectManifest(effectId);
|
|
39
|
+
const example = manifest.examples[exampleName];
|
|
40
|
+
if (!example) {
|
|
41
|
+
throw new Error(`Unknown example "${exampleName}" for effect "${effectId}"`);
|
|
42
|
+
}
|
|
43
|
+
return example;
|
|
44
|
+
}
|
|
45
|
+
export async function generateIntegrationNotes(effectId, targetProject = 'generic Cesium project') {
|
|
46
|
+
const manifest = await readEffectManifest(effectId);
|
|
47
|
+
const doc = await readFile(path.join(docsDir, `${effectId}.md`), 'utf8');
|
|
48
|
+
const migrationSection = extractSection(doc, ['FireHotspot 迁移说明', 'FireHotspot Migration']);
|
|
49
|
+
const notes = manifest.notes.map((note) => `- ${note}`).join('\n');
|
|
50
|
+
if (/firehotspot/i.test(targetProject)) {
|
|
51
|
+
if (effectId === 'fire-billboard') {
|
|
52
|
+
return [
|
|
53
|
+
`Use ${manifest.importName} from ${manifest.packageName} to render FireHotspot fire points from user-provided longitude, latitude, and gif fields.`,
|
|
54
|
+
migrationSection,
|
|
55
|
+
'Important lifecycle note: keep the returned instance and call destroy() when the fire layer, route page, or Cesium viewer is removed.',
|
|
56
|
+
'Asset note: the SDK does not provide a default GIF; choose the GIF URL or data URL in your FireHotspot business code and pass it per point.',
|
|
57
|
+
].join('\n\n');
|
|
58
|
+
}
|
|
59
|
+
if (effectId === 'temperature-field') {
|
|
60
|
+
return [
|
|
61
|
+
`Use ${manifest.importName} from ${manifest.packageName} inside FirePredictionSurfaceLayer to replace ImageMaterialProperty canvas risk-surface rendering.`,
|
|
62
|
+
migrationSection,
|
|
63
|
+
'Important lifecycle note: keep one effect instance per prediction layer and call destroy() when the page effect or Cesium layer is removed.',
|
|
64
|
+
'Data compatibility note: pass riskSurface.polygons, riskSurface.riskField.seed, riskSurface.riskField.opacity, and riskSurface.riskField.stops directly.',
|
|
65
|
+
].join('\n\n');
|
|
66
|
+
}
|
|
67
|
+
return [
|
|
68
|
+
`Use ${manifest.importName} from ${manifest.packageName} to replace route-local radar primitive code.`,
|
|
69
|
+
migrationSection,
|
|
70
|
+
'Important lifecycle note: call destroy() when the page effect or Cesium layer is removed.',
|
|
71
|
+
'Shader naming note: the reusable material is GeoRadarScanMaterial, replacing FirePredictionRadarScanMaterial in shared SDK code.',
|
|
72
|
+
].join('\n\n');
|
|
73
|
+
}
|
|
74
|
+
return [
|
|
75
|
+
`Target project: ${targetProject}`,
|
|
76
|
+
`Import ${manifest.importName} from ${manifest.packageName}.`,
|
|
77
|
+
'Attach the effect to an existing Cesium Viewer and keep the returned instance for updates and cleanup.',
|
|
78
|
+
notes,
|
|
79
|
+
].join('\n\n');
|
|
80
|
+
}
|
|
81
|
+
async function readEffectManifest(effectId) {
|
|
82
|
+
const file = effectFiles[effectId];
|
|
83
|
+
if (!file) {
|
|
84
|
+
throw new Error(`Unknown effect "${effectId}"`);
|
|
85
|
+
}
|
|
86
|
+
return JSON.parse(await readFile(file, 'utf8'));
|
|
87
|
+
}
|
|
88
|
+
function extractSection(markdown, headings) {
|
|
89
|
+
const headingList = Array.isArray(headings) ? headings : [headings];
|
|
90
|
+
const match = headingList
|
|
91
|
+
.map((heading) => new RegExp(`^## ${escapeRegExp(heading)}\\s*$`, 'm').exec(markdown))
|
|
92
|
+
.find((candidate) => candidate !== null);
|
|
93
|
+
if (!match)
|
|
94
|
+
return '';
|
|
95
|
+
const start = match.index + match[0].length;
|
|
96
|
+
const rest = markdown.slice(start);
|
|
97
|
+
const nextHeading = /^## /m.exec(rest);
|
|
98
|
+
return rest.slice(0, nextHeading?.index ?? rest.length).trim();
|
|
99
|
+
}
|
|
100
|
+
function escapeRegExp(value) {
|
|
101
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ztgkzhaohao/geo-effect-kit-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "MCP server for geo-effect-kit Cesium effect manifests and integration examples.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "zhaohao",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/tzxzhaohao/cesiumDesign.git",
|
|
11
|
+
"directory": "mcp-server"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/tzxzhaohao/cesiumDesign#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/tzxzhaohao/cesiumDesign/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"cesium",
|
|
21
|
+
"gis",
|
|
22
|
+
"ai-agent",
|
|
23
|
+
"geo-effect-kit"
|
|
24
|
+
],
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"bin": {
|
|
28
|
+
"geo-effect-kit-mcp": "./dist/cli.js"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"LICENSE",
|
|
34
|
+
"package.json"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@modelcontextprotocol/sdk": "^1.24.0",
|
|
38
|
+
"zod": "^4.4.3"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^24.10.1",
|
|
42
|
+
"typescript": "^5.9.3"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc -p tsconfig.json",
|
|
49
|
+
"test": "pnpm run build && node --test test/*.test.mjs",
|
|
50
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
51
|
+
}
|
|
52
|
+
}
|