fabro/docs/public
Fabian Kukuck 990324710c
Add legacy SSE MCP transport support (#386)
## Summary

Adds support for MCP servers that use the SSE-based HTTP transport,
including Playwright MCP.

Fabro already supports stdio and Streamable HTTP MCP servers. Some MCP
servers still expose the SSE transport shape where the client opens an
SSE stream, receives an `endpoint` event, and sends JSON-RPC requests
back to that endpoint. This PR adds an explicit `protocol = "sse"`
option while keeping Streamable HTTP as the default.

## What Changed

- Added `McpHttpProtocol` with `streamable_http` as the default and
`sse` as an opt-in protocol.
- Added an SSE MCP client transport implementation.
- Wired HTTP MCP setup to choose Streamable HTTP or SSE based on config.
- Added `protocol = "sse"` support for both `http` and `sandbox` MCP
entries.
- Updated sandbox MCP resolution so SSE sandbox servers connect through
the preview `/sse` path.
- Documented `protocol = "sse"` for Playwright MCP.
- Added an integration test covering SSE initialize, tool listing, and
tool calls.

## Example

```toml
[run.agent.mcps.playwright]
type = "sandbox"
protocol = "sse"
command = ["npx", "@playwright/mcp@latest", "--port", "3100", "--headless", "--browser", "chromium"]
port = 3100
startup_timeout = "60s"
tool_timeout = "2m"
```

## Compatibility

Existing MCP configs are unchanged because `protocol` defaults to
`streamable_http`.

## Validation

- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo nextest run -p fabro-mcp`
- `cargo check -p fabro-agent -p fabro-workflow -p fabro-config`

---------

Co-authored-by: Bryan Helmkamp <bryan@brynary.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:29:01 -04:00
..
administration Add Slack run lifecycle notifications via [run.notifications] (#365) 2026-05-23 13:07:42 -04:00
agents Add legacy SSE MCP transport support (#386) 2026-05-24 15:29:01 -04:00
api-reference Link unconfigured providers to prefilled secret form 2026-05-24 09:34:24 -04:00
changelog docs(changelog): refresh recent product changes 2026-05-24 11:54:26 -04:00
core-concepts docs: sync agent tools and model reference 2026-05-24 12:00:48 -04:00
examples Remove retired OpenAI catalog models 2026-05-24 11:40:35 -04:00
execution docs: sync agent tools and model reference 2026-05-24 12:00:48 -04:00
getting-started refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
human-tools Replace run-scoped sandbox config with named environments (#360) 2026-05-23 13:03:21 -04:00
images Add system resources settings page (#328) 2026-05-20 17:22:53 -04:00
integrations Add small_default model role and async generated run titles (#368) 2026-05-23 13:48:39 -04:00
languages refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
logo refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
reference Remove retired OpenAI catalog models 2026-05-24 11:40:35 -04:00
tutorials refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
workflows docs: sync public docs to recent changes 2026-05-18 14:42:54 -04:00
.mintignore refactor(docs): move .mintignore into docs/public and update skill paths 2026-04-27 07:29:59 -07:00
docs.json docs(changelog): refresh recent product changes 2026-05-24 11:54:26 -04:00
dot-highlight.js refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
favicon.svg refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00