[workspace] members = [ "crates/adequate-rust-mcp", "crates/ra-mcp-domain", "crates/ra-mcp-engine", ] resolver = "3" [workspace.package] categories = ["development-tools", "command-line-utilities"] description = "Crash-resilient rust-analyzer MCP with a durable host, disposable worker, and porcelain-first analysis tools." edition = "2024" keywords = ["mcp", "rust-analyzer", "lsp", "ai", "tooling"] license = "Apache-2.0" readme = "README.md" repository = "https://git.swarm.moe/adequate-rust-mcp.git" rust-version = "1.94" version = "1.0.0" [workspace.dependencies] assert_matches = "1.5.0" bytes = "1.10.1" futures = "0.3.31" libmcp = { git = "https://git.swarm.moe/libmcp.git", rev = "478b0bc47fade5864f4f397de7ea519beddab749" } lsp-types = "0.97.0" notify = "8.2.0" rmcp = { version = "0.16.0", features = ["server", "macros", "transport-io"] } schemars = "1.0.4" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.143" serial_test = "3.2.0" tempfile = "3.22.0" thiserror = "2.0.16" tokio = { version = "1.47.1", features = ["full"] } tokio-util = { version = "0.7.16", features = ["codec"] } tracing = "0.1.41" tracing-subscriber = { version = "0.3.20", features = ["env-filter"] } toml = "0.8.23" url = "2.5.7" uuid = { version = "1.18.1", features = ["v4", "serde"] } [workspace.lints.rust] elided_lifetimes_in_paths = "deny" missing_docs = "deny" unsafe_code = "deny" unused_crate_dependencies = "warn" unused_lifetimes = "deny" unused_qualifications = "deny" unused_results = "deny" [workspace.lints.clippy] # Strict baseline. all = { level = "deny", priority = -2 } pedantic = { level = "deny", priority = -1 } cargo = { level = "warn", priority = -3 } # Hard bans. dbg_macro = "deny" panic = "deny" todo = "deny" unimplemented = "deny" unwrap_used = "deny" # Carve-out: test fixtures rely on concise expect messages. expect_used = "allow" # Carve-out: dependency graph churn is external to this repository. multiple_crate_versions = "allow" # Carve-out: rustdoc policy is intentionally lightweight here. missing_errors_doc = "allow" missing_panics_doc = "allow" # Carve-out: threshold/style lints that create churn without correctness wins. items_after_statements = "allow" many_single_char_names = "allow" module_name_repetitions = "allow" similar_names = "allow" struct_field_names = "allow" too_many_arguments = "allow" too_many_lines = "allow" unnested_or_patterns = "allow" match_same_arms = "allow" # Carve-out: API-shape micro-optimizations are not worth readability cost. needless_pass_by_value = "allow" ref_option = "allow" trivially_copy_pass_by_ref = "allow" unused_async = "allow" # Carve-out: numeric ergonomics and formatting are intentionally pragmatic. cast_lossless = "allow" cast_possible_truncation = "allow" cast_possible_wrap = "allow" cast_precision_loss = "allow" cast_sign_loss = "allow" float_cmp = "allow" implicit_hasher = "allow" manual_let_else = "allow" map_unwrap_or = "allow" uninlined_format_args = "allow" # Carve-out: local scaffolding patterns preferred in this codebase. ignored_unit_patterns = "allow" must_use_candidate = "allow" no_effect_underscore_binding = "allow" redundant_closure_for_method_calls = "allow" return_self_not_must_use = "allow" used_underscore_binding = "allow" [workspace.metadata.adequate-rust-mcp] format_command = ["cargo", "fmt", "--all"] clippy_command = [ "cargo", "clippy", "--workspace", "--all-targets", "--all-features", "--message-format=json", ] fix_command = [ "cargo", "clippy", "--fix", "--workspace", "--all-targets", "--all-features", "--allow-dirty", "--allow-staged", ]