# MCP Config Validator

Paste your `claude_desktop_config.json`. Catch JSON errors, missing fields, and typos before they break your setup. Runs in your browser. Your API keys never leave the page.

Examples:

Paste a config to validate

## What the validator checks

- **JSON syntax**: reports the line and column of the first error.
- **Top-level shape**: the root must be an object with a `mcpServers` key. Common typos like `mcp_servers` or `servers` are flagged.
- **Server shape**: each server defines either `command` (local/stdio) or `url` (remote). Pick one, never both.
- **Field types**: `args` is an array of strings, `env` and `headers` are objects mapping strings to strings.
- **Transport**: `type` or `transport` must be one of `stdio`, `sse`, `http`, `streamable-http`, or `websocket`.
- **URLs**: must be `http://` or `https://`. Non-local `http://` gets a warning.
- **Common mistakes**: placeholder env values (`"your-api-key"`, `"<token>"`), `npx` without `-y`, and unknown keys on a server entry.

## Which MCP clients use this format?

The `mcpServers` shape is the de-facto standard, used by:

- **Claude Desktop**: `claude_desktop_config.json`. Edit from **Settings → Developer → Edit Config**.
- **Claude Code**: `.mcp.json` (project) or the file managed by `claude mcp add`.
- **Cursor**: `~/.cursor/mcp.json` or `.cursor/mcp.json` per workspace.
- **Codex CLI**, **Windsurf**, **Zed**, and most other MCP-compatible clients use the same top-level shape.

## Common questions

**What is an MCP config file?**

A JSON file that tells an MCP client like Claude Desktop, Claude Code, or Cursor which servers to connect to. The standard shape is a top-level "mcpServers" object where each key is a server name.

**Where is claude_desktop_config.json?**

On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows: %APPDATA%\\Claude\\claude_desktop_config.json. Claude Desktop creates it the first time you edit the config.

**Does this tool send my config anywhere?**

No. Validation runs entirely in your browser with JavaScript. Your API keys, tokens, and environment variables never leave the page.

**What is the difference between a local and a remote MCP server?**

A local (stdio) server runs as a subprocess on your machine and uses "command" and "args". A remote server runs on the internet and uses "url" with an "http" or "sse" transport. You cannot use both "command" and "url" on the same server.

**Why does the validator warn me about "npx" without "-y"?**

Without "-y", npx will prompt interactively on first run to install the package. MCP clients cannot answer that prompt, so the server fails to start. Adding "-y" (or "--yes") skips the prompt.

## Add Hjarni as a server

Hjarni is a simple knowledge base with an official MCP server. Claude and ChatGPT read your notes, search them, and write new ones. Across every conversation.

```
{
  "mcpServers": {
    "hjarni": {
      "url": "https://hjarni.com/mcp",
      "type": "http"
    }
  }
}
```

New to MCP setup? See [Use Hjarni with Claude](https://hjarni.com/docs/claude) or [Use Hjarni with ChatGPT](https://hjarni.com/docs/chatgpt).

Give your AI a memory

## Your notes on every device

**Hjarni has its own native apps.** Free on every plan for [iPhone, iPad and Apple Silicon Mac](https://apps.apple.com/app/id6761733903) and [Android](https://play.google.com/store/apps/details?id=com.hjarni.app). Same account, same notes as the web. An internet connection is required.
