Skip to main content

mcp_postgres/
lib.rs

1pub mod config;
2pub mod server;
3pub mod pool;
4pub mod protocol;
5pub mod actions;
6pub mod errors;
7pub mod metrics;
8pub mod buffers;
9
10use clap::Parser;
11
12#[derive(Parser, Debug)]
13#[command(name = "MCP PostgreSQL Server")]
14#[command(about = "High-performance Model Context Protocol server for PostgreSQL", long_about = None)]
15pub struct Args {
16    /// PostgreSQL connection string
17    #[arg(short, long)]
18    pub database_url: Option<String>,
19
20    /// Server host
21    #[arg(short = 'H', long, default_value = "127.0.0.1")]
22    pub host: String,
23
24    /// Server port
25    #[arg(short = 'p', long, default_value = "3000")]
26    pub port: u16,
27
28    /// Minimum pool connections (default: 1)
29    #[arg(long)]
30    pub min_connections: Option<u32>,
31
32    /// Maximum pool connections (default: 8 * num_cpus)
33    #[arg(long)]
34    pub max_connections: Option<u32>,
35
36    /// Log level
37    #[arg(short, long, default_value = "info")]
38    pub log_level: String,
39
40    /// Enable metrics endpoint
41    #[arg(long)]
42    pub enable_metrics: bool,
43
44    /// Metrics port
45    #[arg(long, default_value = "9090")]
46    pub metrics_port: u16,
47
48    /// Run in stdio mode for MCP compatibility (Claude Desktop)
49    #[arg(long)]
50    pub stdio: bool,
51
52    /// Access mode: unrestricted (full read/write) or restricted (read-only)
53    #[arg(long, default_value = "unrestricted")]
54    pub access_mode: config::AccessMode,
55}