dbx-mcp-server
Version:
A Model Context Protocol server for Dropbox integration with AI-powered PDF analysis, multi-directory indexing, and parallel processing
139 lines (138 loc) • 4 kB
TypeScript
export interface Document {
id: number;
dropbox_path: string;
name: string;
mime_type: string;
size: number;
created_time: string;
modified_time: string;
ai_model: string;
ai_processing_time_ms?: number;
doc_type: string;
synopsis: string;
confidence_score: number;
indexed_at: string;
updated_at: string;
}
export interface DocumentInsert {
dropbox_path: string;
name: string;
mime_type: string;
size: number;
created_time: string;
modified_time: string;
ai_model: string;
ai_processing_time_ms?: number;
doc_type: string;
synopsis: string;
confidence_score: number;
}
export interface Contract {
id: number;
document_id: number;
contract_number?: string;
contract_type?: string;
effective_date?: string;
expiration_date?: string;
auto_renewal?: boolean;
notice_period_days?: number;
total_value?: number;
currency?: string;
payment_terms?: string;
governing_law?: string;
created_at: string;
}
export interface ContractParty {
id: number;
contract_id: number;
party_name: string;
party_role: string;
created_at: string;
}
export interface Invoice {
id: number;
document_id: number;
invoice_number?: string;
invoice_date?: string;
due_date?: string;
supplier_name?: string;
supplier_address?: string;
customer_name?: string;
customer_address?: string;
subtotal?: number;
tax_amount?: number;
total_amount?: number;
currency?: string;
payment_status?: string;
payment_method?: string;
created_at: string;
}
export interface InvoiceItem {
id: number;
invoice_id: number;
description?: string;
quantity?: number;
unit_price?: number;
total_price?: number;
created_at: string;
}
export interface Proposal {
id: number;
document_id: number;
proposal_number?: string;
proposal_date?: string;
client_name?: string;
project_title?: string;
total_value?: number;
currency?: string;
validity_period?: string;
timeline?: string;
created_at: string;
}
export interface Report {
id: number;
document_id: number;
report_title?: string;
report_date?: string;
report_type?: string;
author?: string;
period_covered?: string;
created_at: string;
}
export declare class DocumentDatabase {
private db;
private dbPath;
constructor(dbPath?: string);
private initializeSchema;
private createLegacyTables;
getDocumentByDropboxPath(path: string): Promise<Document | null>;
insertDocument(doc: DocumentInsert): Promise<number>;
insertDocumentsBatch(docs: DocumentInsert[]): Promise<number[]>;
batchStoreTypeSpecificData(dataEntries: Array<{
docId: number;
analysisResult: any;
}>): Promise<void>;
private batchInsertDocumentType;
private getTableNameForType;
private batchInsertInvoices;
private batchInsertContracts;
private batchInsertProposals;
private batchInsertReports;
searchDocuments(query: string, docType?: string, limit?: number): Promise<Document[]>;
deleteDocument(id: number): Promise<void>;
insertContract(documentId: number, contract: Partial<Contract>): Promise<number>;
insertContractParties(contractId: number, parties: Array<{
party_name: string;
party_role: string;
}>): Promise<void>;
getExpiringContracts(days?: number): Promise<any[]>;
insertInvoice(documentId: number, invoice: Partial<Invoice>): Promise<number>;
insertInvoiceItems(invoiceId: number, items: Array<Partial<InvoiceItem>>): Promise<void>;
getOverdueInvoices(): Promise<any[]>;
insertProposal(documentId: number, proposal: Partial<Proposal>): Promise<number>;
insertReport(documentId: number, report: Partial<Report>): Promise<number>;
getDocumentStats(): Promise<any>;
close(): void;
}
declare let documentDb: DocumentDatabase;
export { documentDb };