Skip to content

Commit 9538626

Browse files
committedDec 9, 2024
feat: make the mcp server config optional
1 parent 16f2793 commit 9538626

File tree

1 file changed

+44
-15
lines changed

1 file changed

+44
-15
lines changed
 

‎src/core/MCPServer.ts

+44-15
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,65 @@ import {
66
} from "@modelcontextprotocol/sdk/types.js";
77
import { ToolLoader } from "./toolLoader.js";
88
import { BaseTool } from "../tools/BaseTool.js";
9+
import { join, dirname } from "path";
10+
import { logger } from "./Logger.js";
911

1012
export interface MCPServerConfig {
11-
name: string;
12-
version: string;
13+
name?: string;
14+
version?: string;
1315
}
1416

1517
export class MCPServer {
1618
private server: Server;
1719
private toolsMap: Map<string, BaseTool> = new Map();
1820
private toolLoader: ToolLoader;
1921

20-
constructor(config: MCPServerConfig) {
21-
this.server = new Server(
22-
{
23-
name: config.name,
24-
version: config.version,
25-
},
26-
{
27-
capabilities: {
28-
tools: {
29-
enabled: true,
30-
},
22+
constructor(config: MCPServerConfig = {}) {
23+
const serverConfig = {
24+
name: config.name ?? this.getDefaultName(),
25+
version: config.version ?? this.getDefaultVersion(),
26+
};
27+
28+
this.server = new Server(serverConfig, {
29+
capabilities: {
30+
tools: {
31+
enabled: true,
3132
},
32-
}
33-
);
33+
},
34+
});
3435

3536
this.toolLoader = new ToolLoader();
3637
this.setupHandlers();
3738
}
3839

40+
private getDefaultName(): string {
41+
try {
42+
const mainModulePath = process.argv[1];
43+
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;
47+
} catch (error) {
48+
logger.warn(`Could not read package.json for name: ${error}`);
49+
return "unnamed-mcp-server";
50+
}
51+
}
52+
53+
private getDefaultVersion(): string {
54+
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;
62+
} catch (error) {
63+
logger.warn(`Could not read package.json for version: ${error}`);
64+
return "0.0.0";
65+
}
66+
}
67+
3968
private setupHandlers() {
4069
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
4170
return {

0 commit comments

Comments
 (0)
Please sign in to comment.