@toolprint/hypertool-mcp
Version:
HyperTool MCP proxy server for routing requests between clients and multiple underlying MCP servers
91 lines • 3.18 kB
TypeScript
/**
* Database interfaces for server and group management
* These interfaces provide abstraction over the underlying database implementation
*/
import { ServerConfig } from "../types/config.js";
/**
* Represents a configuration source (where configs are imported from)
* Stored in the 'configSources' collection.
*/
export interface IConfigSource {
id: string;
type: "global" | "app" | "profile";
appId?: string;
profileId?: string;
path: string;
priority: number;
lastSynced: number;
}
/**
* Represents a canonical, internally managed MCP server configuration record.
* Stored in the 'servers' collection.
*/
export interface ServerConfigRecord {
id: string;
name: string;
type: "stdio" | "http" | "sse";
config: ServerConfig;
lastModified: number;
checksum: string;
sourceId?: string;
}
/**
* Represents a named, user-defined collection of ServerConfigRecord IDs.
* Stored in the 'groups' collection.
*/
export interface ServerConfigGroup {
id: string;
name: string;
description?: string;
serverIds: string[];
}
/**
* Interface for interacting with ServerConfigRecord data.
*/
export interface IServerConfigRecordRepository {
add(server: Omit<ServerConfigRecord, "id">): Promise<ServerConfigRecord>;
update(server: ServerConfigRecord): Promise<ServerConfigRecord | null>;
delete(id: string): Promise<boolean>;
findById(id: string): Promise<ServerConfigRecord | null>;
findByName(name: string): Promise<ServerConfigRecord | null>;
findAll(): Promise<ServerConfigRecord[]>;
}
/**
* Interface for interacting with ServerConfigGroup data.
*/
export interface IServerConfigGroupRepository {
add(group: Omit<ServerConfigGroup, "id">): Promise<ServerConfigGroup>;
update(group: ServerConfigGroup): Promise<ServerConfigGroup | null>;
delete(id: string): Promise<boolean>;
findById(id: string): Promise<ServerConfigGroup | null>;
findByName(name: string): Promise<ServerConfigGroup | null>;
findAll(): Promise<ServerConfigGroup[]>;
/**
* Retrieves all ServerConfigRecord objects that are members of a specific group.
* This method will internally query the IServerConfigRecordRepository.
*/
findServersInGroup(groupId: string): Promise<ServerConfigRecord[]>;
}
/**
* Interface for interacting with ConfigSource data.
*/
export interface IConfigSourceRepository {
add(source: Omit<IConfigSource, "id">): Promise<IConfigSource>;
update(source: IConfigSource): Promise<IConfigSource | null>;
delete(id: string): Promise<boolean>;
findById(id: string): Promise<IConfigSource | null>;
findByPath(path: string): Promise<IConfigSource | null>;
findByAppId(appId: string): Promise<IConfigSource[]>;
findAll(): Promise<IConfigSource[]>;
}
/**
* Central service interface for managing the database and providing access to repositories.
*/
export interface IDatabaseService {
servers: IServerConfigRecordRepository;
groups: IServerConfigGroupRepository;
configSources: IConfigSourceRepository;
init(): Promise<void>;
close(): Promise<void>;
}
//# sourceMappingURL=interfaces.d.ts.map