feat: Initial release MCP Outline PostgreSQL v1.0.0

86 tools across 12 modules for direct PostgreSQL access to Outline Wiki:
- Documents (19), Collections (14), Users (9), Groups (8)
- Comments (6), Shares (5), Revisions (3), Events (3)
- Attachments (5), File Operations (4), OAuth (8), Auth (2)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-31 13:25:09 +00:00
commit b05b54033f
30 changed files with 14439 additions and 0 deletions

52
src/config/database.ts Normal file
View File

@@ -0,0 +1,52 @@
/**
* MCP Outline PostgreSQL - Database Configuration
* @author Descomplicar® | @link descomplicar.pt | @copyright 2026
*/
import * as dotenv from 'dotenv';
dotenv.config();
export interface DatabaseConfig {
host: string;
port: number;
user: string;
password: string;
database: string;
ssl?: boolean;
connectionString?: string;
max?: number; // Max pool size
idleTimeoutMillis?: number;
connectionTimeoutMillis?: number;
}
export function getDatabaseConfig(): DatabaseConfig {
// If DATABASE_URL is provided, use it
if (process.env.DATABASE_URL) {
return {
connectionString: process.env.DATABASE_URL,
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
user: process.env.DB_USER || 'outline',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'outline',
ssl: process.env.DB_SSL === 'true',
max: parseInt(process.env.DB_POOL_SIZE || '10', 10),
idleTimeoutMillis: parseInt(process.env.DB_IDLE_TIMEOUT || '30000', 10),
connectionTimeoutMillis: parseInt(process.env.DB_CONNECTION_TIMEOUT || '5000', 10)
};
}
// Otherwise, use individual environment variables
return {
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
user: process.env.DB_USER || 'outline',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'outline',
ssl: process.env.DB_SSL === 'true',
max: parseInt(process.env.DB_POOL_SIZE || '10', 10),
idleTimeoutMillis: parseInt(process.env.DB_IDLE_TIMEOUT || '30000', 10),
connectionTimeoutMillis: parseInt(process.env.DB_CONNECTION_TIMEOUT || '5000', 10)
};
}