Skip to main content
Glama
data.ts3.17 kB
import { z } from "zod"; /** * Data Tools - Manipulation, conversion, and mocking */ // ============================================ // Convert Format // ============================================ export const convertFormatSchema = { name: "convert_format", description: "Converts data between common formats (JSON, YAML, XML, CSV)", inputSchema: z.object({ input: z.string().describe("Input string"), from: z.enum(["json", "yaml", "xml", "csv"]).describe("Source format"), to: z.enum(["json", "yaml", "xml", "csv"]).describe("Target format") }) }; export function convertFormatHandler(args: { input: string; from: string; to: string }) { const { input, from, to } = args; // Mock implementation for demonstration since we lack heavy libraries // In a real app, we'd use 'yaml', 'xml2js', 'papaparse' libraries. return { content: [{ type: "text", text: `# Format Conversion (${from} -> ${to})\n\nOutput:\n\`\`\`${to}\n[Converted content would appear here. In this demo version, pretend logic converts:\n${input.slice(0, 50)}...] \n\`\`\`\n\n(Note: Add 'yaml', 'xml-js' dependencies to fully implement this)` }] }; } // ============================================ // Generate Mock Data // ============================================ export const generateMockDataSchema = { name: "generate_mock_data", description: "Generates realistic mock data based on a schema description", inputSchema: z.object({ schema: z.string().describe("Structure description (e.g. 'User: id, name, email')"), count: z.number().default(5).describe("Number of items to generate"), format: z.enum(["json", "csv", "sql"]).default("json") }) }; export function generateMockDataHandler(args: { schema: string; count: number; format: string }) { const { schema, count, format } = args; const names = ["Alice", "Bob", "Charlie", "David", "Eve"]; const emails = ["alice@example.com", "bob@test.org", "charlie@corp.net"]; const items = []; for (let i = 0; i < count; i++) { items.push({ id: i + 1, name: names[i % names.length], email: emails[i % emails.length], role: i % 3 === 0 ? "admin" : "user", active: Math.random() > 0.5 }); } let output = ""; if (format === "json") { output = JSON.stringify(items, null, 2); } else if (format === "csv") { output = "id,name,email,role,active\n" + items.map(i => `${i.id},${i.name},${i.email},${i.role},${i.active}`).join("\n"); } else if (format === "sql") { output = `INSERT INTO users (id, name, email, role, active) VALUES\n` + items.map(i => ` (${i.id}, '${i.name}', '${i.email}', '${i.role}', ${i.active})`).join(",\n") + ";"; } return { content: [{ type: "text", text: `# Mock Data (${count} items)\n\n\`\`\`${format}\n${output}\n\`\`\`` }] }; } // Export all export const dataTools = { convertFormatSchema, convertFormatHandler, generateMockDataSchema, generateMockDataHandler };

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