Skip to main content
Glama
vcosmin2701

jsony-mcp

by vcosmin2701

MCP JSON Server

A Model Context Protocol (MCP) server that provides tools for managing JSON data files. This server allows AI assistants like Claude to read, write, query, and manage JSON files in a structured way.

Features

  • Add JSON Objects: Add new objects to JSON files with automatic ID and timestamp generation

  • Query Objects: Search for objects by property values

  • Update Objects: Modify existing objects by index

  • Delete Objects: Remove objects from JSON files

  • List Files: View all available JSON files

  • Retrieve Objects: Get all objects from a specific file

Related MCP server: MCP JSON Maker

Installation

Option 1: Install from npm

npm install -g jsony-mcp

Option 2: Local Development

git clone https://github.com/vcosmin2701/jsony-mcp
cd mcp-json-server
npm install
npm run build

Configuration

Claude Desktop Configuration

Add the server to your Claude desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "json-manager": {
      "command": "jsony-mcp"
    }
  }
}

For local development:

{
  "mcpServers": {
    "json-manager": {
      "command": "node",
      "args": ["/path/to/mcp-json-server/dist/server.js"]
    }
  }
}

Data Directory

By default, JSON files are stored in ~/.mcp-json-server/data/

You can customize this location using the MCP_JSON_DATA_DIR environment variable:

{
  "mcpServers": {
    "json-manager": {
      "command": "jsony-mcp",
      "env": {
        "MCP_JSON_DATA_DIR": "/custom/path/to/data"
      }
    }
  }
}

Usage

Once configured, Claude can use the following tools:

add_json_object

Add a new object to a JSON file:

Add to todos.json: {"title": "Buy groceries", "completed": false}

get_json_objects

Retrieve all objects from a file:

Get all items from todos.json

query_json_objects

Search for objects by property:

Find all completed tasks in todos.json

update_json_object

Update an object at a specific index:

Update index 0 in todos.json: set completed to true

delete_json_object

Remove an object by index:

Delete item at index 2 from todos.json

list_json_files

List all available JSON files:

Show me all JSON files

Architecture

The server follows clean code principles and SOLID design patterns:

  • Separation of Concerns: Modular architecture with distinct layers

  • Dependency Injection: Improved testability and maintainability

  • Strategy Pattern: Extensible tool handler system

  • Repository Pattern: Abstracted data access layer

  • Error Handling: Custom error types with proper propagation

See ARCHITECTURE.md for detailed documentation.

Development

Build

npm run build

Run in Development

npm run dev

Test Locally

npm start

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Commit your changes

  4. Push to the branch

  5. Create a Pull Request

License

MIT

Author

Vladut Cosmin

Available Tools

6 tools
add_json_objectB

Add a JSON object to a specified file

ParametersJSON Schema
NameRequiredDescriptionDefault
objectYesJSON object to add
filenameYesName of the JSON file (with .json extension)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'Add' without explaining whether the operation appends, overwrites, requires the file to already exist, or how duplicates are handled. For a mutation tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the core action. No wasted words, making it appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations. The description does not explain return values, error behavior, or side effects like file creation. Given the nested object parameter and CRUD sibling context, this is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters have clear descriptions. The description does not add additional meaning beyond the schema—it merely restates the action. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add a JSON object') and the resource ('a specified file'). It distinguishes from siblings like update_json_object and delete_json_object by using 'add' as the verb, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for adding new objects, but provides no explicit guidance on when to use this tool versus alternatives like update_json_object or delete_json_object. No exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_json_objectB

Delete a JSON object by index

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesIndex of the object to delete
filenameYesName of the JSON file (with .json extension)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but does not disclose behavioral details like in-place file modification, irreversibility, or handling of out-of-bounds index. It only states the action without side-effect context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the action and target. It avoids waste, though it lacks supplementary context; it is appropriately sized for a simple operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description leaves out important context like return value or error behavior. However, the schema fully covers the parameters, and the operation is conceptually simple, making the description minimally viable but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the schema (filename and index). The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'delete' and identifies the resource 'JSON object' with the method 'by index'. This clearly distinguishes it from sibling tools like add, get, query, and update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not specify prerequisites such as file existence or valid index, nor does it mention when to prefer a different tool. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_json_objectsA

