github-mcp 0.1.2

GitHub v3 REST API MCP server, generated by mcpify.
Documentation
[package]
name = "github-mcp"
version = "0.1.2"
edition = "2024"
description = "GitHub v3 REST API MCP server, generated by mcpify."
license = "MIT"
repository = "https://github.com/guercheLE/github-mcp-rs"
readme = "README.md"
keywords = ["mcp", "github", "cli", "api"]
categories = ["command-line-utilities", "api-bindings"]
publish = true
exclude = [
    "/.github",
    "/.mcpify",
    "/docs",
    "/scripts",
    "/Dockerfile",
    "/docker-compose.yml",
    "/.env.example",
]

[lib]
name = "github_mcp"
path = "src/lib.rs"

[[bin]]
name = "github-mcp"
path = "src/main.rs"

[[bin]]
name = "github-mcp-populate-embeddings"
path = "src/bin/populate_embeddings.rs"

[[bin]]
name = "github-mcp-healthcheck"
path = "src/bin/healthcheck.rs"

[dependencies]
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
rmcp = { version = "2", features = ["server", "transport-io", "transport-streamable-http-server"] }
axum = "0.8"
# rustls-tls-native-roots (on top of rustls-tls's webpki-roots) makes
# rustls also trust certs from the OS trust store, not just Mozilla's
# bundled CA list — without it, a corporate TLS-inspecting proxy's
# injected root CA (trusted by Windows/macOS because it's typically
# installed via MDM/group policy, but invisible to rustls) makes every
# HTTPS call rustls makes fail with a handshake/certificate error, even
# though native TLS clients on the same machine work fine. Cargo unifies
# features across the whole build for a shared dependency, so this also
# covers fastembed's hf-hub-rustls-tls download client below (Cargo.lock
# only ever holds one compiled `reqwest`), without adding an openssl-sys
# build dependency the way native-tls would.
reqwest = { version = "0.12", features = ["json", "rustls-tls", "rustls-tls-native-roots"], default-features = false }
# Explicit rustls crypto provider: reqwest itself installs one lazily, but
# opentelemetry-otlp's HTTP exporter pulls in its own reqwest (via a
# different version) that doesn't, and panics at first use if nothing
# installed a process-wide default first. Installed in main() below.
rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"
clap = { version = "4", features = ["derive"] }
rusqlite = { version = "0.32", features = ["bundled", "load_extension", "backup"] }
sqlite-vec = "0.1"
zstd = "0.13"
jsonschema = "0.46"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
tracing-opentelemetry = "0.33"
opentelemetry = "0.32"
opentelemetry_sdk = "0.32"
opentelemetry-otlp = "0.32"
# default-features disabled to select rustls-tls variants instead of the
# native-tls ones (default): native-tls pulls in openssl-sys, which needs
# system OpenSSL dev headers that the Docker builder image doesn't have.
fastembed = { version = "5", default-features = false, features = ["ort-download-binaries-rustls-tls", "hf-hub-rustls-tls", "image-models"] }
keyring = "4"
# sha1 is pinned to 0.10, not 0.11 like sha2, because it's used for OAuth1
# RSA-SHA1 signing (auth/strategies/oauth1.rs) via `rsa 0.9`'s
# `Pkcs1v15Sign::new::<D>()`, which requires `D: Digest` from `digest ^0.10.5`
# — `sha1 0.11` implements the newer, incompatible `digest 0.11` traits.
rsa = "0.9"
sha1 = { version = "0.10", features = ["oid"] }
sha2 = "0.11"
aes-gcm = "0.10"
oauth2 = "5"
inquire = "0.7"
anyhow = "1"
thiserror = "2"
url = "2"
uuid = { version = "1", features = ["v4"] }
base64 = "0.22"
percent-encoding = "2"
dhat = { version = "0.3", optional = true }

[features]
# Opt-in heap profiling via dhat-rs (scripts/profile.sh) — a pure-library
# profiler with no external OS tool needed, so it works identically on
# every platform. Zero cost when the feature isn't enabled.
profiling = ["dep:dhat"]

[dev-dependencies]
tempfile = "3"
rand = "0.8"