Pulse v0.3.0
Pulse v0.3.0
The headline feature of this release is Model Context Protocol (MCP) integration — connect any stdio MCP server and expose its tools to the orchestrator, with reliability-first engineering throughout.
✨ New: MCP integration
- Lightweight stdio client — newline-delimited JSON-RPC 2.0 over a subprocess (
initialize/tools/list/tools/call). No hard dependency on the officialmcpSDK, keeping Pulse self-hosted and dependency-light. - Tool adapter + manager — every MCP server tool becomes a first-class Pulse
Tool, prefixed{server}__{tool}to avoid name collisions; broken/disabled servers are skipped gracefully. - CLI —
pulse mcp list|add|remove|test|exportfor full lifecycle management (config inconfig.yaml, secrets stay in.env). - Runtime wiring —
chat,tui,serve,fork,teamautomatically make configured MCP tools available.
🚀 MCP reliability & UX
- Lazy, parallel discovery — servers are probed in parallel at startup to fetch their tool lists, then disconnected; each server is only (re)spawned on first actual tool use, so startup stays fast even with many servers.
- Automatic reconnection — if a server process crashes, the next tool call transparently reconnects.
- Argument validation — calls are checked against each server's
inputSchema(required fields + JSON types) before being sent, returning a clean error instead of a server-side failure. pulse mcp listnow shows a live per-server health check (tool count +ok/unreachable).pulse doctorprobes each enabled MCP server.
🐛 Fixed
load_settings()now preserves the requestedconfig_dirwhen reloading an existingconfig.yaml, sosave_settings()writes to the correct location (previously reverted to~/.pulseand silently dropped changes).
📊 Stats
- 130 tests passing on Python 3.11 + 3.12, ruff clean, ~75% coverage.
- Full details in
CHANGELOG.md.
Getting started
pip install -e .
pulse init --yes --provider ollama --model qwen2.5:7b
pulse mcp add fs "npx -y @modelcontextprotocol/server-filesystem /tmp"
pulse chat "list the files in /tmp using the fs server"