Retrieve all objects from a JSON file

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesName of the JSON file (with .json extension)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly indicates a read operation ('retrieve') and scopes to all objects, but it doesn't disclose error handling, return format, or confirm non-destructive behavior explicitly. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that immediately states the action and scope. There is no wasted wording, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one parameter and no output schema, the description is nearly complete. It could mention return format or error behavior, but the context is sufficient for an agent to understand the tool's basic function and role among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single parameter 'filename' with a clear description. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Retrieve all objects from a JSON file' uses a specific verb (retrieve) and clearly identifies the resource (objects from a JSON file). It also distinguishes itself from sibling tools like query_json_objects by explicitly stating 'all' objects, implying no filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need all objects from a JSON file, but it does not explicitly mention alternatives or when not to use it. For example, it doesn't say 'for filtered queries, use query_json_objects instead,' leaving the differentiation to implication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_json_filesA

List all available JSON files

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only states the operation is listing files, but doesn't mention return format, whether it's read-only, pagination, or performance implications. This is a minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. It directly states the tool's function, making it efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-only tool with no params and no output schema, the description gives the core purpose but lacks detail on the return value (e.g., file names, paths) or any usage context. It's minimally complete but leaves the agent guessing about the result format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the empty schema fully covers parameter space. The description doesn't need to explain any parameters, and this is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('list') and resource ('JSON files'), clearly distinguishing it from sibling tools that add/get/query/update/delete JSON objects. The scope 'all available' adds clarity about the operation's extent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like query_json_objects or get_json_objects. No context is given about typical use cases or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_json_objectsC

Query JSON objects based on property values

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesValue to search for (can be string, number, boolean)
filenameYesName of the JSON file (with .json extension)
propertyYesProperty name to search by

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It does not explain whether the query is exact or partial match, returns one or all matching objects, how missing properties are handled, or whether it is a read-only operation. This leaves significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately conveys the core action, with no fluff or redundancy. It is appropriately sized for a simple query tool, though it sacrifices detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should clarify what the query returns (e.g., matching objects, count, success/failure) and the matching semantics. The current description is too sparse to fully specify the tool's behavior, making it incomplete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (filename, property, value) have descriptions in the schema, achieving 100% schema coverage. The description adds no additional parameter semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a query operation on JSON objects based on property values, which distinguishes it from sibling mutation tools like add/update/delete. However, it does not explicitly mention that it returns matching objects, so there is slight ambiguity about the exactly returned output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus siblings such as get_json_objects or list_json_files. No exclusions or alternative recommendations are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_json_objectB

Update a JSON object by index

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesIndex of the object to update
updatesYesProperties to update
filenameYesName of the JSON file (with .json extension)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full responsibility for disclosing side effects. It does not state whether the file is modified, how out-of-bounds indexes are handled, or whether updates are merged or replace existing properties. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundant words, front-loading the action and target. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema and annotations, and the description does not cover important details such as file path resolution, index semantics, or error behavior. The sibling tools give context but the description alone is insufficient for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all three parameters, and the description adds no new meaning beyond the phrase 'by index', which echoes the schema. With 100% schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (update) and resource (JSON object) with a locator (by index), distinguishing it from siblings like add/delete/query/list. It is unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as needing to retrieve the index first via get_json_objects or using delete/add instead. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.4
    • First observedadd_json_object
    • First observeddelete_json_object
    • First observedget_json_objects
    • First observedlist_json_files
    • First observedquery_json_objects
    • First observedupdate_json_object

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: add, get all, query, update, delete, and list files. There is no overlap in purpose; even get_json_objects and query_json_objects are clearly different (retrieve all vs. filter by properties).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: add_json_object, get_json_objects, query_json_objects, update_json_object, delete_json_object, list_json_files. The use of singular/plural is logical (action on single vs. multiple).

Tool Count5/5

Six tools is well-scoped for a JSON file management server, covering essential CRUD operations plus query and file listing without unnecessary bloat.

Completeness4/5

The core CRUD lifecycle is covered: add, get, update, delete, plus query and list files. A minor gap is the lack of a dedicated get-by-index or file deletion, but these can be worked around with existing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables users to manage data in a simple JSON file database through MCP tools and REST API. Supports creating, reading, updating, and deleting items organized in collections with auto-generated UUIDs.
    -
  • -
    license
    C
    quality
    Not graded
    maintenance
    Enables AI to create, edit, and batch generate JSON data with advanced rule engines. Supports CRUD operations, node-level editing, template management, and multi-format file exports (JSON, JSONL, CSV).
    3
    179 npm
    -