{"id":51083168,"url":"https://github.com/tonybierman/dioxus-mcp","last_synced_at":"2026-06-23T20:01:47.728Z","repository":{"id":357859458,"uuid":"1238863757","full_name":"tonybierman/dioxus-mcp","owner":"tonybierman","description":"MCP server providing Dioxus project tools (static analysis, scaffolding, docs)","archived":false,"fork":false,"pushed_at":"2026-05-27T18:01:58.000Z","size":1952,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T18:17:16.117Z","etag":null,"topics":["claude-code","dioxus","mcp","model-context-protocol","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tonybierman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-14T14:24:44.000Z","updated_at":"2026-05-27T16:23:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tonybierman/dioxus-mcp","commit_stats":null,"previous_names":["tonybierman/dioxus-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tonybierman/dioxus-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonybierman%2Fdioxus-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonybierman%2Fdioxus-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonybierman%2Fdioxus-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonybierman%2Fdioxus-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tonybierman","download_url":"https://codeload.github.com/tonybierman/dioxus-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tonybierman%2Fdioxus-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34704748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","dioxus","mcp","model-context-protocol","rust"],"created_at":"2026-06-23T20:01:44.938Z","updated_at":"2026-06-23T20:01:47.718Z","avatar_url":"https://github.com/tonybierman.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dioxus-mcp\n\n[![CI](https://github.com/tonybierman/dioxus-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/tonybierman/dioxus-mcp/actions/workflows/ci.yml)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](#license)\n\nAn MCP server that gives Claude Code (and any other MCP client) deep static\nunderstanding of a Dioxus 0.7 project: route maps, component/server-fn\nindexes, dead-code detection, prop-drilling reports, signal/props lints,\nasset audits, OpenAPI generation, and scaffolding helpers — all from the\nsource tree, with no need to spawn `dx`. Pair it with the companion\n`dioxus-mcp-probe` crate to also read runtime events (renders, signal\nwrites, server-fn timings, panics) captured while the app is running.\n\n## Tools\n\nSee [TOOLS.md](TOOLS.md) for each static tool's args, a JSON call example,\nand a natural-language prompt that Claude Code will route to it.\n\nRuntime tools (anything that reads the probe's event log) are documented\nseparately in [RUNTIME_TOOLS.md](RUNTIME_TOOLS.md).\n\n### Project introspection\n- **`project_tour`** — one-shot overview: feature audit + routes + index +\n  asset audit, plus a pre-rendered markdown summary.\n- **`route_map`** — every `#[route(...)]` in the `#[derive(Routable)]`\n  enum, with raw + nest-prefixed paths, params, and layout / nest stacks.\n- **`project_index`** — every `#[component]` and `#[server]` fn with\n  file:line, typed props/args, and `ServerFnResult\u003cT\u003e` unwrapping.\n- **`server_fn_call_graph`** — per server fn, every call site\n  (`caller_file`, `caller_line`, `enclosing_fn`, `full_path`) plus an\n  orphan list.\n- **`dead_components`** — components defined but never used in any `rsx!`\n  block. `App` + every Routable target + every layout count as roots.\n- **`asset_audit`** — files under `assets/` not referenced by any\n  `asset!()` macro, and `asset!()` paths pointing at files that don't\n  exist.\n- **`openapi_spec`** — generate an OpenAPI 3.1 document from `#[server]`\n  fns (POST endpoints) and, optionally, router routes. Schemas are\n  resolved from local `#[derive(Serialize)] / #[derive(Deserialize)]`\n  types; unknowns are reported.\n- **`lint_project`** — run every static lint (`check_rsx`,\n  `dead_components`, `prop_drill`, `signal_lint`, `props_lint`) over\n  `src/` and merge the results into a single response with a\n  pre-rendered markdown summary. Scope via `include` / `exclude`.\n\n### Lints\n- **`check_rsx`** — common `rsx!` mistakes (missing `key:` on iterators,\n  parameter-less event handlers).\n- **`signal_lint`** — `use_signal` / `use_memo` / `use_resource` /\n  `use_effect` inside a `for` / `while` / `loop` body, including loops\n  inside `rsx!` macro bodies.\n- **`props_lint`** — `#[derive(Props, ...)]` structs missing `PartialEq`.\n- **`prop_drill`** — props passed unchanged from a parent into a child;\n  each finding tagged `via` ∈ `direct | clone | into | to_owned |\n  signal_read | signal_peek | signal_cloned`.\n- **`audit_feature_flags`** — Cargo.toml platform-feature sanity\n  (conflicting render targets, fullstack mis-wiring, version mismatches).\n- **`explain_signal_graph`** — the reactive bindings inside a single\n  component: which signals each `use_memo` / `use_effect` reads.\n\n### Scaffolding\n- **`create_component`** — new `#[component]` file with optional typed\n  Props, registered in `components/mod.rs`. `template:` picks the body\n  skeleton (`empty` | `form` | `list` | `crud_table` | `resource_view`,\n  default `empty`).\n- **`create_route`** — insert a variant into the existing\n  `#[derive(Routable)]` enum.\n- **`create_server_fn`** — new `#[server]` fn under `src/server/`,\n  refuses if the project isn't fullstack-capable.\n- **`get_dsl_spec`** — return the YAML DSL vocabulary used by\n  `execute_code`. The core covers `models`, `stores`, `resources`,\n  `components`, `screens`, `server_fns`, and `modify`, plus the\n  primitives they compose on (forms, lists, tables, signals, sockets,\n  feeds). Pass `extensions: [\"crud\", \"realtime\", \"auth\"]` to include\n  extra primitive groups.\n- **`execute_code`** — materialize a whole Dioxus 0.7 file set from one\n  YAML doc: screens, components, forms, lists/tables, signals, sockets,\n  feeds, login screens, protected routes, shared models, client-side\n  stores, resource bundles (model + store + 5 server fns + list/new\n  screens), idempotent `modify:` edits, and `remove:` operations that\n  clear demo Routable variants / components from a `dx new` starter\n  before adding your own. Pre-flights name and route-path collisions\n  plus cross-references before any file is written. See\n  [TOOLS_REFERENCE.md](TOOLS_REFERENCE.md#execute_code) for the\n  data-layer-only path and the `client_crud` \"learning aid, not\n  production UI\" caveat.\n\n### Runtime\nSee [RUNTIME_TOOLS.md](RUNTIME_TOOLS.md) for the full event schema and tool docs.\n\n- **`runtime_events`** — filter the JSON-lines event log written by the\n  `dioxus-mcp-probe` crate (renders, signal writes, server-fn timings,\n  panics). Filters: `kind`, `since`, `component`, `signal`, `server_fn`,\n  `limit`.\n- **`server_fn_summary`** — derived view: per-server-fn count, ok/err,\n  and min/p50/p95/max latency over a `since` window.\n\n### Docs\n- **`search_docs`** — live-search dioxuslabs.com, scoped to the project's\n  Dioxus version, 15-min cached.\n- **`find_example`** — search the official Dioxus examples on GitHub.\n\nEvery project-aware tool accepts an optional `project_root` (absolute\npath). When omitted, the path is resolved from the server's CWD by\nwalking up for the first `Cargo.toml` with a `dioxus` dependency.\n\n## Install\n\nBuild the server binary out of the workspace:\n\n```\ncargo build --release -p dioxus-mcp\n```\n\nThe binary lands at `target/release/dioxus-mcp` (workspace target dir).\nRegister it with Claude Code:\n\n```\nclaude mcp add dioxus /absolute/path/to/dioxus-mcp/target/release/dioxus-mcp -s user\n```\n\nOr install it onto your `$PATH` so the registered path doesn't change\nacross rebuilds:\n\n```\ncargo install --path crates/dioxus-mcp\nclaude mcp add dioxus dioxus-mcp -s user\n```\n\nRestart Claude Code; `/mcp` should list `dioxus`.\n\nTo remove: `claude mcp remove dioxus -s user`.\nAfter a rebuild, restart Claude Code to pick up the new binary.\n\n## Usage notes\n\n- Launch Claude Code from the Dioxus project root (or any subdirectory).\n  Tools walk up to find the Cargo.toml; project_root only needs to be\n  passed when calling tools against a project other than the CWD.\n- All tools operate on the source AST via `syn`. They do not invoke\n  `cargo`, `dx`, or any subprocess.\n- Targets Dioxus 0.7. Older versions will run but the audit/lints\n  reflect 0.7 conventions.\n\nFor the runtime probe install, transports, configuration flags, and the\ntest suite layout, see\n[TOOLS_REFERENCE.md](TOOLS_REFERENCE.md#runtime-probe).\n\n## Contributing\n\nContributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nCopyright (c) 2026 Tony Bierman\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or\n  \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally\nsubmitted for inclusion in the work by you, as defined in the Apache-2.0\nlicense, shall be dual licensed as above, without any additional terms\nor conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonybierman%2Fdioxus-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftonybierman%2Fdioxus-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftonybierman%2Fdioxus-mcp/lists"}