/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { FireHydrantCore } from "../core.js";
import { SDKOptions } from "../lib/config.js";
import type { ConsoleLogger } from "./console-logger.js";
import { Register } from "./extensions.js";
import { createRegisterPrompt } from "./prompts.js";
import {
createRegisterResource,
createRegisterResourceTemplate,
} from "./resources.js";
import { MCPScope } from "./scopes.js";
import { registerMCPExtensions } from "./server.extensions.js";
import { createRegisterTool } from "./tools.js";
import { tool$alertsListAlerts } from "./tools/alertsListAlerts.js";
import { tool$incidentsCreateIncident } from "./tools/incidentsCreateIncident.js";
import { tool$incidentsListIncidents } from "./tools/incidentsListIncidents.js";
import { tool$retrospectivesListIncidentRetrospectives } from "./tools/retrospectivesListIncidentRetrospectives.js";
import { tool$retrospectivesUpdateIncidentRetrospectiveField } from "./tools/retrospectivesUpdateIncidentRetrospectiveField.js";
export function createMCPServer(deps: {
logger: ConsoleLogger;
allowedTools?: string[] | undefined;
scopes?: MCPScope[] | undefined;
getSDK?: () => FireHydrantCore;
serverURL?: string | undefined;
security?: SDKOptions["security"] | undefined;
serverIdx?: SDKOptions["serverIdx"] | undefined;
}) {
const server = new McpServer({
name: "FireHydrant",
version: "0.0.3",
});
const getClient = deps.getSDK || (() =>
new FireHydrantCore({
security: deps.security,
serverURL: deps.serverURL,
serverIdx: deps.serverIdx,
debugLogger: deps.logger.level === "debug"
? {
log: (...args) => console.log(...args),
group: (...args) => console.group(...args),
groupEnd: (...args) => console.groupEnd(...args),
}
: undefined,
}));
const scopes = new Set(deps.scopes);
const allowedTools = deps.allowedTools && new Set(deps.allowedTools);
const [tool, tools] = createRegisterTool(
deps.logger,
server,
getClient,
scopes,
allowedTools,
);
const resource = createRegisterResource(
deps.logger,
server,
getClient,
scopes,
);
const resourceTemplate = createRegisterResourceTemplate(
deps.logger,
server,
getClient,
scopes,
);
const prompt = createRegisterPrompt(deps.logger, server, getClient, scopes);
const register = { tool, resource, resourceTemplate, prompt };
void register; // suppress unused warnings
tool(tool$incidentsListIncidents);
tool(tool$incidentsCreateIncident);
tool(tool$retrospectivesListIncidentRetrospectives);
tool(tool$retrospectivesUpdateIncidentRetrospectiveField);
tool(tool$alertsListAlerts);
registerMCPExtensions(register satisfies Register);
return { server, tools };
}