[package]
name = "koan-server"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "GraphQL, Subsonic REST, and MCP server for koan music player."
keywords = ["audio", "music", "graphql", "subsonic"]
categories = ["multimedia::audio"]
[dependencies]
async-graphql = "7"
async-graphql-axum = "7"
async-stream = "0.3"
axum = { version = "0.8", features = ["ws"] }
base64 = "0.22.1"
crossbeam-channel = "0.5"
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp"] }
koan-core = { path = "../koan-core", version = "0.23.2" }
log = "0.4"
nucleo = "0.5"
md5 = "0.8"
reqwest = { version = "0.13.2", features = ["stream"] }
rmcp = { version = "1.2.0", features = ["server", "macros", "transport-async-rw", "transport-io"] }
rusqlite = { workspace = true }
subtle = "2"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
tokio = { version = "1.50.0", features = ["rt-multi-thread", "net", "macros", "signal"] }
tokio-stream = "0.1"
tokio-util = { version = "0.7", features = ["io"] }
tower = { version = "0.5", features = ["util", "limit", "load-shed"] }
tower-http = { version = "0.6", features = ["cors"] }
uuid = { version = "1.22.0", features = ["v7"] }
walkdir = { workspace = true }
[dev-dependencies]
tempfile = "3"