Exam guide·7 min read·4 September 2026

GitHub MCP Tool Design: CCAR-F Architect Exam Guide

Wire GitHub MCP into multi-agent systems and master the tool design patterns CCAR-F tests. Covers MCP scoping, isError error handling, and exam-ready scenarios.

By Solomon Udoh · AI Architect & Certification Lead

GitHub MCP Tool Design: CCAR-F Architect Exam Guide

The GitHub MCP server connects Claude directly to your repositories, letting agents read code, open pull requests, and query issues without custom glue code. For candidates preparing for the CCAR-F exam, that convenience carries a corresponding responsibility: Domain 2 (Tool Design and MCP Integration, weighted at 18%) tests whether you understand what happens when real MCP servers meet real multi-agent systems, and GitHub MCP is a canonical example the exam scenario writers return to.

The CCAR-F exam covers five domains across 60 scenario-based items. Domain 2 is where the technical integration mechanics live. This guide covers the configuration mechanics, tool design principles, error patterns, and scoping decisions that Domain 2 scenario questions probe most frequently.

What does the GitHub MCP server expose?

The GitHub MCP server publishes tools covering common repository operations: reading file trees, fetching file contents, listing branches, creating or updating files, opening issues, and managing pull requests. Each tool is a discrete function with a JSON Schema describing its parameters. Claude sees those schemas the moment the server is registered and selects among them based on descriptions and the task at hand.

What the exam cares about is not the full tool catalogue but the design decisions that determine whether Claude routes correctly when multiple tools are present. The GitHub server, used without curation, surfaces a large tool set simultaneously. That creates the setup for the tool overload problem: too many tools with overlapping descriptions produce ambiguity, and Claude can invoke the wrong one. Recognising this pattern and choosing the right proportionate fix is the core skill Domain 2 tests.

How do you configure GitHub MCP in a Claude Code project?

The three-level configuration hierarchy places MCP server registrations in either user-level or project-level settings files. For GitHub MCP, a typical project-level entry in .claude/settings.json looks like this:

json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}

The ${GITHUB_TOKEN} syntax triggers environment variable expansion: the runtime substitutes the shell variable at startup rather than reading a literal string from the config file. This is the pattern the environment variable expansion in MCP config concept covers, and it matters for the exam because hard-coding credentials in a committed settings file is a security anti-pattern that scenario questions use as a distractor answer.

Project-level registration makes the server available to every Claude Code session opened in that directory. User-level registration in ~/.claude/settings.json makes it available globally. The MCP scoping hierarchy governs precedence when the same server name appears at both levels: project-level wins, letting teams enforce project-specific token scopes without requiring each contributor to update their global configuration.

What does Domain 2 test, mapped to GitHub MCP scenarios?

Domain 2 carries 18 per cent of the CCAR-F exam weight. Each sitting draws 4 scenarios from a bank of 6, and Domain 2 questions present a described system, a symptom, and four candidate fixes. The task statements map directly onto GitHub MCP integration challenges:

Domain 2 skill areaGitHub MCP scenario it exercises
Tool descriptions as selection mechanismDisambiguating list_files vs search_code when both are plausible
MCP scoping hierarchyProject token vs user token; repo-scoped vs org-scoped access
Environment variable expansion in configInjecting GITHUB_TOKEN without embedding credentials in source control
MCP isError flag patternHandling 404 responses, rate limits, and auth failures from the GitHub API
Build vs use decision for MCP serversWhen GitHub MCP is sufficient vs when a custom wrapper is warranted

The exam consistently rewards the proportionate fix. For GitHub MCP scenarios, that is almost always a description change or a scope adjustment rather than a full architectural rebuild.

How do tool descriptions control GitHub MCP routing?

Claude selects tools by reading their descriptions. When two tools can plausibly serve a request, the one with the more specific, operation-focused description wins. Writing effective tool descriptions is the single highest-leverage change available when an MCP server behaves unexpectedly, and diagnosing tool misrouting is an explicit CCAR-F task statement.

Provide a clear and thorough description of what the tool does. The description is used by Claude to decide when to use the tool and how to interact with it.

Anthropic , Claude Tool Use Documentation

