Bowire MCP
Official# Bowire
[](https://github.com/Kuestenlogik/Bowire/actions/workflows/ci.yml)
[](https://codecov.io/gh/Kuestenlogik/Bowire)
[](https://www.nuget.org/packages/Kuestenlogik.Bowire)
[](https://github.com/Kuestenlogik/Bowire/blob/main/LICENSE)
[](https://github.com/Kuestenlogik/Bowire/stargazers)
**The API workbench that embeds in your own service.** gRPC, REST, GraphQL, JSON-RPC, SignalR, WebSocket, SSE, MQTT, Socket.IO, MCP, OData, AsyncAPI, AMQP, Kafka, Akka.NET, NATS, SOAP, Pulsar — run against any service URL with zero code changes.
[Quickstart](https://bowire.io/quickstart.html) · [Features](https://bowire.io/features.html) · [Why Bowire](https://bowire.io/why-bowire.html) · [Docs](https://bowire.io/docs/) · [Downloads](https://bowire.io/downloads.html) · [Bootcamp](https://bowire.io/bootcamp/)
[](https://bowire.io/)
## Install
```bash
# .NET tool (cross-platform, recommended)
dotnet tool install -g Kuestenlogik.Bowire.Tool
```
Windows MSIs, portable ZIPs, Docker images, `winget install Kuestenlogik.Bowire`, and `choco install bowire` — with a Homebrew tap still pending — all listed on the [Downloads page](https://bowire.io/downloads.html). It's the source of truth for what's available right now.
→ **[5-minute Quickstart](https://bowire.io/quickstart.html)** for the first call against your own service.
## Embedded mode
Mount the workbench inside an existing ASP.NET host:
```bash
dotnet add package Kuestenlogik.Bowire
```
```csharp
var app = WebApplication.Create(args);
app.MapBowire(); // workbench at /bowire
app.Run();
```
Discovery picks services off the host's `IServiceProvider` — REST routes, gRPC reflection, SignalR hubs, custom protocols. See [Setup → Embedded](https://bowire.io/docs/setup/embedded.html).
On a shared or production host, set `options.LockServerUrl = true` (standalone: `--url`) and, if needed, `options.AllowedServerUrls` (`--allowed-server-url`) and `options.AllowedAuthUrls` for identity providers (`--allowed-auth-url`). They are enforced server-side: the workbench then refuses to dial any target outside the configured set with `403`, so it can't be used as a relay into your network. See [Options → LockServerUrl](https://bowire.io/docs/embedding/options.html).
## Documentation
Everything user-facing lives at **[bowire.io](https://bowire.io)**. The most-asked entries:
- [Quickstart](https://bowire.io/quickstart.html) — zero to first call
- [Bootcamp](https://bowire.io/bootcamp/) — hands-on walkthrough, six units + capstone
- [Features](https://bowire.io/features.html) — workbench surfaces, recordings, mock, MCP
- [Protocols](https://bowire.io/docs/protocols/) — per-protocol setup and conventions
- [Architecture](https://bowire.io/docs/architecture/) — plugin model, host packages, ALC isolation
- [API reference](https://bowire.io/docs/api/) — DocFX-generated reference
## Roadmap & Community
- [ROADMAP.md](https://github.com/Kuestenlogik/Bowire/blob/main/ROADMAP.md) — what shipped, what's planned, what's deliberately out of scope
- [Community](https://bowire.io/community.html) — Discord, Discussions, Issues
- [CONTRIBUTING.md](https://github.com/Kuestenlogik/Bowire/blob/main/CONTRIBUTING.md) — plugin authoring, smoke tests, PR workflow
## License
[Apache 2.0](https://github.com/Kuestenlogik/Bowire/blob/main/LICENSE)
TDQS
Scored across 25 tools
Tools are largely organized around distinct resources (recordings, mocks, auth recordings, cookies, allowlist, env), so most boundaries are clear. There is mild overlap between bowire.record.replay and bowire.record.start (which has a replay mode), and between bowire.auth-recording.capture vs capture-flow, but descriptions disambiguate them adequately.
Names follow a predictable dotted namespace pattern (bowire.<domain>.<action>), e.g. record.start, mock.stop, cookies.clear. Minor deviations exist: several top-level actions (discover, invoke, subscribe, assert, lint) skip the domain level, and auth-recording uses a hyphen while other multi-word segments do not.
At 25 tools the set sits at the heavy edge of the acceptable range, but the domain genuinely spans discovery/invoke, recording, mocks, auth capture, cookies, allowlist, network, HAR, lint, and reporting. Each cluster is small, yet the aggregate is borderline crowded for a single server.
Coverage is broad: recordings (start/stop/replay/list/assert), mocks (start/stop/list), auth capture, cookies, allowlist, discovery, invoke, lint, and reporting are all present. Minor gaps remain—no delete/export for recordings, no allowlist revoke, no detailed mock or recording get—that agents can mostly work around.