tanuki_mcp/lib.rs
1//! GitLab MCP Server
2//!
3//! A Model Context Protocol server for GitLab with fine-grained access control.
4//!
5//! ## Features
6//!
7//! - **95 GitLab tools** covering issues, merge requests, pipelines, repositories, and more
8//! - **Hierarchical access control** with patterns at global, category, action, and project levels
9//! - **Multiple transports** - stdio for Claude Code, HTTP/SSE for web integrations
10//! - **Flexible configuration** via TOML files and environment variables
11//!
12//! ## Access Control Model
13//!
14//! ```text
15//! all (base) → categories → individual actions → project overrides
16//! ```
17//!
18//! Each level supports:
19//! - Access levels: `none`, `read`, `full`
20//! - `deny` patterns (regex) to block specific tools
21//! - `allow` patterns (regex) to permit tools (overrides deny at same level)
22//!
23//! ## Example Configuration
24//!
25//! ```toml
26//! [gitlab]
27//! url = "https://gitlab.com"
28//! # token from GITLAB_TOKEN env var
29//!
30//! [access_control]
31//! all = "read" # Base: read-only
32//! deny = ["delete_.*"] # Block all deletes
33//!
34//! [access_control.categories.issues]
35//! level = "full" # Full access to issues
36//!
37//! [access_control.projects."prod/app"]
38//! all = "read" # Production is read-only
39//! ```
40
41pub mod access_control;
42pub mod auth;
43pub mod config;
44pub mod dashboard;
45pub mod error;
46pub mod gitlab;
47pub mod server;
48pub mod tools;
49pub mod transport;
50pub mod update;
51pub mod util;
52
53// Re-export main types
54pub use config::{AppConfig, load_config};
55pub use dashboard::{DashboardConfig, DashboardMetrics};
56pub use error::{AppError, Result};
57pub use server::GitLabMcpHandler;