home/docs/agent host recipes

Agent host recipes

Sidekit is an MCP server over stdio. Every host below speaks that protocol, so the wiring is three lines of JSON in each. The parts worth writing down are the one property that keeps the config free of absolute paths, and how to get the agent to actually use the server instead of shelling out to dotnet test.

This page assumes sidekit is installed and sidekit doctor is green. If it isn't, start at Install.

Why these configs carry no absolute paths

sidekit mcp binds to its launch directory when no -w is given, and all three hosts start a stdio server with the working directory set to the project root. So none of the recipes below need an absolute path, and each can be committed to a repository that several people clone to different places.

Pass -w <path> explicitly only when the workspace is not the launch directory — a solution in a subdirectory, or one host process serving a repository it is not rooted in.

Claude Code

Project scope, committed and shared with the team — .mcp.json at the repository root:

.mcp.json
{
  "mcpServers": {
    "sidekit": {
      "command": "sidekit",
      "args": ["mcp"]
    }
  }
}

Claude Code asks each user to approve a project-scoped server the first time it sees it. The equivalent from the CLI, where -- separates Claude's own flags from the server command:

shell
claude mcp add sidekit --scope project -- sidekit mcp
claude mcp get sidekit

Use --scope user for every project on the machine, or omit --scope for just this one.

Cursor

.cursor/mcp.json in the project, or ~/.cursor/mcp.json for every project:

.cursor/mcp.json
{
  "mcpServers": {
    "sidekit": {
      "command": "sidekit",
      "args": ["mcp"]
    }
  }
}

VS Code — GitHub Copilot agent mode

The key is servers, not mcpServers — and stdio servers must declare their type. This file is not shaped like the other two.
.vscode/mcp.json
{
  "servers": {
    "sidekit": {
      "type": "stdio",
      "command": "sidekit",
      "args": ["mcp"]
    }
  }
}

Copilot only calls MCP tools in agent mode. Select Sidekit's tools from the tool picker in the Chat view.

Tell the agent when to reach for it

Wiring the server up is not enough. An agent that already knows dotnet test will keep running dotnet test — and pay thousands of tokens for a wall of build output — unless its instructions say otherwise. Put something like this in CLAUDE.md, .cursorrules, or .github/copilot-instructions.md:

CLAUDE.md
## Test intelligence

This repository runs a Sidekit MCP server. Prefer it over raw `dotnet` commands:

- **To find code**, `find_symbol` for a declaration and `find_usages` for everything
  that touches it, rather than grepping the repository.
- **Before editing**, `get_tests_for_file` or `get_blast_radius` to see what a file
  is guarded by and what it can break.
- **After editing**, `get_status` for build truth — it is warm and costs a few
  tokens, unlike a `dotnet build`.
- **To test a change**, `select_tests` for the affected projects, then `run_tests`
  on those. Do not run the whole suite by hand.
- **On failure**, `get_failures` for root-cause-clustered detail. Never re-run tests
  to see the output again.
- **If a failure looks non-deterministic**, `get_flaky_tests` before believing it.
- **If anything behaves oddly**, `doctor` — it names what is degraded and how to fix
  it, rather than leaving you to guess.

That list is the token economy the whole project exists for: get_status answers an unchanged workspace in tens of bytes, where dotnet build costs kilobytes to say the same thing. See Token economy.

Verifying the wiring

Ask the agent to run doctor through the server. A healthy report is every check Ok; anything else names the problem and the remedy. Two failures are worth knowing on sight.

sdk Fail — “No .NET SDK could be resolved”

The host launched the server with a PATH that has no dotnet. GUI-launched editors do not inherit a shell profile, so a dotnet installed by a version manager is often invisible to them.

workspace Fail — “No solution or project found”

The launch directory was not the project root. Add -w /path/to/repo to args.

If the host says the server failed to start at all, the same PATH problem is hitting the sidekit command itself. Replace "command": "sidekit" with the absolute path — ~/.dotnet/tools/sidekit, or %USERPROFILE%\.dotnet\tools\sidekit.exe on Windows. Out of band, sidekit doctor in a terminal tells you whether the problem is Sidekit or the host's environment: if it passes there and fails in the host, it is the host's PATH.

Next

With the server answering, the MCP tools reference covers what each tool takes and returns.