Skip to main content
Glama
mkXultra
by mkXultra
management.schema.ts4.98 kB
// Agent Communication MCP Server - 管理ツールのZodスキーマ定義 import { z } from 'zod'; // 共通のバリデーションルール const roomNameSchema = z .string() .min(1, 'Room name cannot be empty') .max(50, 'Room name cannot exceed 50 characters') .regex(/^[a-zA-Z0-9-_]+$/, 'Room name must contain only alphanumeric characters, hyphens, and underscores'); // get_status ツール export const getStatusInputSchema = z.object({ roomName: roomNameSchema.optional(), }); // spec.md lines 157-167 準拠 export const getStatusOutputSchema = z.object({ rooms: z.array(z.object({ name: z.string(), onlineUsers: z.number(), totalMessages: z.number(), storageSize: z.number(), })), totalRooms: z.number(), totalOnlineUsers: z.number(), totalMessages: z.number(), }); // clear_room_messages ツール (spec.md line 172-179 準拠) export const clearRoomMessagesInputSchema = z.object({ roomName: roomNameSchema, confirm: z.boolean(), // spec要件に従い必須パラメータ }); export const clearRoomMessagesOutputSchema = z.object({ success: z.boolean(), roomName: z.string(), clearedCount: z.number(), // spec要件: clearedCount }); // get_room_statistics ツール export const getRoomStatisticsInputSchema = z.object({ roomName: roomNameSchema, includeHistory: z.boolean().default(false), timeRange: z.object({ from: z.string().refine((val) => !isNaN(Date.parse(val)), 'Invalid from timestamp'), to: z.string().refine((val) => !isNaN(Date.parse(val)), 'Invalid to timestamp'), }).optional(), }); export const getRoomStatisticsOutputSchema = z.object({ roomName: z.string(), totalMessages: z.number(), uniqueAgents: z.number(), messagesByAgent: z.record(z.number()), firstMessageAt: z.string().optional(), lastMessageAt: z.string().optional(), averageMessagesPerDay: z.number().optional(), mostActiveAgent: z.string().optional(), peakActivity: z.object({ date: z.string(), messageCount: z.number(), }).optional(), timeRange: z.object({ from: z.string(), to: z.string(), }).optional(), }); // export_room_data ツール(将来の拡張用) export const exportRoomDataInputSchema = z.object({ roomName: roomNameSchema, format: z.enum(['json', 'csv', 'txt']).default('json'), includeMetadata: z.boolean().default(false), timeRange: z.object({ from: z.string().refine((val) => !isNaN(Date.parse(val)), 'Invalid from timestamp'), to: z.string().refine((val) => !isNaN(Date.parse(val)), 'Invalid to timestamp'), }).optional(), }); export const exportRoomDataOutputSchema = z.object({ success: z.boolean(), roomName: z.string(), format: z.string(), dataSize: z.number(), messageCount: z.number(), exportedAt: z.string(), downloadUrl: z.string().optional(), data: z.any().optional(), }); // backup_room ツール(将来の拡張用) export const backupRoomInputSchema = z.object({ roomName: roomNameSchema, includePresence: z.boolean().default(true), compression: z.boolean().default(true), }); export const backupRoomOutputSchema = z.object({ success: z.boolean(), roomName: z.string(), backupId: z.string(), backupSize: z.number(), messageCount: z.number(), presenceCount: z.number(), backedUpAt: z.string(), backupPath: z.string().optional(), }); // restore_room ツール(将来の拡張用) export const restoreRoomInputSchema = z.object({ backupId: z.string().min(1, 'Backup ID cannot be empty'), targetRoomName: roomNameSchema.optional(), overwriteExisting: z.boolean().default(false), }); export const restoreRoomOutputSchema = z.object({ success: z.boolean(), backupId: z.string(), roomName: z.string(), restoredMessageCount: z.number(), restoredPresenceCount: z.number(), restoredAt: z.string(), overwritten: z.boolean(), }); // エイリアスを追加(後方互換性のため) export const getStatusSchema = getStatusInputSchema; export const clearRoomMessagesSchema = clearRoomMessagesInputSchema; // 型定義をエクスポート export type GetStatusInput = z.infer<typeof getStatusInputSchema>; export type GetStatusOutput = z.infer<typeof getStatusOutputSchema>; export type ClearRoomMessagesInput = z.infer<typeof clearRoomMessagesInputSchema>; export type ClearRoomMessagesOutput = z.infer<typeof clearRoomMessagesOutputSchema>; export type GetRoomStatisticsInput = z.infer<typeof getRoomStatisticsInputSchema>; export type GetRoomStatisticsOutput = z.infer<typeof getRoomStatisticsOutputSchema>; export type ExportRoomDataInput = z.infer<typeof exportRoomDataInputSchema>; export type ExportRoomDataOutput = z.infer<typeof exportRoomDataOutputSchema>; export type BackupRoomInput = z.infer<typeof backupRoomInputSchema>; export type BackupRoomOutput = z.infer<typeof backupRoomOutputSchema>; export type RestoreRoomInput = z.infer<typeof restoreRoomInputSchema>; export type RestoreRoomOutput = z.infer<typeof restoreRoomOutputSchema>;

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/mkXultra/agent-communication-mcp'

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