Skip to main content
Glama
mkXultra
by mkXultra
index.ts4.84 kB
// Agent Communication MCP Server - Rooms Feature Public API // エージェントB担当:ルーム・プレゼンス機能公開API import { RoomService } from './room/RoomService'; import { PresenceService } from './presence/PresenceService'; import { AgentProfile } from '../../types/entities'; import { getDataDirectory } from '../../utils/dataDir'; import { LockService } from '../../services/LockService'; import { CreateRoomResult, ListRoomsResult, EnterRoomResult, LeaveRoomResult, ListRoomUsersResult, RoomData } from './types/rooms.types'; // === 公開インターフェース === export interface IRoomsAPI { // ルーム管理 createRoom(name: string, description?: string): Promise<CreateRoomResult>; roomExists(name: string): Promise<boolean>; listRooms(agentName?: string): Promise<ListRoomsResult>; getRoomData(name: string): Promise<RoomData | null>; // プレゼンス管理 enterRoom(agentName: string, roomName: string, profile?: AgentProfile): Promise<EnterRoomResult>; leaveRoom(agentName: string, roomName: string): Promise<LeaveRoomResult>; getRoomUsers(roomName: string): Promise<ListRoomUsersResult>; isUserInRoom(roomName: string, agentName: string): Promise<boolean>; getUserStatus(roomName: string, agentName: string): Promise<'online' | 'offline' | null>; // 統計・管理 getRoomCount(): Promise<number>; getAllRoomNames(): Promise<string[]>; getOnlineUsersCount(roomName: string): Promise<number>; cleanupOfflineUsers(roomName: string, thresholdHours?: number): Promise<number>; } // === 公開API実装クラス === export class RoomsAPI implements IRoomsAPI { private roomService: RoomService; private presenceService: PresenceService; private lockService: LockService; constructor(dataDir: string = getDataDirectory(), lockService?: LockService) { this.lockService = lockService || new LockService(dataDir); this.roomService = new RoomService(dataDir, this.lockService); this.presenceService = new PresenceService(dataDir, this.lockService); } // === ルーム管理 === async createRoom(name: string, description?: string): Promise<CreateRoomResult> { return this.roomService.createRoom(name, description); } async roomExists(name: string): Promise<boolean> { return this.roomService.roomExists(name); } async listRooms(agentName?: string): Promise<ListRoomsResult> { return this.roomService.listRooms(agentName); } async getRoomData(name: string): Promise<RoomData | null> { return this.roomService.getRoomData(name); } // === プレゼンス管理 === async enterRoom(agentName: string, roomName: string, profile?: AgentProfile): Promise<EnterRoomResult> { return this.presenceService.enterRoom(agentName, roomName, profile); } async leaveRoom(agentName: string, roomName: string): Promise<LeaveRoomResult> { return this.presenceService.leaveRoom(agentName, roomName); } async getRoomUsers(roomName: string): Promise<ListRoomUsersResult> { return this.presenceService.listRoomUsers(roomName); } async isUserInRoom(roomName: string, agentName: string): Promise<boolean> { return this.presenceService.isUserInRoom(roomName, agentName); } async getUserStatus(roomName: string, agentName: string): Promise<'online' | 'offline' | null> { return this.presenceService.getUserStatus(roomName, agentName); } // === 統計・管理 === async getRoomCount(): Promise<number> { return this.roomService.getRoomCount(); } async getAllRoomNames(): Promise<string[]> { return this.roomService.getAllRoomNames(); } async getOnlineUsersCount(roomName: string): Promise<number> { return this.presenceService.getOnlineUsersCount(roomName); } async cleanupOfflineUsers(roomName: string, thresholdHours: number = 24): Promise<number> { return this.presenceService.cleanupOfflineUsers(roomName, thresholdHours); } // === デバッグ・テスト用メソッド === async clearAllRooms(): Promise<void> { await this.roomService.clearAllRooms(); } async clearRoomPresence(roomName: string): Promise<void> { await this.presenceService.clearRoomPresence(roomName); } } // === エクスポート === // メインAPI - IRoomsAPI interface is already exported above // サービスクラス export { RoomService } from './room/RoomService'; export { PresenceService } from './presence/PresenceService'; // ストレージクラス export { RoomStorage } from './room/RoomStorage'; export { PresenceStorage } from './presence/PresenceStorage'; // 型定義 export * from './types/rooms.types'; // MCPツール export { roomTools } from './tools/room.tools'; export { presenceTools } from './tools/presence.tools'; // デフォルトエクスポート(メインAPI) export default RoomsAPI;

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