rust-faf-mcp 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
**Persistent Project Context for Rust MCP clients. Native. Fast. cargo install**
|
|
8
8
|
|
|
9
|
-
**The
|
|
9
|
+
**The Lineage Edition (v0.8.0)** — `one.faf/rust-faf-mcp` · **rmcp 3.0.1** (MCP Tier 1 foundation) · **faf-rust-sdk 3.1** (the same always-33 kernel `faf-wasm-sdk` uses) · solid cargo-native Rust MCP for Rust devs
|
|
10
10
|
|
|
11
|
-
**v0.
|
|
11
|
+
**v0.8.0** — `.faf-dna` lineage, the same file as faf-cli and fafb: `faf_init` births it, `faf_auto` grows it, `faf_dna` shows the journey. fafb scores all 33 slots for monorepos and teams. See [CHANGELOG](./CHANGELOG.md#080---2026-09-13--the-lineage-edition).
|
|
12
12
|
|
|
13
13
|
**FAF defines. MD instructs. AI codes.**
|
|
14
14
|
|
|
@@ -25,19 +25,18 @@ Rust-native [MCP](https://modelcontextprotocol.io) (Model Context Protocol) serv
|
|
|
25
25
|
## Quickstart
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
# Rust toolchain:
|
|
29
|
-
cargo install rust-faf-mcp
|
|
28
|
+
# Rust toolchain (install):
|
|
29
|
+
cargo install rust-faf-mcp --version 0.8.0
|
|
30
30
|
|
|
31
|
-
# No Rust (downloads GH Release binary for darwin/linux
|
|
32
|
-
npx rust-faf-mcp
|
|
31
|
+
# No Rust (try — downloads GH Release binary for darwin/linux):
|
|
32
|
+
npx --yes rust-faf-mcp@0.8.0
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
Then point any MCP client at it:
|
|
35
|
+
Point an MCP client at the **pin**. A bare `rust-faf-mcp` on PATH may be an old Homebrew binary.
|
|
37
36
|
|
|
38
37
|
```bash
|
|
39
38
|
# Claude Code
|
|
40
|
-
claude mcp add faf rust-faf-mcp
|
|
39
|
+
claude mcp add faf -- npx --yes rust-faf-mcp@0.8.0
|
|
41
40
|
```
|
|
42
41
|
|
|
43
42
|
```jsonc
|
|
@@ -45,18 +44,24 @@ claude mcp add faf rust-faf-mcp
|
|
|
45
44
|
{
|
|
46
45
|
"mcpServers": {
|
|
47
46
|
"faf": {
|
|
48
|
-
"command": "
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["--yes", "rust-faf-mcp@0.8.0"]
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
After `cargo install rust-faf-mcp --version 0.8.0`, `"command": "rust-faf-mcp"` is the install. Until you have proven that binary, use the npx pin.
|
|
55
|
+
|
|
54
56
|
No flags, no config files, no network listener. Pure stdio JSON-RPC.
|
|
55
57
|
|
|
56
|
-
Or via Homebrew (macOS, pre-built)
|
|
58
|
+
Or via Homebrew (macOS, pre-built). If you already have it, upgrade — an old keg can sit on PATH as `rust-faf-mcp`:
|
|
57
59
|
|
|
58
60
|
```bash
|
|
61
|
+
brew update
|
|
59
62
|
brew install Wolfe-Jam/faf/rust-faf-mcp
|
|
63
|
+
# already installed:
|
|
64
|
+
brew upgrade Wolfe-Jam/faf/rust-faf-mcp
|
|
60
65
|
```
|
|
61
66
|
|
|
62
67
|
## One command, done forever
|
|
@@ -103,7 +108,7 @@ instant_context:
|
|
|
103
108
|
test: cargo test
|
|
104
109
|
stack:
|
|
105
110
|
backend: Rust
|
|
106
|
-
|
|
111
|
+
build: cargo
|
|
107
112
|
```
|
|
108
113
|
|
|
109
114
|
Every AI agent reads this once and knows exactly what you're building. No 20-minute onboarding. No wrong assumptions.
|
|
@@ -117,7 +122,7 @@ Every AI agent reads this once and knows exactly what you're building. No 20-min
|
|
|
117
122
|
| `faf_auto` | Setup if missing, sync `CLAUDE.md`, score — Confirm setup (sweeps); does not invent 6Ws |
|
|
118
123
|
| `faf_init` | Setup: first write from the tree. Refuses if the file exists. Confirm setup (sweeps). 6Ws stay empty |
|
|
119
124
|
| `faf_go` | Table-of-8 + Confirm setup (sweeps). 6Ws score after ☑. Below 100: add Human Context. After 100: courtesy check every 30 days (90 max) |
|
|
120
|
-
| `faf_git` |
|
|
125
|
+
| `faf_git` | Author `project.faf` from any GitHub repo URL — no clone needed |
|
|
121
126
|
| `faf_discover` | Walk up the directory tree to find the nearest `project.faf` |
|
|
122
127
|
|
|
123
128
|
### Score & Validate
|
|
@@ -126,7 +131,7 @@ Every AI agent reads this once and knows exactly what you're building. No 20-min
|
|
|
126
131
|
|------|-------------|
|
|
127
132
|
| `faf_score` | Score AI-readiness 0-100% with field-level breakdown |
|
|
128
133
|
| `faf_sync` | Sync `project.faf` → `CLAUDE.md` (preserves existing content) |
|
|
129
|
-
| `faf_agents` |
|
|
134
|
+
| `faf_agents` | Author `AGENTS.md` from `project.faf` (non-destructive, preserves hand-written content) |
|
|
130
135
|
|
|
131
136
|
### Optimize
|
|
132
137
|
|
|
@@ -136,6 +141,12 @@ Every AI agent reads this once and knows exactly what you're building. No 20-min
|
|
|
136
141
|
| `faf_compress` | Compress `.faf` for token-limited contexts (`minimal` / `standard` / `full`) |
|
|
137
142
|
| `faf_tokens` | Estimate token count at each compression level |
|
|
138
143
|
|
|
144
|
+
### Lineage
|
|
145
|
+
|
|
146
|
+
| Tool | What it does |
|
|
147
|
+
|------|-------------|
|
|
148
|
+
| `faf_dna` | Your FAF DNA journey from `.faf-dna`: Birth DNA to now, with history. `faf_init` births it, `faf_auto` records growth — the same file as faf-cli |
|
|
149
|
+
|
|
139
150
|
`faf_init` will not overwrite an existing file. Setup occupies mechanical facts; Confirm setup (sweeps) is the walk. Empty human slots stay empty until `faf_go`.
|
|
140
151
|
|
|
141
152
|
## Architecture
|
|
@@ -150,16 +161,16 @@ src/
|
|
|
150
161
|
- **Runtime**: `tokio` single-threaded (`current_thread`)
|
|
151
162
|
- **HTTP**: `reqwest` async (only used by `faf_git` for GitHub API)
|
|
152
163
|
- **SDK**: `faf-rust-sdk` **3.1** (Cargo pin — the facade over `faf-kernel`/`faf-fafb` in [faf-rust](https://github.com/Wolfe-Jam/faf-rust); `score()` for the real Mk4 number, `validate()` for structural checks only)
|
|
153
|
-
- **Server**: **`rmcp` 3.0.1** with `#[tool_router]` / `#[tool_handler]` — JSON-RPC,
|
|
164
|
+
- **Server**: **`rmcp` 3.0.1** with `#[tool_router]` / `#[tool_handler]` — JSON-RPC, JSON Schema from the param types, stdio transport (Tier-1 assessed SDK cut)
|
|
154
165
|
|
|
155
166
|
Tools return `serde_json::Value`. The server adapts them to `Result<String, String>` for rmcp's `IntoCallToolResult`.
|
|
156
167
|
|
|
157
168
|
## Testing
|
|
158
169
|
|
|
159
|
-
|
|
170
|
+
190 tests (143 integration + 47 unit):
|
|
160
171
|
|
|
161
172
|
```bash
|
|
162
|
-
cargo test # runs all
|
|
173
|
+
cargo test # runs all 190
|
|
163
174
|
|
|
164
175
|
# Full ship bar (same gates as GitHub CI — run before push)
|
|
165
176
|
bash scripts/ci.sh
|
|
@@ -176,7 +187,8 @@ bash scripts/install-hooks.sh
|
|
|
176
187
|
| `tier3_edge_cases.rs` | 10 | Unicode, CJK, score boundaries, unknown fields, GitHub URL parsing |
|
|
177
188
|
| `tier4_aero.rs` | 22 | Manifest structure, version sync, server.json, context block, manifest-server cross-validation |
|
|
178
189
|
| `wjttc_setup.rs` | 16 | Setup / Confirm setup (sweeps) — BRAKE · ENGINE · AERO · TYRE · PIT |
|
|
179
|
-
| `
|
|
190
|
+
| `wjttc_faf_dna.rs` | 7 | `.faf-dna` lineage — `faf_init` birth, `faf_auto` growth, `faf_dna`, faf-cli's lines |
|
|
191
|
+
| `src` unit | 47 | setup sweep, skills digest, `agents::`, `inject::`, intent, app-type, `dna::` lineage + faf-cli fixtures |
|
|
180
192
|
|
|
181
193
|
Tests spawn the compiled binary as a subprocess and communicate via stdin/stdout JSON-RPC — true integration tests against the real server.
|
|
182
194
|
|
|
@@ -208,7 +220,8 @@ If `rust-faf-mcp` has been useful, consider starring the repo — it helps other
|
|
|
208
220
|
## Links
|
|
209
221
|
|
|
210
222
|
- [crates.io/crates/rust-faf-mcp](https://crates.io/crates/rust-faf-mcp)
|
|
211
|
-
- [npmjs.com/package/rust-faf-mcp](https://www.npmjs.com/package/rust-faf-mcp) — `npx rust-faf-mcp` (no Rust toolchain; downloads GH Release binary)
|
|
223
|
+
- [npmjs.com/package/rust-faf-mcp](https://www.npmjs.com/package/rust-faf-mcp) — `npx --yes rust-faf-mcp@0.8.0` (no Rust toolchain; downloads GH Release binary)
|
|
224
|
+
|
|
212
225
|
- [Dual-package publish guide](https://github.com/Wolfe-Jam/mcp-better/blob/main/docs/DUAL-PACKAGE-RUST-MCP.md) — cargo + npm (this server is the product example)
|
|
213
226
|
- [docs/DUAL-PACKAGE.md](./docs/DUAL-PACKAGE.md) — pointer + OIDC docs for this repo
|
|
214
227
|
- [docs/SKILLS-OVER-MCP.md](./docs/SKILLS-OVER-MCP.md) — J1 Agent Skill `faf-context` (skills/list · digests)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rust-faf-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"mcpName": "one.faf/rust-faf-mcp",
|
|
5
5
|
"description": "Persistent project context — Rust-native MCP server. IANA-registered .faf format. npm shim downloads the native binary from GitHub Releases.",
|
|
6
6
|
"license": "MIT",
|