managing-mcp-servers
Skill6.8k starsChanged 10 days agoApache-2.0View on GitHub
Use when the user asks to add, change, remove, enable or disable an MCP server, or when an MCP tool is missing, needs sign-in, fails, or was blocked. ThinkRail runs pi in-process, so there is no `pi` command to call.
- Reads credentials
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 31
Never write a secret into either file.
- Very specific: line 35
Prefer the user-level file for personal servers.
- Distinctive: line 41
Add it to the user-level file (Settings › MCP servers offers the same entry under Paste JSON):
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Managing MCP servers in ThinkRail
ThinkRail uses pi's built-in MCP support but has no pi executable. Never run pi mcp add,
pi mcp login or other pi commands; edit the configuration files and point the user at
Settings › MCP servers for everything that needs them.
Where servers are configured
- User level — pi's agent directory, usually
~/.pi/agent/mcp.json: available in every project. - This repository —
.pi/mcp.jsonin the worktree, tracked in git. A server defined here does not run until the user approves it in Settings, and any later change to its entry needs approval again. It only loads when the user trusts the project.
Both files use pi's format:
{
"mcpServers": {
"docs": { "url": "https://example.com/mcp" },
"browser": { "command": "npx", "args": ["-y", "@playwright/mcp@0.0.83"] }
}
}- Pin package versions in
args; never@latest. - Never write a secret into either file. Reference it as
${ENV_VAR}(from the host's environment) or!command(the command's output, for example!gh auth token), or let the user sign in. exposure:deferred(the default here — load the server's tools withtool_searchfirst),direct(a few always-useful tools), orhidden.codemodeis treated asdeferred.- Prefer the user-level file for personal servers; only put a server in
.pi/mcp.jsonwhen the user wants it shared with the repository.
GitHub
GitHub is a recipe, not a preset: its hosted server, authenticated with the user's GitHub CLI sign-in. Add it to the user-level file (Settings › MCP servers offers the same entry under Paste JSON):
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/readonly",
"headers": { "Authorization": "!t=$(gh auth token) && echo \"Bearer $t\"" }
}
}
}/readonlyis GitHub's documented read-only mode (same as anX-MCP-Readonly: trueheader). Usehttps://api.githubcopilot.com/mcp/only when the user asks for tools that change data.- The header command runs each time a chat connects. While
ghis logged out it fails instead of sending an empty token; the user runsgh auth loginin a terminal. - Unverified: whether GitHub accepts the GitHub CLI token's scopes for every toolset. If the server
rejects it, ask the user for a token in an environment variable:
"Authorization": "Bearer ${GITHUB_TOKEN}".
After editing
The host reloads idle chats on its own and a busy chat picks the change up when it is idle. Tell the user when a step is theirs: approving a repository server, or Sign in for a server that uses OAuth (both in Settings › MCP servers). Do not ask them to restart ThinkRail.
Using MCP tools
- Tools are named
mcp__<server>__<tool>. For adeferredserver, calltool_searchto load them. - Subagents cannot call MCP tools: call them yourself and put what the subagent needs in its task.
- ThinkRail asks the user before a call that may change data. A denied or cancelled call is final for that call; do not retry it without asking the user first.
In this repository12 other files it gives its agents.
- AGENTS.mdAGENTS.md
- asking-user-questionsSkill
- brainstormingSkill
- choosing-a-workflowSkill
- importing-a-codebaseSkill
- setting-up-a-projectSkill
- shipping-a-prSkill
- starting-a-new-projectSkill
- writing-specsSkill
- writing-workflow-skillsSkill
- todosSkill
- spec-graphSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

