52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
import { loadConfig } from "./config.js";
|
|
import { SqlServerClient } from "./db.js";
|
|
import { registerSqlServerTools } from "./tools.js";
|
|
const VERSION = "1.0.0";
|
|
if (process.argv.includes("--help") || process.argv.includes("-h")) {
|
|
console.log(`sqlserver-mcp-server ${VERSION}
|
|
|
|
Local stdio MCP server for Microsoft SQL Server.
|
|
|
|
Required environment:
|
|
SERVER_NAME
|
|
DATABASE_NAME or DATABASES
|
|
|
|
Optional environment:
|
|
DB_USER, DB_PASSWORD, READONLY, ENABLE_DDL, TRUST_SERVER_CERTIFICATE,
|
|
DB_ENCRYPT, CONNECTION_TIMEOUT, QUERY_TIMEOUT_MS, MAX_ROWS, MAX_WRITE_ROWS`);
|
|
process.exit(0);
|
|
}
|
|
if (process.argv.includes("--version") || process.argv.includes("-v")) {
|
|
console.log(VERSION);
|
|
process.exit(0);
|
|
}
|
|
async function main() {
|
|
const config = loadConfig();
|
|
const client = new SqlServerClient(config);
|
|
const server = new McpServer({
|
|
name: "sqlserver-mcp-server",
|
|
version: VERSION
|
|
});
|
|
registerSqlServerTools(server, client);
|
|
const transport = new StdioServerTransport();
|
|
await server.connect(transport);
|
|
console.error("sqlserver-mcp-server running via stdio");
|
|
const shutdown = async () => {
|
|
await client.close();
|
|
await server.close();
|
|
};
|
|
process.once("SIGINT", () => {
|
|
shutdown().finally(() => process.exit(0));
|
|
});
|
|
process.once("SIGTERM", () => {
|
|
shutdown().finally(() => process.exit(0));
|
|
});
|
|
}
|
|
main().catch((error) => {
|
|
console.error(error instanceof Error ? error.message : String(error));
|
|
process.exit(1);
|
|
});
|
|
//# sourceMappingURL=index.js.map
|