diff --git a/src/http/config.ts b/src/http/config.ts index 69cf62f..cb9d5d0 100644 --- a/src/http/config.ts +++ b/src/http/config.ts @@ -1,11 +1,15 @@ import 'dotenv/config'; import { program } from 'commander'; +import { PACKAGE_VERSION } from '../shared/version.js'; // ============================================================================ // Command Line Arguments // ============================================================================ program + .name('insforge-mcp-server') + .description('HTTP MCP server for Insforge backend-as-a-service') + .version(PACKAGE_VERSION, '-v, --version') .option('--port ', 'Port to run HTTP server on', '3000') .option('--host ', 'Host to bind to', '127.0.0.1'); program.parse(process.argv); diff --git a/src/http/server.ts b/src/http/server.ts index 1f45e3f..816f5e7 100644 --- a/src/http/server.ts +++ b/src/http/server.ts @@ -24,6 +24,7 @@ import { } from './config.js'; import { renderProjectSelectionPage } from './templates/project-selection.js'; import { getAnalyticsService, extractClientInfo } from './analytics.js'; +import { PACKAGE_VERSION } from '../shared/version.js'; // ============================================================================ // Express App Setup @@ -134,7 +135,7 @@ app.get(API_ENDPOINTS.health, async (_req: Request, res: Response) => { res.json({ status: 'ok', server: 'insforge-mcp', - version: '1.0.0', + version: PACKAGE_VERSION, protocols: { streamableHttp: '2025-03-26', sse: '2024-11-05 (deprecated)', diff --git a/src/http/session-manager.ts b/src/http/session-manager.ts index 86d8420..3515772 100644 --- a/src/http/session-manager.ts +++ b/src/http/session-manager.ts @@ -3,6 +3,7 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import { getRedisClient } from './redis.js'; import { registerInsforgeTools } from '../shared/tools/index.js'; +import { PACKAGE_VERSION } from '../shared/version.js'; /** * Session data stored in Redis @@ -72,7 +73,7 @@ export class SessionManager { // Create MCP server and register tools first const server = new McpServer({ name: 'insforge-mcp', - version: '1.0.0', + version: PACKAGE_VERSION, }); const toolsConfig = await registerInsforgeTools(server, { @@ -191,7 +192,7 @@ export class SessionManager { // Create new MCP server with stored configuration const server = new McpServer({ name: 'insforge-mcp', - version: '1.0.0', + version: PACKAGE_VERSION, }); await registerInsforgeTools(server, { @@ -231,7 +232,7 @@ export class SessionManager { // Create MCP server and register tools first const server = new McpServer({ name: 'insforge-mcp', - version: '1.0.0', + version: PACKAGE_VERSION, }); const toolsConfig = await registerInsforgeTools(server, { diff --git a/src/shared/version.ts b/src/shared/version.ts new file mode 100644 index 0000000..9493042 --- /dev/null +++ b/src/shared/version.ts @@ -0,0 +1,18 @@ +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const packageJson = loadPackageJson(); + +export const PACKAGE_VERSION = packageJson.version ?? '0.0.0'; + +function loadPackageJson(): { version?: string } { + try { + return require('../../package.json') as { version?: string }; + } catch { + try { + return require('../package.json') as { version?: string }; + } catch { + return { version: '0.0.0' }; + } + } +} diff --git a/src/stdio/index.ts b/src/stdio/index.ts index 3f17a70..d454d9d 100644 --- a/src/stdio/index.ts +++ b/src/stdio/index.ts @@ -1,11 +1,16 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { program } from 'commander'; +import { PACKAGE_VERSION } from '../shared/version.js'; import { registerInsforgeTools } from '../shared/tools/index.js'; // Parse command line arguments -program.option('--api_key ', 'API Key'); -program.option('--api_base_url ', 'API Base URL'); +program + .name('insforge-mcp') + .description('MCP server for Insforge backend-as-a-service') + .version(PACKAGE_VERSION, '-v, --version') + .option('--api_key ', 'API Key') + .option('--api_base_url ', 'API Base URL'); program.parse(process.argv); const options = program.opts(); const { api_key, api_base_url } = options; @@ -15,7 +20,7 @@ async function main() { // Create MCP server const server = new McpServer({ name: 'insforge-mcp', - version: '1.0.0', + version: PACKAGE_VERSION, }); // Register all Insforge tools with the server (async to support dynamic version-based registration) @@ -45,4 +50,4 @@ async function main() { console.error(`Tools registered: ${toolsConfig.toolCount}`); } -main().catch(console.error); \ No newline at end of file +main().catch(console.error);