Skip to main content

max / makenotwork

3.3 KB · 80 lines History Blame Raw
1 [package]
2 name = "kberg"
3 version = "0.1.0"
4 edition = "2024"
5 description = "MCP bridge for connecting local LLMs to desktop apps. Provider-agnostic agent loop over a Streamable HTTP MCP server."
6 license = "MIT"
7 readme = "README.md"
8 keywords = ["mcp", "llm", "ollama", "tools", "agent"]
9 categories = ["api-bindings", "development-tools"]
10
11 [features]
12 default = ["server", "ollama"]
13 server = ["dep:axum", "dep:tokio", "dep:tokio-stream"]
14 ollama = ["dep:reqwest", "dep:rustls", "dep:tokio"]
15
16 [dependencies]
17 serde = { version = "1", features = ["derive"] }
18 serde_json = "1"
19 thiserror = "2"
20 tracing = "0.1"
21 async-trait = "0.1"
22 uuid = { version = "1", features = ["v4", "serde"] }
23
24 axum = { version = "0.8", optional = true }
25
26 # `rustls-no-provider`, not the default feature set: reqwest 0.13's
27 # `default-tls` resolves to `rustls`, which is a hard alias for
28 # `__rustls-aws-lc-rs` with no ring counterpart. Cargo unifies features
29 # across the graph, so this one line was putting a C crypto backend into
30 # every consumer of this crate — GoingsOn, Spaghetti, buckets_of_money and
31 # tm-mcp. The provider is named in `OllamaProvider::new` instead.
32 #
33 # TLS is kept rather than dropped: Ollama is loopback by default, but
34 # `with_base_url` is public and an https endpoint is a consumer's to choose.
35 reqwest = { version = "0.13", optional = true, default-features = false, features = ["json", "charset", "http2", "rustls-no-provider"] }
36 # Direct only so `OllamaProvider::new` can name a provider.
37 rustls = { version = "0.23", optional = true, default-features = false, features = ["ring"] }
38
39 tokio = { version = "1", optional = true, features = ["rt-multi-thread", "macros", "net", "sync", "time", "io-std", "io-util"] }
40 tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
41
42 [dev-dependencies]
43 tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "time"] }
44 tracing-subscriber = { version = "0.3", features = ["env-filter"] }
45 reqwest = { version = "0.13", default-features = false, features = ["json", "charset", "http2", "rustls-no-provider"] }
46 # The test helper names a provider, same as `OllamaProvider::new` does.
47 rustls = { version = "0.23", default-features = false, features = ["ring"] }
48
49 [lints.rust]
50 unused = "warn"
51 unreachable_pub = "warn"
52
53 [lints.clippy]
54 pedantic = { level = "warn", priority = -1 }
55 # Allow-list tuned from a measured breakdown across server/multithreaded/pter
56 # (2026-07-22). These are the high-churn / low-signal pedantic lints; everything
57 # else in `pedantic` stays a warning. Keep this block identical across repos.
58 module_name_repetitions = "allow"
59 # Doc lints. No docs-completeness push is underway.
60 missing_errors_doc = "allow"
61 missing_panics_doc = "allow"
62 doc_markdown = "allow"
63 # Numeric casts. Endemic and mostly intentional in size and byte math.
64 cast_possible_truncation = "allow"
65 cast_sign_loss = "allow"
66 cast_precision_loss = "allow"
67 cast_possible_wrap = "allow"
68 cast_lossless = "allow"
69 # Subjective structure and style nags. High churn, low signal.
70 must_use_candidate = "allow"
71 too_many_lines = "allow"
72 struct_excessive_bools = "allow"
73 similar_names = "allow"
74 items_after_statements = "allow"
75 single_match_else = "allow"
76 # Frequent false-positives in TUI and router-heavy code.
77 match_same_arms = "allow"
78 unnecessary_wraps = "allow"
79 type_complexity = "allow"
80