# MCP server


# MCP server

The second part of banish is an MCP server. Run `banish serve` and every verb in
your extensions becomes a Model Context Protocol tool, automatically.

## Start the server

```sh
banish serve
```

With the default extensions, agents get 45-plus tools out of the box, each one a
compact wrapper around a command you already run:

```text
banish_gs      git status, compact
banish_dps     docker ps, compact
banish_kpods   kubectl get pods, compact
...
```

## Verbs become tools

A verb defined in a `.bsh` file is exposed as an MCP tool with no extra work:

```bsh
!verb kpods
!args ns
!expand exec kubectl get pods -n {ns} -o wide
!help "List pods in namespace"
```

That `!help` line becomes the tool's description, and `!args` become its typed
parameters. Add a verb, restart the server, and the tool appears.

## When to use it

Use `banish init mcp` to register the server with any MCP-capable agent. The
proxy and the server share the same filters, so you get the same compact output
whether your agent shells out or calls a tool. For the why and a full setup walk
through, see [reduce MCP token usage](/docs/guides/reduce-mcp-token-usage), or the
per-agent guides for [Gemini CLI](/docs/integrations/gemini-cli),
[OpenAI Codex](/docs/integrations/codex), [Windsurf](/docs/integrations/windsurf),
[Cline](/docs/integrations/cline), and [GitHub Copilot](/docs/integrations/copilot).

> The server speaks stdio by default. No network listener is opened, so there is
> no port to secure and nothing exposed beyond the agent that launched it.
