Gunnar

nordisk/gunnar-ui

crates/gunnar-mcp/Cargo.toml

[package]
name = "gunnar-mcp"
description = "Gunnar's MCP connector: a remote MCP server (streamable HTTP) at /mcp that bridges a fixed allowlist of read tools to the control plane, with its own OAuth 2.1 authorization server (dynamic client registration, PKCE, passkey login). Built only when gunnar-ui-server's `mcp` feature is on."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true
authors.workspace = true
publish.workspace = true

# **TASKS-13 (owner 2026-10-25), the same SLIM RULE as the public site.** The
# connector is its OWN crate, and nothing links it but gunnar-ui-server under its
# `mcp` feature, which is off in the default build. This crate knows no gunnar
# crate and no protocol of gunnar's: every tool call is handed to the `Backend`
# trait as ONE typed `Call`, and the console answers it with ONE control-plane
# call it already knows how to make, signed with a key gunnar enrolled on the
# person at their passkey touch. No AI runs here, nothing here dials anything.
#
# Every dependency below is already in this workspace's lock, at these majors.
[dependencies]
axum = { version = "0.8", default-features = false, features = ["tokio", "json", "query", "form"] }
http = "1"
tokio = { version = "1", features = ["rt", "time", "sync"] }
serde = { workspace = true }
serde_json = { workspace = true }
sha2 = "0.11"
base64 = "0.23"
getrandom = "0.4"

[dev-dependencies]
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time", "sync"] }
tower = { version = "0.5", features = ["util"] }