mcp-json-yaml-toml
A token-efficient, schema-aware MCP server that enables AI assistants to safely read, modify, query, and validate JSON, YAML, and TOML files with automatic schema detection and format conversion capabilities.
README
<p align="center"> <img src=".github/logo.png" alt="JYT Logo" width="600"> </p>
<h1 align="center">mcp-json-yaml-toml</h1>
<p align="center"> <em>A token-efficient, schema-aware MCP server for safely reading and modifying JSON, YAML, and TOML files</em> </p>
<p align="center"> <a href="#getting-started">Getting Started</a> • <a href="#claude-code-cli">CLI Usage</a> • <a href="#available-tools">Available Tools</a> • <a href="#development">Development</a> </p>
<p align="center"> <a href="https://github.com/bitflight-devops/mcp-json-yaml-toml/actions/workflows/test.yml"><img src="https://github.com/bitflight-devops/mcp-json-yaml-toml/actions/workflows/test.yml/badge.svg" alt="Test"></a> <a href="https://github.com/bitflight-devops/mcp-json-yaml-toml/actions/workflows/auto-publish.yml"><img src="https://github.com/bitflight-devops/mcp-json-yaml-toml/actions/workflows/auto-publish.yml/badge.svg" alt="Publish"></a> <a href="https://badge.fury.io/py/mcp-json-yaml-toml"><img src="https://badge.fury.io/py/mcp-json-yaml-toml.svg" alt="PyPI version"></a> </p>
Stop AI coding tools from breaking your data files. No more grep guesswork, hallucinated fields, or non-schema-compliant data added to files. This MCP server gives AI assistants a strict, round-trip safe interface for working with structured data.
The Problem
AI coding tools often destroy structured data files:
- They grep through huge json, yaml, and toml files (like json logs, or AI transcript files) and guess at keys.
- They hallucinate fields that never existed.
- They use sed and regex that leave files in invalid states.
- They break YAML indentation and TOML syntax.
- They can't validate changes before writing.
The Solution
mcp-json-yaml-toml provides AI assistants with proper tools for structured data:
- Token-efficient: Extract exactly what you need without loading entire files.
- Schema validation: Enforce correctness using SchemaStore.org or custom schemas.
- Safe modifications: Enforced validation on write; preserve comments and formatting.
- Multi-format: JSON, YAML, and TOML through a unified interface.
- Directive-based detection: Support for
# yaml-language-server,#:schema, and$schemakeys in all formats. - Constraint-based guided generation: Native LMQL support for proactive validation of partial inputs.
- Local-First: All processing happens locally. No data ever leaves your machine.
- Transparent JIT Assets: The server auto-downloads
yqif missing and fetches missing schemas from SchemaStore.org for local caching.
[!NOTE]
JSONC Support: Files with
.jsoncextension (JSON with Comments) are fully supported for reading, querying, and schema validation. However, write operations will strip comments due to library limitations.
Getting Started
Prerequisites
- Python ≥ 3.11 installed.
- An MCP-compatible client (Claude Code, Cursor, Windsurf, Gemini 2.0, n8n, etc.).
Installation
The server uses uvx for automatic dependency management and zero-config execution.
AI Agents & CLI Tools
uvx mcp-json-yaml-toml
Claude Code (CLI)
claude mcp add --scope user mcp-json-yaml-toml -- uvx mcp-json-yaml-toml
Other MCP Clients
Add this to your client's MCP configuration:
{
"mcpServers": {
"json-yaml-toml": {
"command": "uvx",
"args": ["mcp-json-yaml-toml"]
}
}
}
[!TIP] See docs/clients.md for detailed setup guides for Cursor, VS Code, and more.
Schema Discovery & Recognition
The server automatically identifies the correct JSON schema for your files using multiple strategies:
- Directives: Recognizes
# yaml-language-server: $schema=...and#:schema ...directives. - In-File Keys: Detects
$schemakeys in JSON and YAML (also supports quoted"$schema"in TOML). - Local IDE Config: Discovers schemas from VS Code/Cursor extension settings and caches.
- SchemaStore.org: Performs glob-based auto-detection against thousands of known formats.
- Manual Association: Use the
data_schematool to bind a file to a specific schema URL or name.
LMQL & Guided Generation
This server provides native support for LMQL (Language Model Query Language) to enable Guided Generation. This allows AI agents to validate partial inputs (e.g., path expressions) incrementally before execution.
- Incremental Validation: Check partial inputs (e.g.,
.data.us) and get the remaining pattern needed. - Improved Reliability: Eliminate syntax errors by guiding the LLM toward valid tool inputs.
- Rich Feedback: Get suggestions and detailed error messages for common mistakes.
[!TIP] See the Deep Dive: LMQL Constraints for detailed usage examples.
Available Tools
| Tool | Description |
|---|---|
data |
Get, set, or delete values at specific paths |
data_query |
Advanced yq/jq expressions for transformations |
data_schema |
Manage schemas and validate files |
data_convert |
Convert between JSON, YAML, and TOML |
data_merge |
Deep merge structured data files |
constraint_validate |
Validate inputs against LMQL constraints |
constraint_list |
List available generation constraints |
[!NOTE] Conversion TO TOML is not supported due to yq's internal encoder limitations for complex structures.
Development
Setup
git clone https://github.com/bitflight-devops/mcp-json-yaml-toml.git
cd mcp-json-yaml-toml
uv sync
Testing
ash
Run all tests (coverage included)
uv run pytest
### Code Quality
The project uses `prek` (a Rust-based pre-commit tool) for unified linting and formatting. AI Agents MUST use the scoped verification command:
```bash
# Recommended: Verify only touched files
uv run prek run --files <file edited>
[!IMPORTANT] Avoid
--all-filesduring feature development to keep PR diffs clean and preserve git history.
Project Structure
mcp-json-yaml-toml/
├── packages/mcp_json_yaml_toml/ # Core logic
│ ├── server.py # MCP implementation
│ ├── yq_wrapper.py # Binary management
│ ├── schemas.py # Schema validation
├── .github/ # CI/CD and assets
├── docs/ # Documentation
└── pyproject.toml # Project config
# Run all tests (coverage included)
uv run pytest
Code Quality
The project uses prek (a Rust-based pre-commit tool) for unified linting and formatting. AI Agents MUST use the scoped verification command:
# Recommended: Verify only touched files
uv run prek run --files <file edited>
[!IMPORTANT] Avoid
--all-filesduring feature development to keep PR diffs clean and preserve git history.
Project Structure
graph TD
Repo[mcp-json-yaml-toml]
Repo --> Packages[packages/mcp_json_yaml_toml]
Repo --> Github[.github]
Repo --> Docs[docs]
Repo --> Config[pyproject.toml]
subgraph "Core Logic"
Packages --> Server[server.py<br/>MCP Server & Tools]
Packages --> Schemas[schemas.py<br/>Schema Validation]
Packages --> Constraints[lmql_constraints.py<br/>LMQL Constraints]
Packages --> YQ[yq_wrapper.py<br/>Binary Manager]
Packages --> YAML[yaml_optimizer.py<br/>YAML Anchors]
Packages --> TOML[toml_utils.py<br/>TOML Utils]
Packages --> Conf[config.py<br/>Config Manager]
end
style Packages fill:#f9f,stroke:#333,stroke-width:2px
style Repo fill:#eee,stroke:#333,stroke-width:4px
<p align="center"> Built with <a href="https://github.com/jlowin/fastmcp">FastMCP</a>, <a href="https://github.com/mikefarah/yq">yq</a>, and <a href="https://github.com/eth-sri/lmql">LMQL</a> </p>
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。