@xcud/remote-commander
Version:
MCP server for remote file operations via REST API
110 lines (109 loc) • 2.62 kB
TypeScript
export interface HttpClientConfig {
serverUrl: string;
authUrl?: string;
authToken: string;
basePath: string;
username?: string;
password?: string;
}
export interface ApiResponse<T> {
success: boolean;
data?: T;
error?: string;
}
export interface FileReadRequest {
path: string;
offset?: number;
length?: number;
isUrl?: boolean;
}
export interface FileWriteRequest {
path: string;
content: string;
mode?: 'rewrite' | 'append';
}
export interface DirectoryListRequest {
path: string;
}
export interface FileSearchRequest {
path: string;
pattern: string;
timeoutMs?: number;
}
export interface CodeSearchRequest {
path: string;
pattern: string;
contextLines?: number;
filePattern?: string;
ignoreCase?: boolean;
includeHidden?: boolean;
maxResults?: number;
timeoutMs?: number;
}
export interface CreateDirectoryRequest {
path: string;
}
export interface GetFileInfoRequest {
path: string;
}
export interface EditBlockRequest {
file_path: string;
old_string: string;
new_string: string;
expected_replacements?: number;
}
/**
* HTTP client for communicating with lit-server API
*/
export declare class HttpClient {
private config;
/**
* Initialize HTTP client with configuration
*/
init(): Promise<void>;
/**
* Authenticate with Keycloak to get bearer token
*/
private authenticate;
/**
* Validate that path is within allowed basePath
*/
private validatePath;
/**
* Make HTTP request to API
*/
private makeRequest;
/**
* Read file via API
*/
readFile(request: FileReadRequest): Promise<ApiResponse<string>>;
/**
* Write file via API
*/
writeFile(request: FileWriteRequest): Promise<ApiResponse<void>>;
/**
* List directory via API
*/
listDirectory(request: DirectoryListRequest): Promise<ApiResponse<string[]>>;
/**
* Search files via API
*/
searchFiles(request: FileSearchRequest): Promise<ApiResponse<string[]>>;
/**
* Search code via API
*/
searchCode(request: CodeSearchRequest): Promise<ApiResponse<any>>;
/**
* Create directory via API
*/
createDirectory(request: CreateDirectoryRequest): Promise<ApiResponse<void>>;
/**
* Get file info via API
*/
getFileInfo(request: GetFileInfoRequest): Promise<ApiResponse<any>>;
/**
* Edit block via API
*/
editBlock(request: EditBlockRequest): Promise<ApiResponse<any>>;
}
export declare const httpClient: HttpClient;