Guide

Building or installing an MCP server

Draft, not yet reviewed

What you are building

You are installing an MCP server for an agent or exposing your own product operations through one. Its tools and launcher configuration determine which parts of the surrounding system the agent can reach.

Where untrusted text gets in

  • Tool-call arguments produced by a model after reading outside content.
  • Server manifests, installation instructions and source you have not reviewed.
  • MCP configuration that chooses a package version, command or filesystem root.
  • Tool results that the agent brings back into its next model call.

What it can do if it goes wrong

  • Give an agent arbitrary shell access or a broader filesystem root than its task needs.
  • Execute a tool call whose arguments name a resource the current user cannot use.
  • Load different extension code after an unpinned package reference moves.
  • Grant the agent permission through a configuration file that application review never inspected.

Know the limit

A clean configuration scan does not establish what a running server does with every input. Review the source and the effective access as well as the manifest. If a tool performs irreversible actions or reads retrieved content, add the matching approval and untrusted-content controls to these minimum checks.

Minimum controls

  1. Vet skills, plugins and MCP servers before you install them

    15 min

    Skills, plugins and MCP servers have reviewed source, pinned versions and narrow permissions, with hidden instruction text checked.

  2. Validate every tool call on the server

    30 min

    Every tool validates its arguments on the server and recomputes prices and IDs from your own data.

  3. Run tools with the user's permissions, not the agent's

    30 min

    Every tool takes user and tenant identity from the session and checks the same permissions as the normal API.

  4. Lock down your coding agent's config files

    10 min

    Coding-agent config has no permission bypass, secrets or unreviewed hooks, and MCP versions and filesystem access are restricted.