Merge remote-tracking branch 'origin/main' into feat/web-search-templates
# Conflicts: # completions/mcpctl.bash # completions/mcpctl.fish # src/cli/src/commands/create.ts # src/db/src/seed/index.ts
This commit is contained in:
80
README.md
80
README.md
@@ -164,12 +164,27 @@ The `/mcpctl` switcher runs with `--skip-extension --skip-marker`, so switching
|
||||
projects from inside prime-agent never re-scopes whichever repository
|
||||
prime-agent happened to be started in.
|
||||
|
||||
See [docs/prime-agent-extension.md](docs/prime-agent-extension.md) for full details.
|
||||
|
||||
Preview the change without writing anything:
|
||||
|
||||
```bash
|
||||
mcpctl config prime-agent --project monitoring --dry-run
|
||||
```
|
||||
|
||||
`config claude` registers in **user scope** by default — one `mcpctl` MCP server
|
||||
in `~/.claude.json` that applies in every directory and window, so you wire it
|
||||
once rather than per checkout. Use `--scope project` (or `-o`) for a repo that
|
||||
wants its own pinned project.
|
||||
|
||||
Inside Claude Code:
|
||||
|
||||
- `/mcpctl [project]` — switch projects, then reconnect the `mcpctl` server from
|
||||
`/mcp` (no restart)
|
||||
- the active project shows in the status line at the bottom of the screen
|
||||
|
||||
See [docs/claude-integration.md](docs/claude-integration.md) for full details.
|
||||
|
||||
### Connect pi
|
||||
|
||||
[pi](https://github.com/earendil-works/pi) does not support MCP, but it supports
|
||||
@@ -195,6 +210,69 @@ Inside pi:
|
||||
|
||||
See [docs/pi-extension.md](docs/pi-extension.md) for full details.
|
||||
|
||||
### Connect opencode
|
||||
|
||||
[opencode](https://opencode.ai) supports MCP natively *and* exposes an API for
|
||||
its own MCP registry, so mcpctl mounts the project through the running app —
|
||||
which means you can **switch projects from the TUI without restarting**.
|
||||
|
||||
```bash
|
||||
mcpctl config opencode --project monitoring
|
||||
```
|
||||
|
||||
This mints (or reuses) the project's gateway token into
|
||||
`~/.mcpctl/opencode-state.json` (0600 — the token never lands in
|
||||
`opencode.json`), installs a server plugin into
|
||||
`~/.config/opencode/plugin/mcpctl.ts` and a TUI plugin into
|
||||
`~/.config/opencode/mcpctl/`, registers the latter in
|
||||
`~/.config/opencode/tui.json`, and syncs skills into
|
||||
`~/.config/opencode/skill/`.
|
||||
|
||||
Inside opencode:
|
||||
|
||||
- `/mcpctl` (or `<leader>m`) — **switch project** from a filterable picker;
|
||||
takes effect on the next turn, no restart
|
||||
- `/mcpctl-status` — active project, mount state, gateway URL
|
||||
- `/mcpctl-skills` — re-sync this project's skills
|
||||
- the active project shows as `mcpctl:<project>` in the prompt footer, next to
|
||||
the model name
|
||||
|
||||
Skip individual steps as needed:
|
||||
|
||||
```bash
|
||||
mcpctl config opencode --project monitoring --token mcpctl_pat_xxx # provide token, don't mint
|
||||
mcpctl config opencode --project monitoring --skip-skills # don't sync skills
|
||||
mcpctl config opencode --project monitoring --skip-plugin # state only, leave plugins alone
|
||||
mcpctl config opencode --project monitoring --skip-marker # don't touch .mcpctl-project here
|
||||
mcpctl config opencode --project monitoring --dry-run # print the plan, write nothing
|
||||
```
|
||||
|
||||
Re-sync skills on their own with
|
||||
`mcpctl skills sync --agent opencode --project monitoring`.
|
||||
|
||||
See [docs/opencode-extension.md](docs/opencode-extension.md) for full details.
|
||||
|
||||
### Run Claude Code on the homelab LLM
|
||||
|
||||
The homelab gateway (LiteLLM in front of vLLM) already serves the Anthropic
|
||||
Messages API, so Claude Code can talk to it directly — no bridge:
|
||||
|
||||
```bash
|
||||
claude-vllm --init # write ~/.config/mcpctl/claude-vllm.jsonc (0600)
|
||||
claude-vllm # use it
|
||||
claude-vllm --model deepseek-v4-max
|
||||
claude-vllm --list # show what it would use
|
||||
claude-vllm -- -p "summarise this repo" # args after -- go to claude
|
||||
```
|
||||
|
||||
It reads its own config (shaped like `opencode.jsonc`, but a separate file),
|
||||
falling back to `~/.pi/agent` or `~/.prime/agent` so it works before you have
|
||||
written one. The key may be a literal in the 0600 file, `${ENV_VAR}`, or an env
|
||||
var name — it is never stored in the tool.
|
||||
|
||||
See [docs/claude-vllm.md](docs/claude-vllm.md), including why routing this
|
||||
through mcpctl would add surface without adding capability.
|
||||
|
||||
## Declarative Configuration
|
||||
|
||||
Everything can be defined in YAML and applied with `mcpctl apply`:
|
||||
@@ -319,7 +397,7 @@ name: home-automation
|
||||
proxyModel: default
|
||||
servers:
|
||||
- home-assistant
|
||||
- node-red
|
||||
- unifi-network
|
||||
```
|
||||
|
||||
Via CLI:
|
||||
|
||||
Reference in New Issue
Block a user