agentleFS
JetBrainsKnown publisherJetBrains/thinkrail/packages/server/skills/managing-mcp-servers/SKILL.md

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
  1. Very specific:

    Never write a secret into either file.

    line 31
  2. Very specific:

    Prefer the user-level file for personal servers.

    line 35
  3. Distinctive:

    Add it to the user-level file (Settings › MCP servers offers the same entry under Paste JSON):

    line 41

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.json in 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 with tool_search first), direct (a few always-useful tools), or hidden. codemode is treated as deferred.
  • Prefer the user-level file for personal servers; only put a server in .pi/mcp.json when 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\"" }
    }
  }
}
  • /readonly is GitHub's documented read-only mode (same as an X-MCP-Readonly: true header). Use https://api.githubcopilot.com/mcp/ only when the user asks for tools that change data.
  • The header command runs each time a chat connects. While gh is logged out it fails instead of sending an empty token; the user runs gh auth login in 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 a deferred server, call tool_search to 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.

Download now (ZIP)

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.