import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { BirstClient } from "../../client/birstClient.js";
import { getFeatureFlags } from "../../config/environments.js";
import { logger } from "../../utils/logger.js";
import { registerGenerateBql } from "./generateBql.js";
import { registerExecuteQuery } from "./executeQuery.js";
import { registerSearchData } from "./searchData.js";
import { registerGenerateChart } from "./generateChart.js";
import { registerValidateQuery } from "./validateQuery.js";
/**
* Register all Tier 1 query tools
*
* Note: GenAI and ICW tools are disabled by default as they require
* additional entitlements/provisioning. Enable via environment variables:
* - BIRST_ENABLE_GENAI=true for GenAI tools (generate_bql, search_data, generate_chart)
* - BIRST_ENABLE_ICW=true for ICW tools (execute_query, validate_query)
*/
export function registerQueryTools(server: McpServer, client: BirstClient): void {
const flags = getFeatureFlags();
// GenAI tools (require Birst AI entitlement)
if (flags.enableGenAI) {
registerGenerateBql(server, client);
registerSearchData(server, client);
registerGenerateChart(server, client);
logger.info("GenAI tools enabled: birst_generate_bql, birst_search_data, birst_generate_chart");
} else {
logger.info("GenAI tools disabled (set BIRST_ENABLE_GENAI=true to enable)");
}
// ICW tools (require application provisioning)
if (flags.enableICW) {
registerExecuteQuery(server, client);
registerValidateQuery(server, client);
logger.info("ICW tools enabled: birst_execute_query, birst_validate_query");
} else {
logger.info("ICW tools disabled (set BIRST_ENABLE_ICW=true to enable)");
}
}