AnthropicClaude Certified Architect – Foundations2026-102.4 Integrate MCP servers into Claude Code and agent workflows
Reuse integrations and own specialized contracts
Completed by the knowledge check
Learning objective
Choose maintained community MCP servers for standard integrations and custom servers for team-specific contracts.
Core idea
Start with an existing maintained MCP server when the requirement is a standard integration such as searching issues, retrieving documents, or reading service records. Build a custom server when the required contract is specific to your team’s workflow and cannot be represented faithfully by an existing integration’s operations.
The decision turns on the executable contract, not the service’s brand or the server’s tool count. A community server can expose the standard service correctly yet lack a team-specific approval operation. A custom server can encode that operation clearly yet create unnecessary work if its only purpose is to reproduce a standard search interface.
“Maintained” is a property you must verify for the candidate you plan to deploy. Neither inclusion in an example nor a recognizable server name establishes its maintenance, trustworthiness, permissions, or fitness for your workflow.
How it works
Find a candidate and verify its real interface
Anthropic points readers to reviewed connectors in the Anthropic Directory. The Claude Code MCP documentation says remote servers listed there use the same MCP infrastructure and can be added with claude mcp add.
For a standard issue-tracker requirement, begin with a candidate’s documented endpoint or startup command. Decide whether it is a remote HTTP server or a local stdio process. Claude Code configures a remote HTTP endpoint with claude mcp add --transport http, while a stdio entry specifies command and args for the process to run.
A local process executes on the client machine. A remote endpoint receives requests and returns evidence. Assess the actual implementation and destination before connecting either one. Anthropic explicitly warns that servers fetching external content can expose a workflow to prompt injection. A “read-only” intended use is not proof that all returned text is trustworthy instruction.
Apply the scope and credential choices from 2.4.1 and 2.4.2 after selecting the candidate. Putting an unverified server into project scope distributes its configuration; it does not perform a trust review or turn that integration into an approved dependency.
Compare capability contracts rather than feature labels
Inspect the operations returned by tools/list, including name, description, and inputSchema. Where the tool provides an outputSchema, compare the declared output with the evidence your workflow needs. An integration described as “Jira support” might still lack the particular fields or actions your assignment requires.
Use representative requests to distinguish standard service operations from team-specific contracts. For example, searching an issue by its terms and reading its discussion are standard integration requirements. “Close this incident only after the release owner approves the linked fix and the affected customer cases are reconciled” is a team-specific contract spanning policy and evidence.
The latter does not automatically require rebuilding the whole service integration. You can preserve the standard server for standard reads and create a focused custom operation for the team-specific action. See 2.1.3 for operation granularity and 1.4.2 for deterministic checks before sensitive execution.
If a community tool provides the necessary data but the agent selects it poorly, repair configuration, server instructions, or tool descriptions as appropriate; see 2.4.4. Tool misrouting is different from a missing service capability.
Place specialized behavior in an enforceable operation
A custom MCP server should expose a contract that means something in the team’s domain. Its tool description explains when to call it; inputSchema defines the required inputs; implementation checks establish whether the action is permitted; its result preserves evidence of what happened.
For the incident example, a custom operation could accept an incident_id and obtain authoritative approval evidence before invoking the underlying service action. That field and operation are illustrative team choices, not MCP-defined or Anthropic-provided names. Keep model-supplied identifiers separate from the authoritative state the implementation verifies. The model’s assurance that an approval exists is not the approval check.
MCP annotations can describe tool behavior, but the protocol tells clients to treat annotations as untrusted unless they come from a trusted server. They are not a substitute for the operation’s checks. Likewise, TypeScript allowedTools or Python allowed_tools can pre-approve calls in the Agent SDK but do not establish the business rule’s truth.
A focused custom operation can consolidate a workflow that would otherwise require the model to coordinate many small service calls. Anthropic’s engineering guidance recommends shaping tools around useful tasks, making inputs and outputs explicit, and measuring their behavior with evaluations. Keep that consolidation tied to a real contract; avoid a generic dispatcher whose many unrelated responsibilities obscure selection.
Choose the custom server’s hosting mechanism
Claude Code connects to custom remote HTTP or local stdio servers through the same MCP configuration surfaces as other servers. If you are building an Agent SDK application, you can also create an in-process SDK MCP server. Define tools with TypeScript tool() or Python @tool, then wrap them with TypeScript createSdkMcpServer() or Python create_sdk_mcp_server(). Pass the server through TypeScript mcpServers or Python mcp_servers. That choice attaches the tools to the host application’s process and lifecycle instead of launching a separate server.
The host boundary matters: only an SDK host application can register a "type": "sdk" server. Claude Code skips that entry in .mcp.json or ~/.claude.json and reports that only an SDK host can register it. A custom tool working in an SDK application is not automatically installable in terminal Claude Code by copying that entry into a project file.
For a team that needs both terminal and automated workflows, choose a server mechanism both consumers can use or deliberately provide different host integrations for the same domain contract. Verify the capability through each consumer’s connection status and actual tool calls rather than assuming compatible JSON keys guarantee compatible lifecycle behavior.
Key distinctions and trade-offs
Standard service integration versus team policy: The requirement, not the service, decides:
| Requirement | Choose | Because |
|---|---|---|
| Search issues, read discussions, list repositories | A verified maintained server | The standard operations already exist |
| Close an incident only after team approval checks | A focused custom operation | The eligibility rule is the team’s own |
| Data only the team holds, such as service ownership | A custom server | No existing integration exposes it |
Discovery versus adoption: A reviewed connector listing helps find a candidate. The chosen version, destination, authentication, tool contract, and observed behavior determine whether it fits your deployment.
Protocol server versus in-process SDK server: HTTP and stdio configurations support separate server connections. type: "sdk" requires an SDK host and is skipped by terminal Claude Code configuration.
Reusing a suitable maintained server avoids duplicating standard behavior. Custom ownership buys control over a specialized contract, but you also own its implementation, documentation, and continued compatibility.
Architecture / decision scenario
A developer productivity team needs issue search for code review and a special incident-close workflow. It evaluates an existing issue integration for searching, reading discussions, and returning source identifiers. Those standard operations satisfy the review use case, so the team retains the existing server rather than recreating them.
The incident-close requirement includes team-specific approval and reconciliation checks. The team exposes one custom action whose implementation obtains that evidence and refuses execution when it is absent. The standard integration remains useful for ordinary reads; its general close operation is not presented as implementing the specialized contract.
The team wants both Claude Code and an automated SDK worker to invoke the custom operation, so it chooses a compatible HTTP or stdio server. If it instead selects an in-process SDK server, it records that terminal Claude Code cannot register it through type: "sdk". Evaluation inspects the selected calls and results for both standard retrieval and the custom rejection path, rather than celebrating that the servers merely connected.
Common exam traps
- Building a custom server solely because the integration is important.
- Assuming every community server with a service name exposes the needed contract.
- Treating Directory inclusion as proof of every deployment requirement.
- Replacing business-rule enforcement with descriptions or permission pre-approval.
- Copying an in-process SDK server configuration into terminal Claude Code.
Where the exam guide differs
The exam guide (version 1.0, effective July 2026, first drafted in February 2026) names no MCP revision; it was written while revision 2025-11-25 was the published specification. This lesson cites revision 2026-07-28, a later revision, and the differences between the two do not change what it teaches for the exam. Both revisions define a tool by name, description, inputSchema, and an optional outputSchema; revision 2026-07-28 loosens the two schemas to accept any JSON Schema 2020-12 keywords, which does not change how you compare a candidate server’s contract.
What to remember
Reuse a verified maintained integration for standard service capabilities. Own a custom server when the team’s contract requires operations the available integrations do not faithfully provide. Check descriptions, schemas, implementation behavior, trust, and host compatibility before deciding that either option meets the workflow.
Knowledge check
A team needs issue search and issue discussions for code review. An existing MCP server, verified as maintained and reviewed for trust, exposes exactly those operations with the fields the workflow needs. The tech lead proposes a custom server because the integration is business-critical. Which choice meets the requirement with the least duplicate implementation to maintain?
The same team must close incidents only after the release owner has approved the linked fix and the affected customer cases are reconciled. The maintained issue server offers a general close_issue tool. Which design enforces these checks while minimizing duplication of standard operations?
close_issue tool and state the approval rule in the system promptclose_issue tool and pre-approve it in allowedTools for the agentA community MCP server marks every tool with readOnlyHint: true. A reviewer argues that this settles the server’s safety review. Which assessment is correct?
annotations describe tool behaviour, and the specification tells clients to consider them untrusted unless they come from trusted servers. They are not a review and say nothing about returned content: a server that fetches external content can still carry prompt injection. The implementation and destination still need checking.A team built its incident-close tool with createSdkMcpServer() for an Agent SDK worker. Engineers now want the same operation in terminal Claude Code, so one of them copies the worker’s "type": "sdk" entry into the project’s .mcp.json. What happens, and what should the team do?
~/.claude.json insteadallowedTools names its tools; add them to settings"type": "sdk" server. Claude Code skips such an entry in .mcp.json , ~/.claude.json or settings and reports that only an SDK host can register it, whatever the scope or permission rules. A separate HTTP or stdio server is a mechanism both terminal Claude Code and the SDK worker can connect to.References
- Anthropic, Connect Claude Code to tools via MCP
- Anthropic, Connect to external tools with MCP
- Model Context Protocol, Tools, protocol revision 2026-07-28
- Anthropic, Writing effective tools for agents
- Anthropic, Give Claude custom tools
- Model Context Protocol, Key Changes, protocol revision 2026-07-28
- Anthropic, Claude Certified Architect – Foundations Exam Guide