Skip to content

Pulse v0.3.0

Choose a tag to compare

@Alex663028 Alex663028 released this 15 Jul 02:27

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 official mcp SDK, 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.
  • CLIpulse mcp list|add|remove|test|export for full lifecycle management (config in config.yaml, secrets stay in .env).
  • Runtime wiringchat, tui, serve, fork, team automatically 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 list now shows a live per-server health check (tool count + ok / unreachable).
  • pulse doctor probes each enabled MCP server.

🐛 Fixed

  • load_settings() now preserves the requested config_dir when reloading an existing config.yaml, so save_settings() writes to the correct location (previously reverted to ~/.pulse and 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"