- Hot-reload skills without restart
- MCP (Model Context Protocol) server support
- Dynamic tool registration at runtime
- Agent can add/configure MCP servers itself
- Skills: Loaded from
~/.claude/skills/and./.claude/skills/at startup - Tools: Hardcoded in
Registry::new() - No MCP support
Changes to src/skill.rs:
- Add
reload(&mut self)method toSkillRegistry - Skills can be reloaded without restarting
New tool reload_skills:
- Agent can trigger
reload_skillsto pick up new skills
Changes to src/tool/mod.rs:
impl Registry {
/// Register a new tool at runtime
pub async fn register(&self, tool: Arc<dyn Tool>);
/// Unregister a tool by name
pub async fn unregister(&self, name: &str);
/// List all registered tools
pub async fn list(&self) -> Vec<String>;
}New module src/mcp/mod.rs:
- MCP protocol types (JSON-RPC 2.0)
- MCP client for stdio-based servers
- MCP tool wrapper (converts MCP tools to our Tool trait)
Config file ~/.claude/mcp.json:
{
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-filesystem", "/path"],
"env": {}
},
"github": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-github"],
"env": {"GITHUB_TOKEN": "..."}
}
}
}MCP Manager:
- Load config on startup
- Connect to configured servers
- Convert MCP tools to jcode Tool trait
- Handle server lifecycle (start, stop, restart)
New tools:
mcp_list- List connected MCP serversmcp_connect- Start a new MCP servermcp_disconnect- Stop an MCP servermcp_reload- Reload all MCP servers
Flow:
- Agent calls
mcp_connect {"name": "playwright", "command": "npx", "args": ["-y", "@anthropic/mcp-server-playwright"]} - jcode spawns the process, does MCP handshake
- Tools from server are added to registry
- Agent can immediately use the new tools
MCP uses JSON-RPC 2.0 over stdio:
Initialize:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"jcode","version":"0.1.0"}}}List tools:
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}Call tool:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"read_file","arguments":{"path":"/tmp/test.txt"}}}src/mcp/mod.rs- MCP modulesrc/mcp/protocol.rs- JSON-RPC typessrc/mcp/client.rs- MCP clientsrc/mcp/manager.rs- Multi-server managersrc/mcp/tool.rs- MCP tool wrappersrc/tool/mod.rs- Add dynamic registrationsrc/tool/mcp_tools.rs- mcp_connect, mcp_list, etc.src/skill.rs- Add reload()src/tool/reload_skills.rs- reload_skills tool
- Dynamic tool registry (prerequisite)
- Skill hot-reload (quick win)
- MCP protocol types
- MCP client (single server)
- MCP manager (multi-server)
- MCP tools for agent self-config