{
  "type": "stack",
  "id": "coding-agent-starter",
  "title": "Coding agent starter stack",
  "summary": "A terminal coding agent plus current library docs, GitHub access, a real browser and a sandbox, connected over MCP, with the configuration choices that keep it safe.",
  "author": "Agentica Author",
  "tags": [
    "coding",
    "mcp",
    "starter"
  ],
  "published": "2026-10-02",
  "last_verified": "2026-10-02",
  "entries": [
    "claude-code",
    "agents-md",
    "context7",
    "github-mcp-server",
    "playwright-mcp",
    "e2b",
    "codex-cli",
    "gemini-cli",
    "opencode"
  ],
  "links": {
    "html": "https://indexagentica.com/stacks/coding-agent-starter/",
    "markdown": "https://indexagentica.com/stacks/coding-agent-starter.md",
    "json": "https://indexagentica.com/api/longform/stacks/coding-agent-starter.json",
    "source": "https://github.com/Drudley/indexagentica/blob/main/content-long/stacks/coding-agent-starter.md"
  },
  "status": "published",
  "stack": {
    "use_case": "Give a coding agent current library docs, repository access, a real browser and an isolated place to run code.",
    "components": [
      {
        "role": "Harness",
        "entry": "claude-code",
        "name": "Claude Code",
        "url": "https://indexagentica.com/entries/claude-code/",
        "why": "Agentic coding in the terminal with a built-in MCP client, Agent Skills and an optional OS-enforced Bash sandbox. Swap in another harness from the comparison if you prefer a different model or license."
      },
      {
        "role": "Project instructions",
        "entry": "agents-md",
        "name": "AGENTS.md",
        "url": "https://indexagentica.com/entries/agents-md/",
        "why": "One AGENTS.md at the repo root that most harnesses read (Claude Code reads it alongside CLAUDE.md), holding build, test and style rules."
      },
      {
        "role": "Library docs",
        "entry": "context7",
        "name": "Context7",
        "url": "https://indexagentica.com/entries/context7/",
        "why": "Pulls up-to-date, version-specific library documentation into context, so the agent stops guessing APIs. Hosted at mcp.context7.com/mcp."
      },
      {
        "role": "Repository access",
        "entry": "github-mcp-server",
        "name": "GitHub MCP Server",
        "url": "https://indexagentica.com/entries/github-mcp-server/",
        "why": "Issues, pull requests, code search and Actions from the agent, either hosted at api.githubcopilot.com/mcp with a token or as a local Docker server with OAuth."
      },
      {
        "role": "Browser",
        "entry": "playwright-mcp",
        "name": "Playwright MCP",
        "url": "https://indexagentica.com/entries/playwright-mcp/",
        "why": "Drives a real browser through accessibility snapshots, for checking the UI the agent just changed."
      },
      {
        "role": "Sandbox",
        "entry": "e2b",
        "name": "E2B",
        "url": "https://indexagentica.com/entries/e2b/",
        "why": "A disposable Firecracker microVM for running untrusted or generated code away from your machine, with outbound network you can switch off."
      }
    ]
  },
  "entries_detail": [
    {
      "id": "claude-code",
      "name": "Claude Code",
      "summary": "Anthropic's agentic coding tool that reads your codebase, edits files, runs commands and integrates with dev tools; available in terminal, IDE, desktop and browser.",
      "url": "https://indexagentica.com/entries/claude-code/",
      "json": "https://indexagentica.com/api/entries/claude-code.json"
    },
    {
      "id": "agents-md",
      "name": "AGENTS.md",
      "summary": "Simple, open format for guiding coding agents: a README for agents placed in your repo.",
      "url": "https://indexagentica.com/entries/agents-md/",
      "json": "https://indexagentica.com/api/entries/agents-md.json"
    },
    {
      "id": "context7",
      "name": "Context7",
      "summary": "Upstash's MCP server and platform that pulls up-to-date, version-specific library documentation and code examples into AI coding tools.",
      "url": "https://indexagentica.com/entries/context7/",
      "json": "https://indexagentica.com/api/entries/context7.json"
    },
    {
      "id": "github-mcp-server",
      "name": "GitHub MCP Server",
      "summary": "GitHub's official MCP server: lets agents read repos and code, manage issues and PRs, analyze code and monitor Actions workflows.",
      "url": "https://indexagentica.com/entries/github-mcp-server/",
      "json": "https://indexagentica.com/api/entries/github-mcp-server.json"
    },
    {
      "id": "playwright-mcp",
      "name": "Playwright MCP",
      "summary": "Microsoft's MCP server for browser automation with Playwright, letting LLMs act on web pages via structured accessibility snapshots instead of screenshots.",
      "url": "https://indexagentica.com/entries/playwright-mcp/",
      "json": "https://indexagentica.com/api/entries/playwright-mcp.json"
    },
    {
      "id": "e2b",
      "name": "E2B",
      "summary": "Open-source, secure cloud sandboxes for AI agents: an isolated machine per agent to run code, browse and use tools.",
      "url": "https://indexagentica.com/entries/e2b/",
      "json": "https://indexagentica.com/api/entries/e2b.json"
    },
    {
      "id": "codex-cli",
      "name": "OpenAI Codex CLI",
      "summary": "OpenAI's lightweight open-source coding agent that runs in your terminal.",
      "url": "https://indexagentica.com/entries/codex-cli/",
      "json": "https://indexagentica.com/api/entries/codex-cli.json"
    },
    {
      "id": "gemini-cli",
      "name": "Gemini CLI",
      "summary": "Open-source AI agent from Google that brings Gemini models directly into your terminal.",
      "url": "https://indexagentica.com/entries/gemini-cli/",
      "json": "https://indexagentica.com/api/entries/gemini-cli.json"
    },
    {
      "id": "opencode",
      "name": "OpenCode",
      "summary": "The open-source AI coding agent, built for the terminal.",
      "url": "https://indexagentica.com/entries/opencode/",
      "json": "https://indexagentica.com/api/entries/opencode.json"
    }
  ],
  "related": [
    {
      "type": "guide",
      "id": "add-mcp-servers-to-claude-code",
      "title": "Add MCP servers to Claude Code",
      "url": "https://indexagentica.com/guides/add-mcp-servers-to-claude-code/",
      "json": "https://indexagentica.com/api/longform/guides/add-mcp-servers-to-claude-code.json"
    },
    {
      "type": "comparison",
      "id": "coding-agent-harnesses",
      "title": "Terminal coding agents compared",
      "url": "https://indexagentica.com/compare/coding-agent-harnesses/",
      "json": "https://indexagentica.com/api/longform/compare/coding-agent-harnesses.json"
    },
    {
      "type": "guide",
      "id": "run-untrusted-code-in-a-sandbox",
      "title": "Run agent-generated code safely in a sandbox",
      "url": "https://indexagentica.com/guides/run-untrusted-code-in-a-sandbox/",
      "json": "https://indexagentica.com/api/longform/guides/run-untrusted-code-in-a-sandbox.json"
    },
    {
      "type": "comparison",
      "id": "code-sandboxes",
      "title": "Code sandboxes for AI agents",
      "url": "https://indexagentica.com/compare/code-sandboxes/",
      "json": "https://indexagentica.com/api/longform/compare/code-sandboxes.json"
    },
    {
      "type": "guide",
      "id": "connect-an-agent-to-a-remote-mcp-server",
      "title": "Connect an agent to a remote MCP server",
      "url": "https://indexagentica.com/guides/connect-an-agent-to-a-remote-mcp-server/",
      "json": "https://indexagentica.com/api/longform/guides/connect-an-agent-to-a-remote-mcp-server.json"
    }
  ],
  "sources": [
    {
      "title": "Claude Code docs, Connect Claude Code to tools via MCP",
      "url": "https://code.claude.com/docs/en/mcp",
      "accessed": "2026-10-02"
    },
    {
      "title": "Claude Code docs, Memory (CLAUDE.md and AGENTS.md)",
      "url": "https://code.claude.com/docs/en/memory",
      "accessed": "2026-10-02"
    },
    {
      "title": "GitHub MCP server, Install in Claude applications",
      "url": "https://github.com/github/github-mcp-server/blob/main/docs/installation-guides/install-claude.md",
      "accessed": "2026-10-02"
    },
    {
      "title": "Playwright MCP README",
      "url": "https://github.com/microsoft/playwright-mcp",
      "accessed": "2026-10-02"
    },
    {
      "title": "E2B docs, Internet access",
      "url": "https://docs.e2b.dev/network/internet-access",
      "accessed": "2026-10-02"
    }
  ],
  "front_matter": {
    "id": "coding-agent-starter",
    "type": "stack",
    "title": "Coding agent starter stack",
    "summary": "A terminal coding agent plus current library docs, GitHub access, a real browser and a sandbox, connected over MCP, with the configuration choices that keep it safe.",
    "description": "A minimal, well-supported set of tools to make a terminal coding agent useful on real projects. Claude Code is used as the harness, but every component works with any MCP-capable harness, such as Codex CLI, Gemini CLI, OpenCode or Copilot CLI.",
    "author": "Agentica Author",
    "use_case": "Give a coding agent current library docs, repository access, a real browser and an isolated place to run code.",
    "components": [
      {
        "role": "Harness",
        "entry": "claude-code",
        "why": "Agentic coding in the terminal with a built-in MCP client, Agent Skills and an optional OS-enforced Bash sandbox. Swap in another harness from the comparison if you prefer a different model or license."
      },
      {
        "role": "Project instructions",
        "entry": "agents-md",
        "why": "One AGENTS.md at the repo root that most harnesses read (Claude Code reads it alongside CLAUDE.md), holding build, test and style rules."
      },
      {
        "role": "Library docs",
        "entry": "context7",
        "why": "Pulls up-to-date, version-specific library documentation into context, so the agent stops guessing APIs. Hosted at mcp.context7.com/mcp."
      },
      {
        "role": "Repository access",
        "entry": "github-mcp-server",
        "why": "Issues, pull requests, code search and Actions from the agent, either hosted at api.githubcopilot.com/mcp with a token or as a local Docker server with OAuth."
      },
      {
        "role": "Browser",
        "entry": "playwright-mcp",
        "why": "Drives a real browser through accessibility snapshots, for checking the UI the agent just changed."
      },
      {
        "role": "Sandbox",
        "entry": "e2b",
        "why": "A disposable Firecracker microVM for running untrusted or generated code away from your machine, with outbound network you can switch off."
      }
    ],
    "tags": [
      "coding",
      "mcp",
      "starter"
    ],
    "entries": [
      "claude-code",
      "agents-md",
      "context7",
      "github-mcp-server",
      "playwright-mcp",
      "e2b",
      "codex-cli",
      "gemini-cli",
      "opencode"
    ],
    "sources": [
      {
        "title": "Claude Code docs, Connect Claude Code to tools via MCP",
        "url": "https://code.claude.com/docs/en/mcp",
        "accessed": "2026-10-02"
      },
      {
        "title": "Claude Code docs, Memory (CLAUDE.md and AGENTS.md)",
        "url": "https://code.claude.com/docs/en/memory",
        "accessed": "2026-10-02"
      },
      {
        "title": "GitHub MCP server, Install in Claude applications",
        "url": "https://github.com/github/github-mcp-server/blob/main/docs/installation-guides/install-claude.md",
        "accessed": "2026-10-02"
      },
      {
        "title": "Playwright MCP README",
        "url": "https://github.com/microsoft/playwright-mcp",
        "accessed": "2026-10-02"
      },
      {
        "title": "E2B docs, Internet access",
        "url": "https://docs.e2b.dev/network/internet-access",
        "accessed": "2026-10-02"
      }
    ],
    "related": [
      "add-mcp-servers-to-claude-code",
      "coding-agent-harnesses",
      "run-untrusted-code-in-a-sandbox",
      "code-sandboxes",
      "connect-an-agent-to-a-remote-mcp-server"
    ],
    "last_verified": "2026-10-02",
    "published": "2026-10-02"
  },
  "markdown": "\n## Setting it up\n\nStart with the harness and one MCP server, confirm it works, then add the next. With Claude Code:\n\n```bash\nclaude mcp add --transport http context7 https://mcp.context7.com/mcp\nclaude mcp add --transport http github https://api.githubcopilot.com/mcp \\\n  --header \"Authorization: Bearer $GITHUB_PAT\"\nclaude mcp add playwright -- npx @playwright/mcp@latest\nclaude mcp list\n```\n\nThe [Claude Code MCP guide](https://indexagentica.com/guides/add-mcp-servers-to-claude-code/) covers scopes, keeping tokens out of `.mcp.json`, and troubleshooting. For other harnesses, see the [remote MCP guide](https://indexagentica.com/guides/connect-an-agent-to-a-remote-mcp-server/) and the [coding agents comparison](https://indexagentica.com/compare/coding-agent-harnesses/).\n\n## Keep it safe\n\n- **Scope the GitHub token.** Use a fine-grained token limited to the repositories the agent works on, with read-only permissions unless it needs to open pull requests.\n- **Turn on the harness sandbox.** Claude Code's Bash sandbox is off by default (`/sandbox` enables it); Codex CLI sandboxes by default. Add `denyRead` rules for credential files, since sandboxed commands can still read most of your home directory by default.\n- **Review `.mcp.json` in repos you didn't write.** Project-scoped servers load without a prompt in `claude -p` and SDK runs.\n- **Run generated code elsewhere.** Send anything that installs packages from the internet or runs untrusted code to the sandbox; the [sandboxing guide](https://indexagentica.com/guides/run-untrusted-code-in-a-sandbox/) explains how.\n",
  "raw": "---\nid: coding-agent-starter\ntype: stack\ntitle: Coding agent starter stack\nsummary: A terminal coding agent plus current library docs, GitHub access, a real browser and a sandbox, connected over MCP, with the configuration choices that keep it safe.\ndescription: \"A minimal, well-supported set of tools to make a terminal coding agent useful on real projects. Claude Code is used as the harness, but every component works with any MCP-capable harness, such as Codex CLI, Gemini CLI, OpenCode or Copilot CLI.\"\nauthor: Agentica Author\nuse_case: Give a coding agent current library docs, repository access, a real browser and an isolated place to run code.\ncomponents:\n  - role: Harness\n    entry: claude-code\n    why: \"Agentic coding in the terminal with a built-in MCP client, Agent Skills and an optional OS-enforced Bash sandbox. Swap in another harness from the comparison if you prefer a different model or license.\"\n  - role: Project instructions\n    entry: agents-md\n    why: \"One AGENTS.md at the repo root that most harnesses read (Claude Code reads it alongside CLAUDE.md), holding build, test and style rules.\"\n  - role: Library docs\n    entry: context7\n    why: \"Pulls up-to-date, version-specific library documentation into context, so the agent stops guessing APIs. Hosted at mcp.context7.com/mcp.\"\n  - role: Repository access\n    entry: github-mcp-server\n    why: \"Issues, pull requests, code search and Actions from the agent, either hosted at api.githubcopilot.com/mcp with a token or as a local Docker server with OAuth.\"\n  - role: Browser\n    entry: playwright-mcp\n    why: \"Drives a real browser through accessibility snapshots, for checking the UI the agent just changed.\"\n  - role: Sandbox\n    entry: e2b\n    why: \"A disposable Firecracker microVM for running untrusted or generated code away from your machine, with outbound network you can switch off.\"\ntags: [coding, mcp, starter]\nentries: [claude-code, agents-md, context7, github-mcp-server, playwright-mcp, e2b, codex-cli, gemini-cli, opencode]\nsources:\n  - title: Claude Code docs, Connect Claude Code to tools via MCP\n    url: https://code.claude.com/docs/en/mcp\n    accessed: 2026-10-02\n  - title: Claude Code docs, Memory (CLAUDE.md and AGENTS.md)\n    url: https://code.claude.com/docs/en/memory\n    accessed: 2026-10-02\n  - title: GitHub MCP server, Install in Claude applications\n    url: https://github.com/github/github-mcp-server/blob/main/docs/installation-guides/install-claude.md\n    accessed: 2026-10-02\n  - title: Playwright MCP README\n    url: https://github.com/microsoft/playwright-mcp\n    accessed: 2026-10-02\n  - title: E2B docs, Internet access\n    url: https://docs.e2b.dev/network/internet-access\n    accessed: 2026-10-02\nrelated: [add-mcp-servers-to-claude-code, coding-agent-harnesses, run-untrusted-code-in-a-sandbox, code-sandboxes, connect-an-agent-to-a-remote-mcp-server]\nlast_verified: 2026-10-02\npublished: 2026-10-02\n---\n\n## Setting it up\n\nStart with the harness and one MCP server, confirm it works, then add the next. With Claude Code:\n\n```bash\nclaude mcp add --transport http context7 https://mcp.context7.com/mcp\nclaude mcp add --transport http github https://api.githubcopilot.com/mcp \\\n  --header \"Authorization: Bearer $GITHUB_PAT\"\nclaude mcp add playwright -- npx @playwright/mcp@latest\nclaude mcp list\n```\n\nThe [Claude Code MCP guide](https://indexagentica.com/guides/add-mcp-servers-to-claude-code/) covers scopes, keeping tokens out of `.mcp.json`, and troubleshooting. For other harnesses, see the [remote MCP guide](https://indexagentica.com/guides/connect-an-agent-to-a-remote-mcp-server/) and the [coding agents comparison](https://indexagentica.com/compare/coding-agent-harnesses/).\n\n## Keep it safe\n\n- **Scope the GitHub token.** Use a fine-grained token limited to the repositories the agent works on, with read-only permissions unless it needs to open pull requests.\n- **Turn on the harness sandbox.** Claude Code's Bash sandbox is off by default (`/sandbox` enables it); Codex CLI sandboxes by default. Add `denyRead` rules for credential files, since sandboxed commands can still read most of your home directory by default.\n- **Review `.mcp.json` in repos you didn't write.** Project-scoped servers load without a prompt in `claude -p` and SDK runs.\n- **Run generated code elsewhere.** Send anything that installs packages from the internet or runs untrusted code to the sandbox; the [sandboxing guide](https://indexagentica.com/guides/run-untrusted-code-in-a-sandbox/) explains how.\n",
  "html": "<h2>Setting it up</h2>\n<p>Start with the harness and one MCP server, confirm it works, then add the next. With Claude Code:</p>\n<pre><code class=\"language-bash\">claude mcp add --transport http context7 https://mcp.context7.com/mcp\nclaude mcp add --transport http github https://api.githubcopilot.com/mcp \\\n  --header &quot;Authorization: Bearer $GITHUB_PAT&quot;\nclaude mcp add playwright -- npx @playwright/mcp@latest\nclaude mcp list</code></pre>\n<p>The <a href=\"/guides/add-mcp-servers-to-claude-code/\">Claude Code MCP guide</a> covers scopes, keeping tokens out of <code>.mcp.json</code>, and troubleshooting. For other harnesses, see the <a href=\"/guides/connect-an-agent-to-a-remote-mcp-server/\">remote MCP guide</a> and the <a href=\"/compare/coding-agent-harnesses/\">coding agents comparison</a>.</p>\n<h2>Keep it safe</h2>\n<ul><li><strong>Scope the GitHub token.</strong> Use a fine-grained token limited to the repositories the agent works on, with read-only permissions unless it needs to open pull requests.</li><li><strong>Turn on the harness sandbox.</strong> Claude Code&#39;s Bash sandbox is off by default (<code>/sandbox</code> enables it); Codex CLI sandboxes by default. Add <code>denyRead</code> rules for credential files, since sandboxed commands can still read most of your home directory by default.</li><li><strong>Review <code>.mcp.json</code> in repos you didn&#39;t write.</strong> Project-scoped servers load without a prompt in <code>claude -p</code> and SDK runs.</li><li><strong>Run generated code elsewhere.</strong> Send anything that installs packages from the internet or runs untrusted code to the sandbox; the <a href=\"/guides/run-untrusted-code-in-a-sandbox/\">sandboxing guide</a> explains how.</li></ul>"
}
