Skip to main content
Glama
mhabedini

JSON to TOON MCP Server

by mhabedini
README.md
# JSON to TOON MCP Server

A Model Context Protocol (MCP) server that provides tools for converting JSON data to TOON (Token-Oriented Object Notation) format. TOON is a token-efficient format designed specifically for LLM applications, reducing token usage by 30-60% compared to JSON.

## Features

- **JSON to TOON Conversion**: Convert JSON data to TOON format with customizable options
- **TOON to JSON Conversion**: Convert TOON format back to JSON
- **Token Savings Analysis**: Analyze potential token savings before conversion
- **MCP Protocol Support**: Full MCP server implementation for integration with LLM applications

## Quick Start

### 1. Install the Package
```bash
npm install -g json-to-toon-mcp-server
```

### 2. Configure Claude Desktop
Add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "json-to-toon": {
      "command": "npx",
      "args": ["json-to-toon-mcp-server"]
    }
  }
}
```

### 3. Restart Claude Desktop
Restart Claude Desktop and the MCP server will be available.

## Installation

```bash
npm install
```

## Usage

### Running the Server

```bash
npm start
```

The server runs on stdio and can be connected to any MCP client.

### Available Tools

#### 1. `convert_json_to_toon`

Converts JSON data to TOON format.

**Parameters:**
- `json_data` (string, required): JSON data to convert
- `options` (object, optional): Conversion options
  - `delimiter` (string): Delimiter for tabular arrays (default: ",")
  - `indentation` (string): Indentation string (default: "  ")
  - `show_length_markers` (boolean): Show length markers [N] for arrays (default: true)

**Example:**
```json
{
  "json_data": "{\"users\": [{\"id\": 1, \"name\": \"Alice\"}]}",
  "options": {
    "delimiter": ",",
    "show_length_markers": true
  }
}
```

#### 2. `convert_toon_to_json`

Converts TOON format back to JSON.

**Parameters:**
- `toon_data` (string, required): TOON data to convert

**Example:**
```json
{
  "toon_data": "users[1]{id,name}:\n  1,Alice"
}
```

#### 3. `analyze_token_savings`

Analyzes potential token savings when converting JSON to TOON.

**Parameters:**
- `json_data` (string, required): JSON data to analyze

**Example:**
```json
{
  "json_data": "{\"users\": [{\"id\": 1, \"name\": \"Alice\"}]}}"
}
```

## Example Conversions

### JSON to TOON

**JSON Input:**
```json
{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "user" }
  ]
}
```

**TOON Output:**
```
users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user
```

### Token Savings

The TOON format typically reduces token usage by 30-60% compared to JSON, making it ideal for LLM applications where token efficiency is important.

## Development

### Running Tests

```bash
npm test
```

### Development Mode

```bash
npm run dev
```

## Integration with MCP Clients

This server can be integrated with any MCP-compatible client. The server communicates via stdio, making it suitable for integration with various LLM applications and development tools.

### Manual Configuration for Claude Desktop

To add this MCP server to Claude Desktop manually, add the following configuration to your `claude_desktop_config.json` file.

**Config file locations:**
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`

To add this MCP server to Claude Desktop manually, add the following configuration to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "json-to-toon": {
      "command": "npx",
      "args": ["json-to-toon-mcp-server"],
      "env": {}
    }
  }
}
```

**Alternative configuration using local installation:**

```json
{
  "mcpServers": {
    "json-to-toon": {
      "command": "node",
      "args": ["/path/to/json-to-toon-mcp-server/index.js"],
      "env": {}
    }
  }
}
```

**Configuration for development (from source):**

```json
{
  "mcpServers": {
    "json-to-toon": {
      "command": "node",
      "args": ["index.js"],
      "cwd": "/path/to/json-to-toon-mcp-server"
    }
  }
}
```

### Configuration Notes

- Replace `/path/to/json-to-toon-mcp-server` with the actual path to your installation
- The `npx` method requires the package to be installed globally (`npm install -g json-to-toon-mcp-server`)
- The server communicates via stdio, so no additional network configuration is needed
- After adding the configuration, restart Claude Desktop for changes to take effect

## TOON Format Benefits

- **Token Efficient**: 30-60% fewer tokens than JSON
- **LLM-Friendly**: Structured format that's easy for LLMs to parse
- **Lossless**: Full bidirectional conversion between JSON and TOON
- **Human Readable**: Maintains readability while being compact
- **Schema Aware**: Explicit structure declarations help with validation

## License

MIT

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyze_token_savings is for analysis, convert_json_to_toon is for one-way conversion, and convert_toon_to_json is for reverse conversion. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (analyze_token_savings, convert_json_to_toon, convert_toon_to_json) with clear, descriptive terms. There are no deviations in naming style.

Tool Count4/5

Three tools are well-scoped for a JSON/TOON conversion server, covering analysis and bidirectional conversion. It feels slightly minimal but reasonable, as core operations are present without bloat.

Completeness5/5

The tool set provides complete coverage for the domain: analysis of token savings, conversion from JSON to TOON, and conversion back from TOON to JSON. There are no obvious gaps for the stated purpose of efficient LLM token usage.

Maintenance

ActivityInactive
ResponsivenessNo issues