Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 2x 2x 2x 2x 7x 11x 5x 5x 11x 8x 5x 2x 2x 22x 22x 22x 22x 137x 137x 197x 158x 158x 22x 22x | import { createRequire } from "node:module";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { SpaceshipClient } from "./spaceship-client.js";
import { registerDnsRecordTools } from "./tools/dns-records.js";
import { registerDnsRecordCreatorTools } from "./tools/dns-record-creators.js";
import { registerDomainManagementTools } from "./tools/domain-management.js";
import { registerDomainLifecycleTools } from "./tools/domain-lifecycle.js";
import { registerContactsPrivacyTools } from "./tools/contacts-privacy.js";
import { registerSellerHubTools } from "./tools/sellerhub.js";
import { registerPersonalNameserverTools } from "./tools/personal-nameservers.js";
import { registerAnalysisTools } from "./tools/analysis.js";
import { registerPrompts } from "./prompts.js";
const require = createRequire(import.meta.url);
const { version } = require("../package.json") as { version: string };
export type Toolset = "domains" | "dns" | "contacts" | "privacy" | "nameservers" | "sellerhub" | "availability";
const ALL_TOOLSETS: Toolset[] = ["domains", "dns", "contacts", "privacy", "nameservers", "sellerhub", "availability"];
export const parseToolsets = (env?: string): Set<Toolset> => {
if (!env) return new Set(ALL_TOOLSETS);
const requested = env.split(",").map((s) => s.trim().toLowerCase());
const valid = new Set<Toolset>();
for (const name of requested) {
if (ALL_TOOLSETS.includes(name as Toolset)) {
valid.add(name as Toolset);
}
}
return valid.size > 0 ? valid : new Set(ALL_TOOLSETS);
};
type ToolRegisterer = (server: McpServer, client: SpaceshipClient) => void;
const toolsetRegistry: Record<Toolset, ToolRegisterer[]> = {
domains: [registerDomainManagementTools, registerDomainLifecycleTools],
dns: [registerDnsRecordTools, registerDnsRecordCreatorTools, registerAnalysisTools],
contacts: [registerContactsPrivacyTools],
privacy: [registerContactsPrivacyTools],
nameservers: [registerPersonalNameserverTools],
sellerhub: [registerSellerHubTools],
availability: [registerDomainManagementTools],
};
export const createServer = (
client: SpaceshipClient,
toolsets?: Set<Toolset>,
): McpServer => {
const server = new McpServer({
name: "spaceship-mcp",
version,
});
const enabled = toolsets ?? new Set(ALL_TOOLSETS);
const registered = new Set<ToolRegisterer>();
for (const toolset of enabled) {
const registerers = toolsetRegistry[toolset];
for (const register of registerers) {
if (!registered.has(register)) {
registered.add(register);
register(server, client);
}
}
}
registerPrompts(server, client);
return server;
};
|