Skip to content

Commit 971bb7d

Browse files
authored
feat(mcp): release 1.1.0 - dynamic mcp server & stability fixes (#4)
* fix(mcp): implement dynamic server to resolve connection closed error * chore(release): bump version to 1.1.0
1 parent d454450 commit 971bb7d

File tree

8 files changed

+259
-126
lines changed

8 files changed

+259
-126
lines changed

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.1.0] - 2026-01-25
9+
10+
### Added
11+
12+
- **Dynamic MCP Server**: Implemented a full Model Context Protocol server in `src/main.rs`.
13+
- Automatically scans `skills/*/SKILL.md` to register tools.
14+
- Handles JSON-RPC handshake (`initialize`, `notifications/initialized`).
15+
- Implemented `tools/list` and `tools/call` parsing.
16+
- **Skill Loader**: New module `src/skills.rs` to deserialize skill metadata and map them to executable scripts.
17+
- **Pollution Protection**: Enforced `Stdio::piped()` for all child process executions to prevent tool output from corrupting the JSON-RPC stream.
18+
19+
### Fixed
20+
21+
- **Gemini Connection Crash**: Resolved `MCP error -32000: Connection closed` by providing a valid server implementation that holds the connection open (Fixes Issue #3).
22+
- **Ambiguous Execution**: Updated `gemini-extension.json` to explicitly use `--bin rust-agentic-skills`, preventing `cargo run` from executing test binaries or scripts accidentally.
23+
- **Dependency Hygiene**: Synced dependencies with upstream requirements (`tokio` full features, `anyhow`) while adding `serde_yaml` for metadata parsing.
24+
25+
### Changed
26+
27+
- Refactored `src/main.rs` from a static placeholder to a dynamic host.
28+
- Updated project architecture to treat the file system (`skills/`) as the source of truth for agent capabilities.

Cargo.lock

Lines changed: 48 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
[package]
22
name = "rust-agentic-skills"
3-
version = "1.0.0"
3+
version = "1.1.0"
44
edition = "2024"
55

66
[dependencies]
77
tokio = { version = "1.0", features = ["full"] }
88
serde = { version = "1.0", features = ["derive"] }
99
serde_json = "1.0"
1010
anyhow = "1.0"
11+
serde_yaml = "0.9.34"

README.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,37 @@ This repository is a compliant Claude Plugin.
4040

4141
### 2. Gemini CLI (Extension)
4242

43-
Compatible with the Gemini CLI tool integration.
43+
Compatible with the Gemini CLI tool via the **Model Context Protocol (MCP)**. This repo provides a dynamic server that auto-discovers skills.
4444

45-
1. Register the extension using `.Gemini-extension.json`.
46-
2. **Result**: The router skill becomes the entry point for "Rust Guild" commands.
45+
1. **Link Extension**:
46+
```bash
47+
gemini extensions link .
48+
```
49+
2. **Activate**:
50+
```bash
51+
gemini context set rust-agentic-skills
52+
```
53+
3. **Result**: The `rust-agentic-skills` server starts up, reads your `skills/` directory, and dynamically routes your requests to the appropriate skill (e.g., "Lint Hunter").
4754

4855
### 3. Manual / Custom Agents
4956

57+
**Running the MCP Server Manually:**
58+
You can run the server directly to verify standard JSON-RPC communication:
59+
60+
```bash
61+
cargo run --release --bin rust-agentic-skills
62+
```
63+
64+
_(Expects JSON-RPC messages on stdin)_
65+
5066
For generic agents (ChatGPT, heavily customized setups):
5167

5268
1. **System Prompt**: Load [AGENTS.md](AGENTS.md) as your system instruction. It defines the **RPI (Research → Plan → Implement)** loop.
5369
2. **Context Loading**: When the agent enters a specific phase (e.g., "Verification"), manually load the relevant `SKILL.md` (e.g., `skills/lint-hunter/SKILL.md`).
5470

5571
---
5672

57-
## // How to Contribute 🤝
73+
## // How to Contribute 🤝
5874

5975
We welcome new skills! Follow the **Triad Pattern**:
6076

@@ -88,4 +104,5 @@ We welcome new skills! Follow the **Triad Pattern**:
88104
---
89105

90106
## 📜 License
107+
91108
MIT

gemini-extension.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
22
"name": "rust-agentic-skills",
33
"id": "rust-agentic-skills",
4-
"version": "1.0.0",
4+
"version": "1.1.0",
55
"description": "A 'Rust Guardian' agent that enforces memory safety and coding standards.",
66
"publisher": "udapy",
77
"mcpServers": {
88
"rust-guardian": {
99
"command": "cargo",
10-
"args": ["run", "--release", "--quiet"],
10+
"args": ["run", "--release", "--bin", "rust-agentic-skills", "--quiet"],
1111
"env": {
1212
"RUST_LOG": "error"
1313
},
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
# A "noisy" script to test stdout piping
3+
echo "This should NOT break the JSON-RPC stream"
4+
>&2 echo "This stderr content should also be captured safely"
5+
echo "Result: pollution check passed"

0 commit comments

Comments
 (0)