Skip to main content
Glama

manage_dns

Configure and manage Tailscale DNS settings, including nameservers, search paths, and MagicDNS preferences, via the MCP server for streamlined network administration.

Instructions

Manage Tailscale DNS configuration

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
magicDNSNoEnable/disable MagicDNS (for set_preferences operation)
nameserversNoDNS nameservers (for set_nameservers operation)
operationYesDNS operation to perform
searchPathsNoDNS search paths (for set_searchpaths operation)

Implementation Reference

  • The main handler function for the 'manage_dns' tool that handles DNS operations such as getting/setting nameservers, preferences, and search paths using Tailscale API.
    async function manageDNS( args: z.infer<typeof DNSSchema>, context: ToolContext, ): Promise<CallToolResult> { try { logger.debug("Managing DNS configuration:", args); switch (args.operation) { case "get_nameservers": { const result = await context.api.getDNSNameservers(); if (!result.success) { return returnToolError(result.error); } const nameservers = result.data?.dns || []; return returnToolSuccess( `DNS Nameservers:\n${ nameservers.length > 0 ? nameservers.map((ns) => ` - ${ns}`).join("\n") : " No custom nameservers configured" }`, ); } case "set_nameservers": { if (!args.nameservers) { return returnToolError( "Nameservers array is required for set_nameservers operation", ); } const result = await context.api.setDNSNameservers(args.nameservers); if (!result.success) { return returnToolError(result.error); } return returnToolSuccess( `DNS nameservers updated to: ${args.nameservers.join(", ")}`, ); } case "get_preferences": { const result = await context.api.getDNSPreferences(); if (!result.success) { return returnToolError(result.error); } return returnToolSuccess( `DNS Preferences:\n MagicDNS: ${ result.data?.magicDNS ? "Enabled" : "Disabled" }`, ); } case "set_preferences": { if (args.magicDNS === undefined) { return returnToolError( "magicDNS boolean is required for set_preferences operation", ); } const result = await context.api.setDNSPreferences(args.magicDNS); if (!result.success) { return returnToolError(result.error); } return returnToolSuccess( `MagicDNS ${args.magicDNS ? "enabled" : "disabled"}`, ); } case "get_searchpaths": { const result = await context.api.getDNSSearchPaths(); if (!result.success) { return returnToolError(result.error); } const searchPaths = result.data?.searchPaths || []; return returnToolSuccess( `DNS Search Paths:\n${ searchPaths.length > 0 ? searchPaths.map((path) => ` - ${path}`).join("\n") : " No search paths configured" }`, ); } case "set_searchpaths": { if (!args.searchPaths) { return returnToolError( "searchPaths array is required for set_searchpaths operation", ); } const result = await context.api.setDNSSearchPaths(args.searchPaths); if (!result.success) { return returnToolError(result.error); } return returnToolSuccess( `DNS search paths updated to: ${args.searchPaths.join(", ")}`, ); } default: return returnToolError( "Invalid DNS operation. Use: get_nameservers, set_nameservers, get_preferences, set_preferences, get_searchpaths, set_searchpaths", ); } } catch (error: unknown) { logger.error("Error managing DNS:", error); return returnToolError(error); } }
  • Zod input schema for the manage_dns tool defining the operation and optional parameters for nameservers, magicDNS, and search paths.
    const DNSSchema = z.object({ operation: z .enum([ "get_nameservers", "set_nameservers", "get_preferences", "set_preferences", "get_searchpaths", "set_searchpaths", ]) .describe("DNS operation to perform"), nameservers: z .array(z.string()) .optional() .describe("DNS nameservers (for set_nameservers operation)"), magicDNS: z .boolean() .optional() .describe("Enable/disable MagicDNS (for set_preferences operation)"), searchPaths: z .array(z.string()) .optional() .describe("DNS search paths (for set_searchpaths operation)"), });
  • Registration of the manage_dns tool within the aclTools module, specifying name, description, input schema, and handler function.
    { name: "manage_dns", description: "Manage Tailscale DNS configuration", inputSchema: DNSSchema, handler: manageDNS, },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HexSleeves/tailscale-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server