UNPKG

@zxkane/quip-mcp-server

Version:

MCP server for interacting with Quip spreadsheets

208 lines (207 loc) 4.59 kB
/** * Type definitions for the Quip MCP Server */ /** * Command line options for the server */ export interface CommandLineOptions { /** * Path to store CSV files */ storagePath?: string; /** * Whether to use file protocol for resource URIs */ fileProtocol: boolean; /** * Storage type (local or s3) */ storageType: string; /** * S3 bucket name (for S3 storage) */ s3Bucket?: string; /** * S3 region (for S3 storage) */ s3Region?: string; /** * S3 prefix (for S3 storage) */ s3Prefix?: string; /** * S3 URL expiration in seconds (for S3 storage) */ s3UrlExpiration?: number; /** * Whether to enable debug logging */ debug: boolean; /** * Whether to use mock mode (no real Quip token required) */ mock: boolean; /** * Whether to output logs as JSON */ json: boolean; /** * Path to log file (enables file logging when specified) */ logFile?: string; /** * Whether to enable authentication */ auth: boolean; /** * API key for authentication */ apiKey?: string; /** * API key header name */ apiKeyHeader?: string; /** * HTTP port to listen on */ port?: number; } /** * Options for creating a server instance */ export interface ServerOptions { /** * Storage interface instance */ storage: StorageInterface; /** * Whether to use mock mode */ mock: boolean; /** * Whether to enable authentication */ auth: boolean; /** * API key for authentication */ apiKey?: string; /** * API key header name */ apiKeyHeader?: string; /** * HTTP port to listen on */ port?: number; } /** * Interface for storage implementations */ export interface StorageInterface { /** * Save CSV content * * @param threadId - Quip document thread ID * @param sheetName - Sheet name (optional) * @param csvContent - CSV content * @returns Promise resolving to resource identifier (such as file path or object URL) */ saveCSV(threadId: string, csvContent: string, sheetName?: string): Promise<string>; /** * Get CSV content * * @param threadId - Quip document thread ID * @param sheetName - Sheet name (optional) * @returns Promise resolving to CSV content, or null if it doesn't exist */ getCSV(threadId: string, sheetName?: string): Promise<string | null>; /** * Get resource URI * * @param threadId - Quip document thread ID * @param sheetName - Sheet name (optional) * @returns Resource URI */ getResourceURI(threadId: string, sheetName?: string): string; /** * Get metadata for the stored CSV * * @param threadId - Quip document thread ID * @param sheetName - Sheet name (optional) * @returns Promise resolving to metadata including total_rows, total_size, etc. */ getMetadata(threadId: string, sheetName?: string): Promise<Record<string, any>>; } /** * Options for creating a storage instance */ export interface StorageOptions { /** * Storage path */ storagePath: string; /** * Whether to use file protocol for resource URIs */ isFileProtocol: boolean; /** * S3 bucket name (for S3 storage) */ s3Bucket?: string; /** * S3 region (for S3 storage) */ s3Region?: string; /** * S3 prefix (for S3 storage) */ s3Prefix?: string; /** * S3 URL expiration in seconds (for S3 storage) */ s3UrlExpiration?: number; } /** * Arguments for the quip_read_spreadsheet tool */ export interface QuipReadSpreadsheetArgs { /** * Quip document thread ID */ threadId: string; /** * Sheet name (optional) */ sheetName?: string; } /** * Response for the quip_read_spreadsheet tool */ export interface QuipReadSpreadsheetResponse { /** * CSV content (possibly truncated) */ csv_content: string; /** * Metadata */ metadata: { /** * Total number of rows */ total_rows: number; /** * Total size in bytes */ total_size: number; /** * Whether the content was truncated */ is_truncated: boolean; /** * Resource URI for accessing the complete content */ resource_uri: string; }; }