Skip to main content
Glama
mkXultra
by mkXultra
room.schema.ts3.92 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'); const agentNameSchema = z .string() .min(1, 'Agent name cannot be empty') .max(50, 'Agent name cannot exceed 50 characters'); const agentProfileSchema = z.object({ role: z.string().optional(), description: z.string().optional(), capabilities: z.array(z.string()).optional(), metadata: z.record(z.any()).optional(), }).optional(); // create_room ツール export const createRoomInputSchema = z.object({ roomName: roomNameSchema, description: z.string().max(200, 'Description cannot exceed 200 characters').optional(), }); export const createRoomOutputSchema = z.object({ success: z.boolean(), roomName: z.string(), description: z.string().optional(), createdAt: z.string(), }); // list_rooms ツール export const listRoomsInputSchema = z.object({ agentName: agentNameSchema.optional(), }); export const listRoomsOutputSchema = z.object({ rooms: z.array(z.object({ name: z.string(), description: z.string().optional(), createdAt: z.string(), messageCount: z.number(), userCount: z.number(), })), total: z.number(), }); // enter_room ツール export const enterRoomInputSchema = z.object({ agentName: agentNameSchema, roomName: roomNameSchema, profile: agentProfileSchema, }); export const enterRoomOutputSchema = z.object({ success: z.boolean(), agentName: z.string(), roomName: z.string(), joinedAt: z.string(), }); // leave_room ツール export const leaveRoomInputSchema = z.object({ agentName: agentNameSchema, roomName: roomNameSchema, }); export const leaveRoomOutputSchema = z.object({ success: z.boolean(), agentName: z.string(), roomName: z.string(), leftAt: z.string(), }); // list_room_users ツール export const listRoomUsersInputSchema = z.object({ roomName: roomNameSchema, }); export const listRoomUsersOutputSchema = z.object({ roomName: z.string(), users: z.array(z.object({ agentName: z.string(), status: z.enum(['online', 'offline']), joinedAt: z.string(), messageCount: z.number(), profile: agentProfileSchema, })), total: z.number(), }); // delete_room ツール export const deleteRoomInputSchema = z.object({ roomName: roomNameSchema, }); export const deleteRoomOutputSchema = z.object({ success: z.boolean(), roomName: z.string(), deletedAt: z.string(), }); // エイリアスを追加(後方互換性のため) export const createRoomSchema = createRoomInputSchema; export const listRoomsSchema = listRoomsInputSchema; export const enterRoomSchema = enterRoomInputSchema; export const leaveRoomSchema = leaveRoomInputSchema; export const listRoomUsersSchema = listRoomUsersInputSchema; // 型定義をエクスポート export type CreateRoomInput = z.infer<typeof createRoomInputSchema>; export type CreateRoomOutput = z.infer<typeof createRoomOutputSchema>; export type ListRoomsInput = z.infer<typeof listRoomsInputSchema>; export type ListRoomsOutput = z.infer<typeof listRoomsOutputSchema>; export type EnterRoomInput = z.infer<typeof enterRoomInputSchema>; export type EnterRoomOutput = z.infer<typeof enterRoomOutputSchema>; export type LeaveRoomInput = z.infer<typeof leaveRoomInputSchema>; export type LeaveRoomOutput = z.infer<typeof leaveRoomOutputSchema>; export type ListRoomUsersInput = z.infer<typeof listRoomUsersInputSchema>; export type ListRoomUsersOutput = z.infer<typeof listRoomUsersOutputSchema>; export type DeleteRoomInput = z.infer<typeof deleteRoomInputSchema>; export type DeleteRoomOutput = z.infer<typeof deleteRoomOutputSchema>;

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