github_mcp/core/
config_schema.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8pub enum AuthMethod {
9 #[serde(rename = "pat")]
10 Pat,
11 #[serde(rename = "apiKey")]
12 ApiKey,
13 #[serde(rename = "basic")]
14 Basic,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "lowercase")]
19pub enum Transport {
20 Stdio,
21 Http,
22}
23
24fn default_log_level() -> String {
25 "info".to_string()
26}
27fn default_rate_limit() -> u32 {
28 100
29}
30fn default_timeout_ms() -> u64 {
31 30_000
32}
33fn default_cache_size() -> u32 {
34 500
35}
36fn default_retry_attempts() -> u32 {
37 3
38}
39fn default_transport() -> Transport {
40 Transport::Stdio
41}
42fn default_host() -> String {
43 "127.0.0.1".to_string()
44}
45fn default_port() -> u16 {
46 3000
47}
48
49fn default_api_version() -> String {
51 "gh-2026-03-10".to_string()
52}
53#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Config {
57 pub url: String,
58 pub auth_method: AuthMethod,
59 #[serde(default = "default_api_version")]
65 pub api_version: String,
66 #[serde(default = "default_log_level")]
67 pub log_level: String,
68 #[serde(default = "default_rate_limit")]
69 pub rate_limit: u32,
70 #[serde(default = "default_timeout_ms")]
71 pub timeout_ms: u64,
72 #[serde(default = "default_cache_size")]
73 pub cache_size: u32,
74 #[serde(default = "default_retry_attempts")]
75 pub retry_attempts: u32,
76 #[serde(default = "default_transport")]
77 pub transport: Transport,
78 #[serde(default = "default_host")]
79 pub host: String,
80 #[serde(default = "default_port")]
81 pub port: u16,
82 #[serde(default)]
83 pub cors_allow: Option<String>,
84}