Consider a coordinator managing a multi-agent code review pipeline. It has access to GitHub MCP and also to a custom post_internal_review tool. If GitHub MCP's create_issue description reads only "Creates a GitHub issue," Claude may invoke it for internal review comments that should never appear in the public repository. The fix is a single description change: "Creates a public GitHub issue visible to all repository contributors. Do not use for internal team comments or review notes."

The diagnostic loop the exam expects: identify the symptom, trace it to description ambiguity, apply the minimum change, verify no new surface area is introduced. Three of the four answer choices in a misrouting question will typically suggest architectural interventions. The correct answer narrows the description.

What error patterns does GitHub MCP introduce in agent pipelines?

The GitHub API returns structured errors across four conceptual categories: access failures (authentication and permission errors), resource errors (404 responses and missing branches), operational errors (rate limits and timeouts), and data errors (malformed input or schema violations). Each category warrants a different response strategy, and the exam tests whether you can identify the correct strategy from the symptom alone.

The MCP isError flag pattern is the mechanism Domain 2 probes most directly. When a tool call fails, the MCP server sets isError: true in the response alongside a human-readable message. A well-designed orchestrator checks that flag before deciding whether to retry, escalate, or continue with partial data.

python
def handle_tool_result(result):
if result.get("isError"):
error_code = result.get("errorCode", "UNKNOWN")
raise ToolError(f"GitHub MCP error {error_code}: {result.get('message')}")
return result.get("content")

A rate-limit response is recoverable: the orchestrator should apply exponential backoff and retry. A 404 on a repository lookup is non-recoverable for the current task: the orchestrator should surface it to the coordinator rather than retry silently. Conflating these two categories produces the silent suppression anti-pattern, which the exam penalises because downstream agents receive incomplete data without knowing it is incomplete.

In multi-agent pipelines, error propagation matters as much as the initial error response. If a subagent swallows a GitHub API error and returns an empty result, the coordinator loses the signal that data is missing. Structured error metadata requires subagents to return the error code and message alongside any partial results so the coordinator can route accordingly.

When should you build a custom tool instead of using GitHub MCP?

The build vs use decision for MCP servers is an explicit Domain 2 task statement. GitHub MCP is the right choice for general repository operations where the full tool surface is acceptable. A custom tool is warranted when:

  1. The operation requires composing several GitHub API calls into an atomic step from the agent's perspective.
  2. You need to constrain the agent to a single repository or branch, and description-level guardrails are insufficient.
  3. The tool's output needs deterministic transformation before it is useful to the next pipeline stage.

Replacing generic with constrained tools frames this decision precisely: a narrow tool that performs exactly one operation beats a general tool that can do many when the agent's decision space must be tight. The exam may also present scenarios requiring scoped cross-role tools: when an agent needs write access for one task and read access for another, two scoped tools produce more predictable routing and a smaller security surface than one general-purpose tool.

How does the CCAR-F exam score GitHub MCP domain questions?

The score report returns a scaled score between 100 and 1,000, with 720 as the passing mark. Per-domain percent-correct breakdowns let you identify Domain 2 as a specific area of strength or weakness after each sitting. The raw-to-scaled conversion is not published by Anthropic, so we do not state a precise question count for passing; Domain 2's 18 per cent weight implies roughly 10 to 11 items in a 60-question paper.

The exam rewards candidates who reason from symptom to minimum-change fix. Scenarios presenting architectural overhauls as the correct answer are almost always distractors. The tell is proportionality: if a fix would take a team a week to implement when a one-line description change achieves the same outcome, the larger fix is wrong. Candidates who have built with GitHub MCP in day-to-day development have a practical foundation; the typical exam gap is not the tool knowledge but the ability to reason from symptom to root cause under time pressure across 120 minutes.

The tool design and MCP integration concepts library covers all Domain 2 task statements, with 174 atomic concepts mapped across the five CCAR-F domains. If GitHub MCP scenarios are a weak area after a practice sitting, MCP server integration best practices and tool choice application scenarios are the most targeted revision path.

The CCAR-F exam costs $125 per attempt and is delivered via online proctoring or at a Pearson VUE test centre. The credential is valid for 12 months from the award date. As of 3 June 2026, more than 10,000 individuals had earned a Claude certification across the programme's four tracks, underpinned by the $100M Claude Partner Network.

Frequently asked questions

