Skip to content
Language

Getting started

Connecting your agent

One line of config, no SDK, no key. Mockd speaks the same protocol as the server it stands in for. Your client can't tell the difference.

The config

Every session gets its own address. The demo creates one for you and hands you the finished snippet:

claude_desktop_config.json
{
  "mcpServers": {
    "mockd-hubspot": {
      "url": "https://mock.mock-d.com/s/<session-token>/mcp"
    }
  }
}
  • The section is named the same in every client. Claude, Cursor, the OpenAI Agents SDK, LangGraph — anything that speaks MCP knows it.
  • The entry name is yours to pick. Mockd suggests a prefixed one so it stays obvious in your client where the tools came from.
  • There's no header and no API key. The token lives in the path.

What happens on connect

Three messages and you're running, the same three your client exchanges with the real server.

Mockd serves the tool side of the protocol: listing tools and calling them. Prompts and resources from the MCP specification aren't exposed. A server that mocks tools doesn't need them.

Arguments are validated

Before a tool call runs, its arguments are checked against the tool's real JSON schema. Send text where a number is expected and your agent gets an error back before anything happens.

That's deliberate. A mock more forgiving than the original lets agents through that would fail in production. This is exactly the class of bug that should surface here.

The connector: an address that stays

A session address covers one run. If you want Mockd to sit in your client config permanently, use a connector instead:

claude_desktop_config.json
{
  "mcpServers": {
    "mockd-hubspot": {
      "url": "https://mock.mock-d.com/c/<connector-token>/mcp"
    }
  }
}

The address stays constant, the run behind it doesn't. If the last one is still active you join it; if it's over, the next tool call starts a fresh session with fresh data.