Skip to main content

github_mcp/core/
config_schema.rs

1// GitHub v3 REST API MCP server — generated by mcpify. Do not hand-edit.
2
3use serde::{Deserialize, Serialize};
4
5/// One variant per auth scheme mcpify discovered in the OpenAPI spec's
6/// `components.securitySchemes` (or the interactive fallback) — REQ-1.2.1-3.
7#[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
49// mcpify:versions:begin
50fn default_api_version() -> String {
51    "gh-2026-03-10".to_string()
52}
53// mcpify:versions:end
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Config {
57    pub url: String,
58    pub auth_method: AuthMethod,
59    /// v8 multi-version support: an opaque label (not a compile-time enum
60    /// like `AuthMethod` — version labels are arbitrary operator-supplied
61    /// strings such as `"10.2.14"`, which can't cleanly become Rust
62    /// identifiers), validated at runtime against the known version list
63    /// in `data::store::resolve_store_path`/`validation::validator`.
64    #[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}