How do I set up the GitHub MCP server in Claude Code?
Add a `mcpServers.github` entry to `.claude/settings.json`, pointing to `@modelcontextprotocol/server-github` via `npx`. Pass your GitHub personal access token using the `${GITHUB_TOKEN}` environment variable expansion syntax rather than hard-coding the value. The server becomes available in every Claude Code session opened in that project directory, and project-level config overrides any user-level registration.
Which CCAR-F exam domains cover GitHub MCP integration?
Domain 2 (Tool Design and MCP Integration, 18%) is the primary domain. It covers tool description design, MCP scoping, error handling via the `isError` flag, and the build-vs-use decision for MCP servers. Domain 3 (Claude Code Configuration and Workflows, 20%) overlaps when questions involve how the server is registered in user-level or project-level settings files.
How should I scope a GitHub MCP token for a read-only agent?
Use a fine-grained personal access token with read-only permissions on the specific repositories the agent needs. Avoid organisation-wide or write-scope tokens for agents that only summarise or query code. The CCAR-F exam treats over-scoped credentials as a security anti-pattern and rewards the minimum-scope approach as the proportionate, exam-correct fix.
What does the MCP isError flag do when GitHub returns a 404?
When the GitHub API returns a 404, the MCP server sets `isError: true` in the tool response and includes a message field describing the failure. Your orchestrator should check that flag before consuming the result. A 404 is a non-recoverable error for the current task and should be surfaced to the coordinator rather than silently returning an empty result to downstream agents.
Can I limit GitHub MCP to a specific repository in Claude?
GitHub MCP does not expose a built-in repository filter at the config level. You can constrain it through token scoping (a fine-grained token with access only to the target repository), tool description instructions (directing Claude not to query other repositories), or a custom wrapper tool that hard-codes the repository parameter. The CCAR-F exam rewards the approach with least operational overhead for the stated requirement.
How does GitHub MCP differ from calling the GitHub API directly in a Claude tool?
GitHub MCP wraps the GitHub API as MCP-standard tool definitions, so Claude can invoke repository operations via tool use without custom integration code. A direct GitHub API tool requires you to define the JSON Schema, write the handler, manage authentication, and return a structured response yourself. MCP handles that scaffolding; the trade-off is less flexibility in output shaping and a broader default tool surface.

People also ask

What is GitHub MCP?
GitHub MCP is an open-source MCP server, part of Anthropic's Model Context Protocol ecosystem, that exposes GitHub repository operations as callable tools for Claude and other MCP-compatible systems. It enables agents to read files, manage issues, open pull requests, and query branches without writing custom API integration code.
How does Claude use GitHub MCP tools?
Claude reads the JSON Schema definitions the GitHub MCP server exposes and selects the appropriate tool based on the task and each tool's description. When asked to open an issue, Claude invokes the `create_issue` tool and passes the required parameters. No additional routing code is needed beyond registering the server in the project settings file.
Is GitHub MCP free to use?
The GitHub MCP server is open source and free to run. You need a GitHub personal access token, which is free to generate. Standard Anthropic API costs apply for Claude usage; the MCP server itself adds no separate charge beyond the compute required to run the server process alongside your application.
What can the GitHub MCP server do?
GitHub MCP exposes tools for reading repository file trees, fetching file contents, listing and creating branches, opening and updating issues, managing pull requests, and searching code. The exact tool set depends on the server version in use; always check the published schema for the version your project registers to verify available operations.
How do I install GitHub MCP for Claude Code?
Add the server to `.claude/settings.json` under `mcpServers`, using `npx -y @modelcontextprotocol/server-github` as the command and your GitHub personal access token under `env.GITHUB_TOKEN` with the `${GITHUB_TOKEN}` expansion syntax. Claude Code starts the MCP server process automatically each time a session opens in that project directory.

About the author

Solomon Udoh

AI Architect & Certification Lead

Solomon Udoh is an AI Architect who designs and ships production agent systems on the Claude API and Claude Code. He built AI Skill Certs' adaptive engine and authored its 174-concept knowledge graph, mapping every Claude Certified Architect - Foundations objective to hands-on, exam-aligned practice.

  • Designs production multi-agent systems on the Claude API and Agent SDK
  • Author of the AI Skill Certs knowledge graph (174 mapped exam concepts)
  • Builds with MCP, Claude Code, structured outputs, and agentic loops daily
  • Reviews every concept page against the official Anthropic exam guide

You might also like

Ready to put it into practice?

Study every exam concept with an adaptive tutor.

Start studying