JSON MCP Server
Un servidor MCP de alto rendimiento para operaciones integrales con archivos JSON, que incluye lectura, escritura y consultas avanzadas, optimizado para interacciones con LLM.
Documentación
JSON MCP Server
Un servidor de Protocolo de Contexto de Modelo (MCP) de alto rendimiento basado en Rust que proporciona operaciones integrales de archivos JSON optimizadas para interacciones con LLM. Este servidor permite a los LLM leer, escribir, consultar y manipular archivos JSON de manera eficiente, con soporte para conjuntos de datos extremadamente grandes y capacidades avanzadas de consulta.
🚀 Características
Herramientas JSON Principales
- 📖 json-read: Lee archivos JSON con filtrado JSONPath opcional y paginación
- ✏️ json-write: Escribe o actualiza archivos JSON con múltiples estrategias de fusión
- 🔍 json-query: Ejecuta consultas JSONPath complejas con varios formatos de salida
- ✅ json-validate: Valida la estructura y sintaxis JSON con diagnósticos detallados
- ❓ json-help: Sistema de ayuda interactivo con ejemplos completos y solución de problemas
Capacidades Clave
- Soporte para Archivos Grandes: Paginación eficiente y transmisión para archivos de cualquier tamaño
- Consultas JSONPath: Soporte completo de JSONPath para extracción y filtrado de datos complejos
- Escritura Flexible: Múltiples modos (reemplazar, fusión superficial, fusión profunda, agregar) con opciones de respaldo
- Optimizado para LLM: Mensajes de error detallados y ejemplos de uso para una interacción óptima con LLM
- Eficiencia de Memoria: Paginación inteligente que previene el desbordamiento de memoria en conjuntos de datos grandes
- Compatible con MCP: Soporte completo del Protocolo de Contexto de Modelo con manejo adecuado de errores
- Registro de Depuración: Registro de depuración basado en archivos para solución de problemas sin violar el protocolo MCP
📦 Instalación
Instalación Rápida
Mediante Cargo (Recomendado)
cargo install json-mcp-server
Mediante Script de Instalación
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/ciresnave/json-mcp-server/main/scripts/install.sh | bash
# Windows PowerShell
iwr https://raw.githubusercontent.com/ciresnave/json-mcp-server/main/scripts/install.ps1 | iex
Binarios Precompilados
Descargue binarios específicos para su plataforma desde GitHub Releases:
- Windows:
json-mcp-server-v{version}-x86_64-pc-windows-msvc.zip - macOS:
json-mcp-server-v{version}-x86_64-apple-darwin.tar.gz - Linux:
json-mcp-server-v{version}-x86_64-unknown-linux-gnu.tar.gz
Gestores de Paquetes
Debian/Ubuntu (paquetes .deb)
# Download and install .deb package
wget https://github.com/ciresnave/json-mcp-server/releases/latest/download/json-mcp-server_*_amd64.deb
sudo dpkg -i json-mcp-server_*_amd64.deb
RHEL/Fedora/CentOS (paquetes .rpm)
# Download and install .rpm package
wget https://github.com/ciresnave/json-mcp-server/releases/latest/download/json-mcp-server-*.x86_64.rpm
sudo rpm -i json-mcp-server-*.x86_64.rpm
Arch Linux (AUR)
# Manual install using PKGBUILD
wget https://github.com/ciresnave/json-mcp-server/releases/latest/download/PKGBUILD
makepkg -si
Compilación desde el Código Fuente
# Clone the repository
git clone https://github.com/ciresnave/json-mcp-server.git
cd json-mcp-server
# Build the project
cargo build --release
# Run the server
cargo run
Verificación
Después de la instalación, verifique que funciona:
json-mcp-server --version
json-mcp-server --help
Uso
El JSON MCP Server se comunica mediante JSON-RPC a través de stdin/stdout siguiendo la especificación del Protocolo de Contexto de Modelo.
Primeros Pasos
-
Inicie el servidor:
cargo run -
Obtenga ayuda: Use la herramienta
json-helppara conocer la funcionalidad disponible:{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "json-help", "arguments": {"topic": "overview"} } }
Ejemplos de Uso
Lectura de Archivos JSON
{
"name": "json-read",
"arguments": {
"file_path": "./data.json",
"json_path": "$.users[*].name",
"format": "pretty"
}
}
Escritura de Datos JSON
{
"name": "json-write",
"arguments": {
"file_path": "./config.json",
"data": {"setting": "value", "enabled": true},
"mode": "merge"
}
}
Consultas con JSONPath
{
"name": "json-query",
"arguments": {
"file_path": "./products.json",
"query": "$.products[?(@.price > 100)].name",
"format": "table"
}
}
Procesamiento de Archivos Grandes
{
"name": "json-read",
"arguments": {
"file_path": "./large-dataset.json",
"json_path": "$.records[*].id",
"limit": 1000,
"offset": 0
}
}
Referencia de Herramientas
json-read
Lee y analiza archivos JSON con filtrado JSONPath opcional y paginación.
Parámetros:
file_path(cadena, obligatorio): Ruta al archivo JSONjson_path(cadena, opcional): Expresión JSONPath para filtradostart_index(entero, opcional): Índice inicial para paginación (predeterminado: 0)limit(entero, opcional): Cantidad máxima de elementos a devolver (predeterminado: 1000)output_format(cadena, opcional): Formato de salida - "json", "pretty", "compact" (predeterminado: "json")
json-write
Escribe o actualiza archivos JSON con estrategias de fusión flexibles.
Parámetros:
file_path(cadena, obligatorio): Ruta al archivo JSONcontent(cadena, obligatorio): Contenido JSON a escribirmode(cadena, opcional): Modo de escritura - "replace", "merge_shallow", "merge_deep", "append" (predeterminado: "replace")
json-query
Ejecuta consultas JSONPath en archivos JSON con varios formatos de salida.
Parámetros:
file_path(cadena, obligatorio): Ruta al archivo JSONjson_path(cadena, obligatorio): Expresión de consulta JSONPathoutput_format(cadena, opcional): Formato de salida - "json", "pretty", "compact", "csv", "markdown" (predeterminado: "json")
json-validate
Valida la estructura y sintaxis de archivos JSON.
Parámetros:
file_path(cadena, obligatorio): Ruta al archivo JSON a validar
json-help
Obtenga ayuda completa sobre las herramientas disponibles y la sintaxis JSONPath.
Parámetros:
topic(cadena, opcional): Tema de ayuda - "overview", "tools", "jsonpath", "examples", "troubleshooting" (predeterminado: "overview")
Soporte JSONPath
El servidor admite la sintaxis JSONPath completa para consultar datos JSON:
$- Elemento raíz.field- Acceso a campos secundarios[index]- Acceso a índices de matriz[*]- Todos los elementos de la matriz..field- Descenso recursivo[?(@.field > value)]- Expresiones de filtro{field1, field2}- Proyección
Ejemplos JSONPath
# Get all user names
$.users[*].name
# Filter users over 25
$.users[?(@.age > 25)]
# Get nested data
$.data.items[*].details.price
# All prices anywhere in document
$..price
# Complex filtering
$.products[?(@.category == 'electronics' && @.price < 500)].name
Notas de Rendimiento
Manejo de Archivos Grandes
- Archivos de cualquier tamaño: La herramienta
json-readusa automáticamente transmisión para eficiencia de memoria - JSON delimitado por líneas: Se detecta y procesa automáticamente de manera eficiente
- Uso de memoria: La transmisión mantiene el uso de memoria constante independientemente del tamaño del archivo
Mejores Prácticas
- Use consultas JSONPath específicas para filtrar datos tempranamente
- Establezca límites razonables al procesar conjuntos de datos grandes
- Use offset para paginar a través de grandes conjuntos de resultados
- El servidor optimiza automáticamente según el tamaño del archivo y la memoria disponible
Manejo de Errores
El servidor proporciona mensajes de error detallados para ayudar a diagnosticar problemas:
- Archivo no encontrado: Orientación clara sobre resolución de rutas
- Errores de sintaxis JSON: Información de línea y columna cuando esté disponible
- Errores JSONPath: Validación de sintaxis y sugerencias
- Problemas de memoria: Orientación sobre alternativas de transmisión
Configuración del Cliente MCP
El JSON MCP Server funciona con cualquier cliente compatible con MCP. Guías de configuración detalladas están disponibles en el directorio examples/mcp_clients/:
Clientes Compatibles
- VS Code con GitHub Copilot - Guía de configuración completa
- Claude Desktop - Ejemplos de configuración y uso
- Cliente MCP Genérico - Guía de configuración universal
- Implementación Personalizada - Cree su propio cliente
Configuración Rápida
VS Code + GitHub Copilot:
{
"mcp.servers": {
"json-mcp-server": {
"path": "json-mcp-server"
}
}
}
Claude Desktop:
{
"mcpServers": {
"json-mcp-server": {
"command": "json-mcp-server",
"args": []
}
}
}
Para instrucciones de configuración detalladas, solución de problemas y configuraciones avanzadas, consulte las guías de cliente respectivas en el directorio examples/mcp_clients/.
Desarrollo
Estructura del Proyecto
json-mcp-server/
├── src/ # Source code
│ ├── main.rs # Application entry point and MCP server
│ ├── lib.rs # Library exports for testing
│ ├── mcp/ # MCP protocol implementation
│ │ ├── mod.rs
│ │ ├── protocol.rs # Protocol definitions and types
│ │ └── server.rs # MCP server implementation
│ └── json_tools/ # JSON tool implementations
│ ├── mod.rs
│ ├── handler.rs # Tool coordination and help system
│ ├── operations.rs # Read/write/validate operations
│ ├── query.rs # JSONPath querying with multiple formats
│ └── streaming.rs # Large file streaming and pagination
├── tests/ # Integration tests
│ └── integration_tests.rs
├── examples/ # Example configurations and data
│ ├── mcp_clients/ # Client configuration guides
│ │ ├── vscode.md # VS Code setup
│ │ ├── claude-desktop.md
│ │ ├── github-copilot.md
│ │ ├── generic.md # Generic MCP client setup
│ │ ├── client_implementation.md
│ │ └── python_client.py
│ ├── sample-data.json # Sample test data
│ ├── test-commands.jsonl
│ └── test-output.json
├── dev_tools/ # Development and testing utilities
│ ├── README.md # Development tools documentation
│ └── testing/ # Test scripts and utilities
│ ├── test_all_tools.py
│ ├── test_multiple_instances.py
│ ├── test_json_help.py
│ └── [other test files]
├── Cargo.toml # Rust project configuration
└── README.md # This file
Compilación
# Development build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Check for issues
cargo check
Dependencias
tokio: Tiempo de ejecución asíncronoserde/serde_json: Serialización JSONjsonpath-rust: Soporte de consultas JSONPathanyhow: Manejo de erroresclap: Análisis de línea de comandos
Licencia
Este proyecto está licenciado bajo la licencia MIT OR Apache-2.0.
Contribuciones
¡Las contribuciones son bienvenidas! Por favor, asegúrese de:
- Que el código siga las convenciones de Rust
- Que todas las pruebas pasen
- Que las nuevas características incluyan pruebas apropiadas
- Que la documentación se actualice para nuevas funcionalidades
Soporte
Para problemas, preguntas o contribuciones, consulte el repositorio del proyecto.