Skip to main content
Glama
modals.ts3.79 kB
import { Agent, McpServer, ToolDetails } from "@/types"; import { TargetServerNew } from "@mcpx/shared-model"; import { create } from "zustand"; import { useShallow } from "zustand/react/shallow"; import { CustomTool } from "./tools"; import { McpxData } from "@/components/dashboard/SystemConnectivity/types"; export interface ModalsStore { // Add Server Modal isAddServerModalOpen: boolean; openAddServerModal: () => void; closeAddServerModal: () => void; // Edit Server Modal isEditServerModalOpen: boolean; openEditServerModal: (initialData: TargetServerNew) => void; closeEditServerModal: () => void; editServerModalData?: TargetServerNew; // Config Modal isConfigModalOpen: boolean; openConfigModal: () => void; closeConfigModal: () => void; // Custom tool Modal isCustomToolModalOpen: boolean; openCustomToolModal: (tool: CustomTool) => void; closeCustomToolModal: () => void; selectedTool?: CustomTool | null; // Tool details Modal isToolDetailsModalOpen: boolean; openToolDetailsModal: (toolDetails: ToolDetails) => void; closeToolDetailsModal: () => void; toolDetails?: ToolDetails | null; // Server details Modal isServerDetailsModalOpen: boolean; openServerDetailsModal: (server: McpServer) => void; closeServerDetailsModal: () => void; selectedServer?: McpServer | null; // Agent details Modal isAgentDetailsModalOpen: boolean; openAgentDetailsModal: (agent: Agent) => void; closeAgentDetailsModal: () => void; selectedAgent?: Agent | null; // Mcpx details Modal isMcpxDetailsModalOpen: boolean; openMcpxDetailsModal: (mcpxData: McpxData) => void; closeMcpxDetailsModal: () => void; selectedMcpxData?: McpxData | null; isMcpxSaving: boolean; setIsMcpxSaving: (saving: boolean) => void; } const modalsStore = create<ModalsStore>((set) => ({ isAddServerModalOpen: false, openAddServerModal: () => set({ isAddServerModalOpen: true }), closeAddServerModal: () => set({ isAddServerModalOpen: false }), isConfigModalOpen: false, openConfigModal: () => set({ isConfigModalOpen: true }), closeConfigModal: () => set({ isConfigModalOpen: false }), isEditServerModalOpen: false, openEditServerModal: (initialData) => set({ isEditServerModalOpen: true, editServerModalData: initialData }), closeEditServerModal: () => set({ isEditServerModalOpen: false, editServerModalData: undefined }), isCustomToolModalOpen: false, openCustomToolModal: (tool) => set({ isCustomToolModalOpen: true, selectedTool: tool }), closeCustomToolModal: () => set({ isCustomToolModalOpen: false, selectedTool: null }), isToolDetailsModalOpen: false, openToolDetailsModal: (toolDetails) => set({ isToolDetailsModalOpen: true, toolDetails }), closeToolDetailsModal: () => set({ isToolDetailsModalOpen: false, toolDetails: null }), isServerDetailsModalOpen: false, openServerDetailsModal: (server) => set({ isServerDetailsModalOpen: true, selectedServer: server }), closeServerDetailsModal: () => set({ isServerDetailsModalOpen: false, selectedServer: null }), isAgentDetailsModalOpen: false, openAgentDetailsModal: (agent) => set({ isAgentDetailsModalOpen: true, selectedAgent: agent }), closeAgentDetailsModal: () => set({ isAgentDetailsModalOpen: false, selectedAgent: undefined }), isMcpxDetailsModalOpen: false, openMcpxDetailsModal: (mcpxData) => set({ isMcpxDetailsModalOpen: true, selectedMcpxData: mcpxData }), closeMcpxDetailsModal: () => set({ isMcpxDetailsModalOpen: false, selectedMcpxData: undefined }), isMcpxSaving: false, setIsMcpxSaving: (saving: boolean) => set({ isMcpxSaving: saving }), })); export const useModalsStore = <T>(selector: (state: ModalsStore) => T) => modalsStore(useShallow(selector));

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/TheLunarCompany/lunar'

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