Skip to content

Commit b5789af

Browse files
committed
feat: read default name and version from package json
1 parent 9538626 commit b5789af

File tree

2 files changed

+56
-28
lines changed

2 files changed

+56
-28
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mcp-framework",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "Framework for building Model Context Protocol (MCP) servers in Typescript",
55
"type": "module",
66
"author": "Alex Andru <[email protected]>",

src/core/MCPServer.ts

+55-27
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
} from "@modelcontextprotocol/sdk/types.js";
77
import { ToolLoader } from "./toolLoader.js";
88
import { BaseTool } from "../tools/BaseTool.js";
9+
import { readFileSync } from "fs";
910
import { join, dirname } from "path";
1011
import { logger } from "./Logger.js";
1112

@@ -18,51 +19,73 @@ export class MCPServer {
1819
private server: Server;
1920
private toolsMap: Map<string, BaseTool> = new Map();
2021
private toolLoader: ToolLoader;
22+
private serverName: string;
23+
private serverVersion: string;
2124

2225
constructor(config: MCPServerConfig = {}) {
23-
const serverConfig = {
24-
name: config.name ?? this.getDefaultName(),
25-
version: config.version ?? this.getDefaultVersion(),
26-
};
26+
this.serverName = config.name ?? this.getDefaultName();
27+
this.serverVersion = config.version ?? this.getDefaultVersion();
2728

28-
this.server = new Server(serverConfig, {
29-
capabilities: {
30-
tools: {
31-
enabled: true,
32-
},
29+
logger.info(
30+
`Initializing MCP Server: ${this.serverName}@${this.serverVersion}`
31+
);
32+
33+
this.server = new Server(
34+
{
35+
name: this.serverName,
36+
version: this.serverVersion,
3337
},
34-
});
38+
{
39+
capabilities: {
40+
tools: {
41+
enabled: true,
42+
},
43+
},
44+
}
45+
);
3546

3647
this.toolLoader = new ToolLoader();
3748
this.setupHandlers();
3849
}
3950

40-
private getDefaultName(): string {
51+
private readPackageJson(): any {
4152
try {
4253
const mainModulePath = process.argv[1];
4354
const packagePath = join(dirname(mainModulePath), "..", "package.json");
44-
const packageContent = require(packagePath);
45-
logger.debug(`Found package.json with name: ${packageContent.name}`);
46-
return packageContent.name;
55+
const packageContent = readFileSync(packagePath, "utf-8");
56+
const packageJson = JSON.parse(packageContent);
57+
logger.debug(`Successfully read package.json from: ${packagePath}`);
58+
return packageJson;
4759
} catch (error) {
48-
logger.warn(`Could not read package.json for name: ${error}`);
49-
return "unnamed-mcp-server";
60+
logger.warn(`Could not read package.json: ${error}`);
61+
return null;
5062
}
5163
}
5264

65+
private getDefaultName(): string {
66+
try {
67+
const packageJson = this.readPackageJson();
68+
if (packageJson?.name) {
69+
logger.info(`Using name from package.json: ${packageJson.name}`);
70+
return packageJson.name;
71+
}
72+
} catch (error) {
73+
logger.warn(`Error getting name from package.json: ${error}`);
74+
}
75+
return "unnamed-mcp-server";
76+
}
77+
5378
private getDefaultVersion(): string {
5479
try {
55-
const mainModulePath = process.argv[1];
56-
const packagePath = join(dirname(mainModulePath), "..", "package.json");
57-
const packageContent = require(packagePath);
58-
logger.debug(
59-
`Found package.json with version: ${packageContent.version}`
60-
);
61-
return packageContent.version;
80+
const packageJson = this.readPackageJson();
81+
if (packageJson?.version) {
82+
logger.info(`Using version from package.json: ${packageJson.version}`);
83+
return packageJson.version;
84+
}
6285
} catch (error) {
63-
logger.warn(`Could not read package.json for version: ${error}`);
64-
return "0.0.0";
86+
logger.warn(`Error getting version from package.json: ${error}`);
6587
}
88+
return "0.0.0";
6689
}
6790

6891
private setupHandlers() {
@@ -95,9 +118,14 @@ export class MCPServer {
95118
const transport = new StdioServerTransport();
96119
await this.server.connect(transport);
97120

98-
process.stderr.write(`Server started with ${tools.length} tools\n`);
121+
logger.info(
122+
`Started ${this.serverName}@${this.serverVersion} with ${tools.length} tools`
123+
);
124+
logger.info(
125+
`Available tools: ${Array.from(this.toolsMap.keys()).join(", ")}`
126+
);
99127
} catch (error) {
100-
process.stderr.write(`Server initialization error: ${error}\n`);
128+
logger.error(`Server initialization error: ${error}`);
101129
throw error;
102130
}
103131
}

0 commit comments

Comments
 (0)