pocketbase-mcp-server
declare module 'pocketbase' {
export interface CollectionModel {
id: string;
name: string;
schema: SchemaField[];
indexes?: CollectionIndex[];
[key: string]: any;
}
export interface SchemaField {
name: string;
type: string;
required: boolean;
options?: Record<string, any>;
}
export interface CollectionIndex {
name: string;
fields: string[];
unique?: boolean;
}
export interface CollectionResponse<T = Record<string, any>> {
page: number;
perPage: number;
totalItems: number;
totalPages: number;
items: T[];
[Symbol.iterator](): Iterator<T>;
}
export default class PocketBase {
constructor(url: string);
collections: {
create(data: { name: string; schema: SchemaField[] }): Promise<CollectionModel>;
getOne(idOrName: string): Promise<CollectionModel>;
getList(page?: number, perPage?: number, options?: any): Promise<CollectionResponse>;
update(id: string, data: Partial<CollectionModel>): Promise<CollectionModel>;
delete(id: string): Promise<boolean>;
};
collection(name: string): {
create(data: Record<string, any>): Promise<Record<string, any>>;
getList(page?: number, perPage?: number, options?: any): Promise<CollectionResponse>;
getFullList(batch?: number, options?: any): Promise<Record<string, any>[]>;
update(id: string, data: Record<string, any>): Promise<Record<string, any>>;
delete(id: string): Promise<boolean>;
// Auth methods
listAuthMethods(): Promise<{
usernamePassword: boolean;
emailPassword: boolean;
authProviders: Array<{
name: string;
state: string;
codeVerifier: string;
codeChallenge: string;
codeChallengeMethod: string;
authUrl: string;
}>;
}>;
authWithPassword(email: string, password: string): Promise<{
token: string;
user: Record<string, any>;
}>;
authWithOAuth2(
provider: string,
code: string,
codeVerifier: string,
redirectUrl: string
): Promise<{
token: string;
user: Record<string, any>;
meta?: {
[key: string]: any;
};
}>;
authWithOAuth2Code(
provider: string,
code: string,
codeVerifier: string,
redirectUrl: string
): Promise<{
token: string;
user: Record<string, any>;
meta?: {
[key: string]: any;
};
}>;
authWithOtp(email: string): Promise<boolean>;
authRefresh(): Promise<{
token: string;
user: Record<string, any>;
}>;
requestVerification(email: string): Promise<boolean>;
confirmVerification(token: string): Promise<boolean>;
requestPasswordReset(email: string): Promise<boolean>;
confirmPasswordReset(
token: string,
password: string,
passwordConfirm: string
): Promise<boolean>;
requestEmailChange(newEmail: string): Promise<boolean>;
confirmEmailChange(
token: string,
password: string
): Promise<{
token: string;
user: Record<string, any>;
}>;
impersonate(userId: string): Promise<{
token: string;
user: Record<string, any>;
}>;
};
}
}