@takashito/linode-mcp-server
Version:
MCP server for Linode API
192 lines (191 loc) • 6.86 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface DatabaseEngine {
id: string;
engine: string;
version: string;
}
export interface DatabaseType {
id: string;
label: string;
engines: DatabaseEngine[];
class: string;
memory_mb: number;
disk_mb: number;
vcpus: number;
price: {
hourly: number;
monthly: number;
};
regions: string[];
}
export interface DatabaseInstance {
id: number;
status: 'provisioning' | 'active' | 'suspending' | 'suspended' | 'resuming' | 'restoring' | 'failed' | 'degraded';
label: string;
region: string;
type: string;
engine: string;
version: string;
cluster_size: number;
replica_set?: boolean;
encrypted: boolean;
ssl_connection: boolean;
allow_list: string[];
port: number;
hosts: {
primary?: string;
secondary?: string;
primary_read_only?: string;
};
created: string;
updated: string;
}
export interface MySQLDatabaseInstance extends DatabaseInstance {
updates?: {
day_of_week: number;
duration: number;
frequency: string;
hour_of_day: number;
week_of_month?: number;
};
}
export interface PostgreSQLDatabaseInstance extends DatabaseInstance {
updates?: {
day_of_week: number;
duration: number;
frequency: string;
hour_of_day: number;
week_of_month?: number;
};
}
export interface DatabaseCredentials {
username: string;
password: string;
}
export interface SSLCertificate {
ca_certificate: string;
}
export interface CreateMySQLDatabaseRequest {
label: string;
region: string;
type: string;
engine: string;
allow_list?: string[];
cluster_size?: number;
encrypted?: boolean;
ssl_connection?: boolean;
tags?: string[];
updates?: {
day_of_week: number;
duration: number;
frequency: 'weekly' | 'monthly';
hour_of_day: number;
week_of_month?: number;
};
}
export interface UpdateMySQLDatabaseRequest {
label?: string;
allow_list?: string[];
updates?: {
day_of_week?: number;
duration?: number;
frequency?: 'weekly' | 'monthly';
hour_of_day?: number;
week_of_month?: number;
};
tags?: string[];
}
export interface CreatePostgreSQLDatabaseRequest {
label: string;
region: string;
type: string;
engine: string;
allow_list?: string[];
cluster_size?: number;
encrypted?: boolean;
ssl_connection?: boolean;
tags?: string[];
updates?: {
day_of_week: number;
duration: number;
frequency: 'weekly' | 'monthly';
hour_of_day: number;
week_of_month?: number;
};
}
export interface PostgreSQLConnectionPool {
name: string;
database: string;
user: string;
mode: string;
size: number;
}
export interface CreatePostgreSQLConnectionPoolRequest {
name: string;
database: string;
user: string;
mode: string;
size: number;
}
export interface UpdatePostgreSQLConnectionPoolRequest {
database?: string;
user?: string;
mode?: string;
size?: number;
}
export interface DatabaseConfig {
[key: string]: any;
}
export interface UpdatePostgreSQLDatabaseRequest {
label?: string;
allow_list?: string[];
updates?: {
day_of_week?: number;
duration?: number;
frequency?: 'weekly' | 'monthly';
hour_of_day?: number;
week_of_month?: number;
};
tags?: string[];
}
export interface DatabasesClient {
getEngines: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseEngine>>;
getEngine: (engineId: string) => Promise<DatabaseEngine>;
getTypes: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseType>>;
getType: (typeId: string) => Promise<DatabaseType>;
getDatabaseInstances: (params?: PaginationParams) => Promise<PaginatedResponse<DatabaseInstance>>;
getMySQLInstances: (params?: PaginationParams) => Promise<PaginatedResponse<MySQLDatabaseInstance>>;
getMySQLInstance: (instanceId: number) => Promise<MySQLDatabaseInstance>;
createMySQLInstance: (data: CreateMySQLDatabaseRequest) => Promise<MySQLDatabaseInstance>;
updateMySQLInstance: (instanceId: number, data: UpdateMySQLDatabaseRequest) => Promise<MySQLDatabaseInstance>;
deleteMySQLInstance: (instanceId: number) => Promise<void>;
getMySQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>;
resetMySQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>;
getMySQLSSLCertificate: (instanceId: number) => Promise<SSLCertificate>;
patchMySQLInstance: (instanceId: number) => Promise<void>;
suspendMySQLInstance: (instanceId: number) => Promise<void>;
resumeMySQLInstance: (instanceId: number) => Promise<void>;
getPostgreSQLInstances: (params?: PaginationParams) => Promise<PaginatedResponse<PostgreSQLDatabaseInstance>>;
getPostgreSQLInstance: (instanceId: number) => Promise<PostgreSQLDatabaseInstance>;
createPostgreSQLInstance: (data: CreatePostgreSQLDatabaseRequest) => Promise<PostgreSQLDatabaseInstance>;
updatePostgreSQLInstance: (instanceId: number, data: UpdatePostgreSQLDatabaseRequest) => Promise<PostgreSQLDatabaseInstance>;
deletePostgreSQLInstance: (instanceId: number) => Promise<void>;
getPostgreSQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>;
resetPostgreSQLCredentials: (instanceId: number) => Promise<DatabaseCredentials>;
getPostgreSQLSSLCertificate: (instanceId: number) => Promise<SSLCertificate>;
patchPostgreSQLInstance: (instanceId: number) => Promise<void>;
suspendPostgreSQLInstance: (instanceId: number) => Promise<void>;
resumePostgreSQLInstance: (instanceId: number) => Promise<void>;
getPostgreSQLConnectionPools: (instanceId: number, params?: PaginationParams) => Promise<PaginatedResponse<PostgreSQLConnectionPool>>;
getPostgreSQLConnectionPool: (instanceId: number, poolName: string) => Promise<PostgreSQLConnectionPool>;
createPostgreSQLConnectionPool: (instanceId: number, data: CreatePostgreSQLConnectionPoolRequest) => Promise<PostgreSQLConnectionPool>;
updatePostgreSQLConnectionPool: (instanceId: number, poolName: string, data: UpdatePostgreSQLConnectionPoolRequest) => Promise<PostgreSQLConnectionPool>;
deletePostgreSQLConnectionPool: (instanceId: number, poolName: string) => Promise<void>;
getMySQLConfig: () => Promise<DatabaseConfig>;
getPostgreSQLConfig: () => Promise<DatabaseConfig>;
}
/**
* Creates a databases client for interfacing with the Linode Managed Databases API
*/
export declare function createDatabasesClient(axios: AxiosInstance): DatabasesClient;