rust-faf-mcp 0.5.0 → 0.6.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 +11 -10
- 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 AGENTS.md Edition (v0.6.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.6.0** — adds `faf_agents`, a 10th tool: generates `AGENTS.md` from `project.faf`, non-destructively (preserves any hand-written content outside the faf-managed block). Ported line-for-line from `faf-cli`'s `generateAgentsMd()` — byte-for-byte parity is deliberate, so this MCP stays backward-compatible with any `faf-cli` output as it evolves. See [CHANGELOG](./CHANGELOG.md#060---2026-08-26--the-agentsmd-edition).
|
|
12
12
|
|
|
13
13
|
**FAF defines. MD instructs. AI codes.**
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
[](https://crates.io/crates/rust-faf-mcp)
|
|
18
18
|
[](https://faf.one)
|
|
19
|
-
[](https://github.com/Wolfe-Jam/rust-faf-mcp)
|
|
20
20
|
[](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml)
|
|
21
21
|
[](LICENSE)
|
|
22
22
|
|
|
@@ -120,6 +120,7 @@ Every AI agent reads this once and knows exactly what you're building. No 20-min
|
|
|
120
120
|
|------|-------------|
|
|
121
121
|
| `faf_score` | Score AI-readiness 0-100% with field-level breakdown |
|
|
122
122
|
| `faf_sync` | Sync `project.faf` → `CLAUDE.md` (preserves existing content) |
|
|
123
|
+
| `faf_agents` | Generate `AGENTS.md` from `project.faf` (non-destructive, preserves hand-written content) |
|
|
123
124
|
|
|
124
125
|
### Optimize
|
|
125
126
|
|
|
@@ -137,22 +138,22 @@ Every AI agent reads this once and knows exactly what you're building. No 20-min
|
|
|
137
138
|
src/
|
|
138
139
|
├── main.rs # ~20 lines — tokio entry, rmcp stdio transport
|
|
139
140
|
├── server.rs # FafServer: #[tool_router], ServerHandler, resources
|
|
140
|
-
└── tools.rs # Business logic — all
|
|
141
|
+
└── tools.rs # Business logic — all 10 tools, pure functions returning Value
|
|
141
142
|
```
|
|
142
143
|
|
|
143
144
|
- **Runtime**: `tokio` single-threaded (`current_thread`)
|
|
144
145
|
- **HTTP**: `reqwest` async (only used by `faf_git` for GitHub API)
|
|
145
|
-
- **SDK**: `faf-rust-sdk` **3.
|
|
146
|
+
- **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)
|
|
146
147
|
- **Server**: **`rmcp` 3.0.1** with `#[tool_router]` / `#[tool_handler]` — JSON-RPC, schema generation, stdio transport (Tier-1 assessed SDK cut)
|
|
147
148
|
|
|
148
149
|
Tools return `serde_json::Value`. The server adapts them to `Result<String, String>` for rmcp's `IntoCallToolResult`.
|
|
149
150
|
|
|
150
151
|
## Testing
|
|
151
152
|
|
|
152
|
-
|
|
153
|
+
133 tests (117 integration + 16 unit):
|
|
153
154
|
|
|
154
155
|
```bash
|
|
155
|
-
cargo test # runs all
|
|
156
|
+
cargo test # runs all 133
|
|
156
157
|
|
|
157
158
|
# Full ship bar (same gates as GitHub CI — run before push)
|
|
158
159
|
bash scripts/ci.sh
|
|
@@ -163,12 +164,12 @@ bash scripts/install-hooks.sh
|
|
|
163
164
|
| File | Tests | Coverage |
|
|
164
165
|
|------|-------|----------|
|
|
165
166
|
| `mcp_protocol.rs` | 9 | Init handshake, tools/list, resources, schema validation, ID preservation |
|
|
166
|
-
| `tools_functional.rs` |
|
|
167
|
+
| `tools_functional.rs` | 28 | All 10 tools — happy path, error paths, language detection |
|
|
167
168
|
| `tier1_security.rs` | 12 | Path traversal, null bytes, shell injection, oversized input, malformed JSON |
|
|
168
|
-
| `tier2_engine.rs` |
|
|
169
|
+
| `tier2_engine.rs` | 36 | Corrupt YAML, sync replacement, pipelines, dual manifests, legacy filenames, direct paths |
|
|
169
170
|
| `tier3_edge_cases.rs` | 10 | Unicode, CJK, score boundaries, unknown fields, GitHub URL parsing |
|
|
170
171
|
| `tier4_aero.rs` | 22 | Manifest structure, version sync, server.json, context block, manifest-server cross-validation |
|
|
171
|
-
| `src` unit |
|
|
172
|
+
| `src` unit | 16 | Skills extension digest + scoring resource, `agents::` generator (7), `inject::` non-destructive write (5) |
|
|
172
173
|
|
|
173
174
|
Tests spawn the compiled binary as a subprocess and communicate via stdin/stdout JSON-RPC — true integration tests against the real server.
|
|
174
175
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rust-faf-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.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",
|