Skip to main content
Glama
deployment.ts4.58 kB
import { z } from "zod"; /** * Deployment Tools - Infrastructure and Server Configuration */ // ============================================ // Generate Kubernetes Manifest // ============================================ export const generateK8sManifestSchema = { name: "generate_k8s_manifest", description: "Generates Kubernetes manifests (Deployment, Service, Ingress)", inputSchema: z.object({ name: z.string().describe("Application name"), image: z.string().describe("Docker image"), port: z.number().default(80), replicas: z.number().default(1), namespace: z.string().default("default") }) }; export function generateK8sManifestHandler(args: { name: string; image: string; port: number; replicas: number; namespace: string }) { const { name, image, port, replicas, namespace } = args; const manifest = `apiVersion: apps/v1 kind: Deployment metadata: name: ${name} namespace: ${namespace} spec: replicas: ${replicas} selector: matchLabels: app: ${name} template: metadata: labels: app: ${name} spec: containers: - name: ${name} image: ${image} ports: - containerPort: ${port} --- apiVersion: v1 kind: Service metadata: name: ${name}-svc namespace: ${namespace} spec: selector: app: ${name} ports: - protocol: TCP port: 80 targetPort: ${port} type: ClusterIP`; return { content: [{ type: "text", text: `# Kubernetes Manifest\n\n\`\`\`yaml\n${manifest}\n\`\`\`` }] }; } // ============================================ // Generate Terraform Config // ============================================ export const generateTerraformConfigSchema = { name: "generate_terraform_config", description: "Generates basic Terraform configuration for cloud providers", inputSchema: z.object({ provider: z.enum(["aws", "gcp", "azure"]).describe("Cloud provider"), resources: z.array(z.string()).describe("List of resources (e.g. 'vm', 'bucket', 'db')"), region: z.string().default("us-east-1") }) }; export function generateTerraformConfigHandler(args: { provider: string; resources: string[]; region: string }) { const { provider, resources, region } = args; let content = `provider "${provider}" {\n region = "${region}"\n}\n\n`; if (provider === "aws") { if (resources.some(r => r.includes("bucket"))) { content += `resource "aws_s3_bucket" "main" {\n bucket = "my-app-bucket"\n acl = "private"\n}\n`; } if (resources.some(r => r.includes("vm"))) { content += `resource "aws_instance" "web" {\n ami = "ami-12345678"\n instance_type = "t2.micro"\n}\n`; } } else { content += `# TODO: Add templates for ${provider} resources: ${resources.join(", ")}`; } return { content: [{ type: "text", text: `# Terraform Config (${provider})\n\n\`\`\`hcl\n${content}\n\`\`\`` }] }; } // ============================================ // Generate Nginx Config // ============================================ export const generateNginxConfigSchema = { name: "generate_nginx_config", description: "Generates Nginx configuration for reverse proxy or static site", inputSchema: z.object({ domain: z.string().describe("Domain name"), proxyTo: z.string().optional().describe("Upstream URL (e.g. http://localhost:3000)"), rootPath: z.string().optional().describe("Root path for static files") }) }; export function generateNginxConfigHandler(args: { domain: string; proxyTo?: string; rootPath?: string }) { const { domain, proxyTo, rootPath } = args; const config = `server { listen 80; server_name ${domain}; ${rootPath ? `root ${rootPath};\n index index.html;` : ''} location / { ${proxyTo ? `proxy_pass ${proxyTo}; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host;` : 'try_files $uri $uri/ =404;'} } }`; return { content: [{ type: "text", text: `# Nginx Config\n\n\`\`\`nginx\n${config}\n\`\`\`` }] }; } // Export all export const deploymentTools = { generateK8sManifestSchema, generateK8sManifestHandler, generateTerraformConfigSchema, generateTerraformConfigHandler, generateNginxConfigSchema, generateNginxConfigHandler };

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/millsydotdev/Code-MCP'

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