Connect Claude Agent SDK
Use ShipMCP as an MCP server in agents you build with the Claude Agent SDK. Pure config — no glue code.
Configure the MCP server
Pass the endpoint as an entry in mcpServers when you build the agent. The SDK handles the JSON-RPC envelope, tool listing, and tool dispatch — your agent just sees ShipMCP's tools alongside any others you've configured.
import { Agent } from "@anthropic-ai/claude-agent-sdk";
const agent = new Agent({
model: "claude-sonnet-4-5",
mcpServers: {
shipmcp: {
type: "http",
url: "https://mcp.shipmcp.io/<your-slug>/mcp",
headers: {
Authorization: "Bearer " + process.env.SHIPMCP_TOKEN,
},
},
},
});
// Tools from your endpoint are automatically visible to the agent.
const result = await agent.run({
prompt: "Summarize the most recent 10 documents in the corpus.",
}); Where to get the token
From /endpoints → pick your endpoint → API tokens card → New token. Tokens minted from the dashboard are mcp scope (read-only). For write/ingest tools, run an OAuth flow with scope=mcp:write and use the resulting access token instead — see OAuth 2.0.
Multiple endpoints
An agent can speak to as many ShipMCP endpoints as you want — each one shows up as a separate entry in mcpServers. Tools are automatically namespaced by the SDK, so no name collisions when two endpoints both have a list_documents.
mcpServers: {
shipmcp_docs: { type: "http", url: "https://mcp.shipmcp.io/team-docs-a3z9/mcp", headers: { ... } },
shipmcp_tickets: { type: "http", url: "https://mcp.shipmcp.io/zendesk-export-bv9a5/mcp", headers: { ... } },
} Testing locally
The same config works in tests — just point the SDK at a test-tier endpoint with a separate token. ShipMCP doesn't have a sandbox mode; provision a free-tier endpoint and use it as the test target.
Reference
Anthropic SDK docs: docs.claude.com/en/api/agent-sdk/overview. Their mcpServers field accepts the same shape Claude Desktop and Claude Code use, so configs are portable across all three.