-
Notifications
You must be signed in to change notification settings - Fork 76
Expand file tree
/
Copy pathpackage-json.ts
More file actions
70 lines (65 loc) · 1.98 KB
/
package-json.ts
File metadata and controls
70 lines (65 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* Generates the content of package.json for the MCP server
*
* @param serverName Server name
* @param serverVersion Server version
* @param transportType Type of transport to use (stdio, web, or streamable-http)
* @returns JSON string for package.json
*/
export function generatePackageJson(
serverName: string,
serverVersion: string,
transportType: string = 'stdio'
): string {
const includeWebDeps = transportType === 'web' || transportType === 'streamable-http';
const packageData: any = {
name: serverName,
version: serverVersion,
description: `MCP Server generated from OpenAPI spec for ${serverName}`,
private: true,
type: 'module',
main: 'build/index.js',
files: ['build', 'src'],
scripts: {
start: 'node build/index.js',
build: 'tsc && chmod 755 build/index.js',
typecheck: 'tsc --noEmit',
prestart: 'npm run build',
},
engines: {
node: '>=20.0.0',
},
dependencies: {
'@modelcontextprotocol/sdk': '^1.17.4',
axios: '^1.9.0',
dotenv: '^16.4.5',
zod: '^3.24.3',
'json-schema-to-zod': '^2.6.1',
},
devDependencies: {
'@types/node': '^22.15.2',
typescript: '^5.8.3',
},
};
// Add Hono dependencies for web-based transports
if (includeWebDeps) {
packageData.dependencies = {
...packageData.dependencies,
hono: '^4.7.7',
'@hono/node-server': '^1.14.1',
uuid: '^11.1.0',
};
packageData.devDependencies = {
...packageData.devDependencies,
'@types/uuid': '^10.0.0',
};
// Add appropriate start script based on transport type
if (transportType === 'web') {
packageData.scripts['start:web'] = 'node build/index.js --transport=web';
} else if (transportType === 'streamable-http') {
packageData.scripts['start:http'] = 'node build/index.js --transport=streamable-http';
packageData.dependencies['fetch-to-node'] = '^2.1.0';
}
}
return JSON.stringify(packageData, null, 2);
}