Skip to main content
Glama
README.md5.82 kB
# JSON Editor MCP A Model Context Protocol (MCP) server for editing JSON files with read, write, and deep merge capabilities. Perfect for managing multilingual Next.js projects and other JSON-based configurations. > **Note:** This is an actively developed tool. Feature requests and bug reports are welcome! File issues on [GitHub](https://github.com/peternagy1332/json-editor-mcp/issues). ## Problems This Solves - 💰 **Significant token savings**: Edit specific JSON paths instead of reading/writing entire files - ⚡ **Efficient operations**: ~100 tokens per edit vs 4,000+ tokens for full file operations - 📦 **Handles large files**: Large translation files may not fit into context windows; targeted operations work regardless of file size - 🚀 **Faster edits**: Avoids slow network round-trips from reading/writing entire files - 🔑 **Prevents duplicate keys**: AI can't see full translation JSON and creates duplicates; targeted operations avoid this issue - 🔍 **Targeted reads**: Read only the values you need using dot notation paths - ✏️ **Targeted writes**: Update only specific paths, automatically creates missing nested structures - 🗑️ **Targeted deletes**: Remove specific paths from JSON files - 🔀 **Deep merge support**: Merge duplicate keys with recursive object merging - 📚 **Multi-file operations**: Read, write, or delete the same path from multiple JSON files efficiently - 📘 **TypeScript support**: Full type definitions included - 🤖 **MCP compliant**: Works with AI assistants (Cursor, Claude, ChatGPT) and development tools ## Installation ```bash bun add json-editor-mcp ``` ## Usage ### MCP Server Configuration Add to your MCP client configuration: ```json { "mcpServers": { "json-editor": { "command": "bunx", "args": ["json-editor-mcp"] } } } ``` ### Cursor Rules Integration Copy the rule file to your project to ensure AI assistants use MCP tools: ```bash cp .cursor/rules/json-editor-mcp.mdc /path/to/your/project/.cursor/rules/ ``` ## Tools ### `read_multiple_json_values` Reads the same dot notation path from one or more JSON files in a single operation. Returns a map with file paths as keys and the extracted values as values. Useful for comparing translations across language files or reading from a single file. **Note:** For single file operations, pass an array with one file path: `["messages/en.json"]` **Input JSON files:** **messages/en.json:** ```json { "common": { "welcome": "Welcome" } } ``` **messages/es.json:** ```json { "common": { "welcome": "Bienvenido" } } ``` **Tool call:** ``` read_multiple_json_values(["messages/en.json", "messages/es.json"], "common.welcome") ``` **Output:** ```json { "messages/en.json": "Welcome", "messages/es.json": "Bienvenido" } ``` **Single file example:** ``` read_multiple_json_values(["messages/en.json"], "common.welcome") ``` **Output:** ```json { "messages/en.json": "Welcome" } ``` ### `write_json_values` Writes a value to a JSON file at a specified dot notation path. Automatically creates missing nested paths and preserves existing structure. **Input JSON (messages/en.json):** ```json { "common": { "welcome": "Welcome" } } ``` **Tool call:** ``` write_json_values("/absolute/path/to/messages/en.json", "pages.about.title", "About Us") ``` **Output JSON (messages/en.json):** ```json { "common": { "welcome": "Welcome" }, "pages": { "about": { "title": "About Us" } } } ``` **Output:** ``` Successfully wrote to /absolute/path/to/messages/en.json ``` ### `delete_multiple_json_values` Deletes a value at a specified dot notation path from one or more JSON files. Returns a map with file paths as keys and deletion results as values. **Note:** For single file operations, pass an array with one file path: `["messages/en.json"]` **Input JSON files:** **messages/en.json:** ```json { "common": { "welcome": "Welcome", "goodbye": "Goodbye" } } ``` **messages/es.json:** ```json { "common": { "welcome": "Bienvenido", "goodbye": "Adiós" } } ``` **Tool call:** ``` delete_multiple_json_values(["messages/en.json", "messages/es.json"], "common.goodbye") ``` **Output:** ```json { "messages/en.json": "Successfully deleted", "messages/es.json": "Successfully deleted" } ``` **Output JSON files:** **messages/en.json:** ```json { "common": { "welcome": "Welcome" } } ``` **messages/es.json:** ```json { "common": { "welcome": "Bienvenido" } } ``` ### `merge_duplicate_keys` Performs a deep merge of duplicate keys in a JSON file. Primitives use last-value-wins, objects merge recursively, and arrays use last-value-wins. Useful when AI assistants create duplicate keys because they can't see the full file structure. **Input JSON (messages/en.json):** ```json { "common": { "welcome": "Welcome" }, "common": { "goodbye": "Goodbye" } } ``` **Tool call:** ``` merge_duplicate_keys("messages/en.json") ``` **Output JSON (messages/en.json):** ```json { "common": { "welcome": "Welcome", "goodbye": "Goodbye" } } ``` ## API Reference **Path Notation:** Dot notation for nested paths (e.g., `"common.welcome"`, `"pages.home.title"`) **Error Handling:** - File not found: Creates empty object `{}` for reads - Invalid JSON: Returns error message - Path not found: Error for reads, auto-creates for writes **Deep Merge:** Primitives last-value-wins, objects merge recursively, arrays last-value-wins ## Development ```bash git clone https://github.com/peternagy1332/json-editor-mcp.git cd json-editor-mcp bun install bun run build ``` ## License MIT License - see [LICENSE](LICENSE) file for details. ## Support File issues on [GitHub](https://github.com/peternagy1332/json-editor-mcp/issues).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/peternagy1332/json-editor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server