kitsune-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_TOKEN | No | GitHub token for using the GitHub server. | |
| BRAVE_API_KEY | No | Brave Search API key for using the Brave Search server. | |
| KITSUNE_TOOLS | No | Comma-separated list of tools to enable in the lean profile (e.g., 'shapeshift,shiftback,key'). | |
| SMITHERY_API_KEY | No | Free API key for Smithery to extend discovery with its hosted server catalog (HTTP servers, no local install required). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | Discover MCP servers across registries — the entry point to mounting. Returns a ranked list of server_ids with name, description, source, and credential-readiness status. Records discovered servers in session so status() can summarize them. Reports per-registry failures inline rather than failing the whole call. Use when: you need to find a server matching a capability before mounting. Avoid when: the server_id is already known — go straight to shapeshift() or inspect(). search('web search') # find candidates search('postgres', compare=True) # side-by-side token-cost table search('vector db', registry='smithery') registry: all|official|mcpregistry|glama|npm|smithery|pypi |
| statusA | Show Kitsune runtime state: providers, current form, connections, token stats. |
| callA | Invoke a tool on an MCP server. Returns the tool's response as text. Routes through the warm pooled transport when a server is shapeshifted; otherwise spins up a transient transport for the given server_id. Records the call in session stats. Long responses (HTML, large outputs) are truncated with a continuation note. Use when: the tool name and target server are known. Avoid when: discovery is needed — auto() does search → pick → call in one step. call('get_current_time', arguments={'timezone': 'UTC'}) # after shapeshift call('list_directory', '@mcp/server-fs', {'path': '/tmp'}) # ad-hoc one-shot |
| autoB | search → pick server → infer args → call. Use when you don't know which server to use. auto('what time in Tokyo') auto('list issues on acme/api', server_hint='github') |
| authA | Check or set credentials. ALL_CAPS = env var; server-id = creds check or OAuth. auth('GITHUB_TOKEN', 'ghp_...') # save env var auth('GITHUB_TOKEN') # check if set auth('server-id') # show creds needed / run OAuth auth('server-id', 'logout') # revoke OAuth tokens |
| shapeshiftA | Mount an MCP server's tools at runtime. Empty server_id unmounts. shapeshift('mcp-server-time') # mount (community sources cage by default) shapeshift('id', tools=['only_this']) # lean — mount only listed tools shapeshift('id', sandbox=False) # opt out of the default Docker cage shapeshift('id', sandbox=True) # force the cage (hard-fail if no Docker) shapeshift() # unmount + kill process sandbox: None (default) cages low-trust npm/PyPI/github sources in Docker when it's available (best-effort — runs uncaged with a nudge if not); True forces the cage; False opts out. source: auto|local|smithery|official. confirm=True for community sources. |
| connectC | Start a persistent server. command: server_id or shell cmd (e.g. 'uvx voice-mode'). name: alias for release(). |
| releaseB | Kill a persistent connection by name. |
| reloadA | Reload a persistent connection after editing its code — the MCP REPL in one call. reload('dev') # release the stale process, start fresh code, remount live Replaces the manual release() + connect() + shapeshift() cycle and removes the
"connect() handed back the old process" footgun (it always releases first).
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Most tools have distinct roles: search discovers servers, auth handles credentials, call invokes a known tool, and auto combines discovery and invocation. However, connect/shapeshift/release/reload/status all concern server lifecycle and can overlap in when-to-use decisions, though descriptions help clarify.
All names are lowercase single words with no mixed camelCase/snake_case inconsistencies. The convention is not verb_noun, and status is a noun while most others are action words, but the set is still readable and predictable enough.
Nine tools is well-scoped for an MCP orchestration server covering discovery, auth, connection, mounting, calling, reloading, releasing, and status. Each tool appears to earn its place without excessive surface.
The core lifecycle is covered: search, auth, connect, shapeshift, call, auto, reload, release, and status. A minor gap is the referenced inspect() operation, which is mentioned in search's description but not exposed as a tool.