JSON MCP Server
Um servidor MCP de alto desempenho para operações abrangentes com arquivos JSON, incluindo leitura, escrita e consultas avançadas, otimizado para interações com LLMs.
Documentação
JSON MCP Server
Um servidor de Protocolo de Contexto de Modelo (MCP) de alto desempenho baseado em Rust que fornece operações abrangentes de arquivos JSON otimizadas para interações com LLMs. Este servidor permite que LLMs leiam, escrevam, consultem e manipulem arquivos JSON de forma eficiente, com suporte para conjuntos de dados extremamente grandes e capacidades avançadas de consulta.
🚀 Recursos
Ferramentas JSON Principais
- 📖 json-read: Leia arquivos JSON com filtragem JSONPath opcional e paginação
- ✏️ json-write: Escreva ou atualize arquivos JSON com múltiplas estratégias de mesclagem
- 🔍 json-query: Execute consultas JSONPath complexas com vários formatos de saída
- ✅ json-validate: Valide estrutura e sintaxe JSON com diagnósticos detalhados
- ❓ json-help: Sistema de ajuda interativo com exemplos abrangentes e solução de problemas
Principais Capacidades
- Suporte a Arquivos Grandes: Paginação eficiente e streaming para arquivos de qualquer tamanho
- Consultas JSONPath: Suporte completo a JSONPath para extração e filtragem complexa de dados
- Escrita Flexível: Múltiplos modos (replace, merge_shallow, merge_deep, append) com opções de backup
- Otimizado para LLM: Mensagens de erro detalhadas e exemplos de uso para interação ideal com LLM
- Eficiência de Memória: Paginação inteligente evita estouro de memória em grandes conjuntos de dados
- Conformidade com MCP: Suporte completo ao Protocolo de Contexto de Modelo com tratamento adequado de erros
- Registro de Depuração: Registro de depuração baseado em arquivos para solução de problemas sem violar o protocolo MCP
📦 Instalação
Instalação Rápida
Via Cargo (Recomendado)
cargo install json-mcp-server
Via Script de Instalação
# 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
Binários Pré-compilados
Baixe binários específicos por plataforma em 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
Gerenciadores de Pacotes
Debian/Ubuntu (pacotes .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 (pacotes .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
Compilando a partir do Código Fonte
# 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
Verificação
Após a instalação, verifique se funciona:
json-mcp-server --version
json-mcp-server --help
Uso
O JSON MCP Server se comunica via JSON-RPC sobre stdin/stdout seguindo a especificação do Protocolo de Contexto de Modelo.
Começando
-
Inicie o servidor:
cargo run -
Obtenha ajuda: Use a ferramenta
json-helppara aprender sobre a funcionalidade disponível:{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "json-help", "arguments": {"topic": "overview"} } }
Exemplo de Uso
Lendo Arquivos JSON
{
"name": "json-read",
"arguments": {
"file_path": "./data.json",
"json_path": "$.users[*].name",
"format": "pretty"
}
}
Escrevendo Dados JSON
{
"name": "json-write",
"arguments": {
"file_path": "./config.json",
"data": {"setting": "value", "enabled": true},
"mode": "merge"
}
}
Consultando com JSONPath
{
"name": "json-query",
"arguments": {
"file_path": "./products.json",
"query": "$.products[?(@.price > 100)].name",
"format": "table"
}
}
Processando Arquivos Grandes
{
"name": "json-read",
"arguments": {
"file_path": "./large-dataset.json",
"json_path": "$.records[*].id",
"limit": 1000,
"offset": 0
}
}
Referência de Ferramentas
json-read
Leia e analise arquivos JSON com filtragem JSONPath opcional e paginação.
Parâmetros:
file_path(string, obrigatório): Caminho para o arquivo JSONjson_path(string, opcional): Expressão JSONPath para filtragemstart_index(inteiro, opcional): Índice inicial para paginação (padrão: 0)limit(inteiro, opcional): Número máximo de itens a retornar (padrão: 1000)output_format(string, opcional): Formato de saída - "json", "pretty", "compact" (padrão: "json")
json-write
Escreva ou atualize arquivos JSON com estratégias de mesclagem flexíveis.
Parâmetros:
file_path(string, obrigatório): Caminho para o arquivo JSONcontent(string, obrigatório): Conteúdo JSON a escrevermode(string, opcional): Modo de escrita - "replace", "merge_shallow", "merge_deep", "append" (padrão: "replace")
json-query
Execute consultas JSONPath em arquivos JSON com vários formatos de saída.
Parâmetros:
file_path(string, obrigatório): Caminho para o arquivo JSONjson_path(string, obrigatório): Expressão de consulta JSONPathoutput_format(string, opcional): Formato de saída - "json", "pretty", "compact", "csv", "markdown" (padrão: "json")
json-validate
Valide a estrutura e sintaxe de arquivos JSON.
Parâmetros:
file_path(string, obrigatório): Caminho para o arquivo JSON a validar
json-help
Obtenha ajuda abrangente sobre as ferramentas disponíveis e a sintaxe JSONPath.
Parâmetros:
topic(string, opcional): Tópico de ajuda - "overview", "tools", "jsonpath", "examples", "troubleshooting" (padrão: "overview")
Suporte a JSONPath
O servidor suporta sintaxe JSONPath completa para consulta de dados JSON:
$- Elemento raiz.field- Acesso a campo filho[index]- Acesso a índice de array[*]- Todos os elementos do array..field- Descida recursiva[?(@.field > value)]- Expressões de filtro{field1, field2}- Projeção
Exemplos de 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 Desempenho
Manipulação de Arquivos Grandes
- Arquivos de qualquer tamanho: A ferramenta
json-readusa automaticamente streaming para eficiência de memória - JSON delimitado por linhas: Detectado e processado automaticamente de forma eficiente
- Uso de memória: Streaming mantém o uso de memória constante independentemente do tamanho do arquivo
Melhores Práticas
- Use consultas JSONPath específicas para filtrar dados antecipadamente
- Defina limites razoáveis ao processar grandes conjuntos de dados
- Use offset para paginação em grandes conjuntos de resultados
- O servidor otimiza automaticamente para o tamanho do arquivo e memória disponível
Tratamento de Erros
O servidor fornece mensagens de erro detalhadas para ajudar a diagnosticar problemas:
- Arquivo não encontrado: Orientação clara de resolução de caminho
- Erros de sintaxe JSON: Informações de linha e coluna quando disponíveis
- Erros de JSONPath: Validação de sintaxe e sugestões
- Problemas de memória: Orientação sobre alternativas de streaming
Configuração do Cliente MCP
O JSON MCP Server funciona com qualquer cliente compatível com MCP. Guias de configuração detalhados estão disponíveis no diretório examples/mcp_clients/:
Clientes Suportados
- VS Code com GitHub Copilot - Guia de configuração completo
- Claude Desktop - Exemplos de configuração e uso
- Cliente MCP Genérico - Guia de configuração universal
- Implementação Personalizada - Construa seu próprio cliente
Configuração 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 instruções detalhadas de configuração, solução de problemas e configurações avançadas, consulte os guias de cliente respectivos no diretório examples/mcp_clients/.
Desenvolvimento
Estrutura do Projeto
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
Compilação
# Development build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Check for issues
cargo check
Dependências
tokio: Runtime assíncronoserde/serde_json: Serialização JSONjsonpath-rust: Suporte a consultas JSONPathanyhow: Tratamento de errosclap: Análise de linha de comando
Licença
Este projeto é licenciado sob a licença MIT OR Apache-2.0.
Contribuição
Contribuições são bem-vindas! Por favor, garanta:
- O código segue as convenções do Rust
- Todos os testes passam
- Novos recursos incluem testes apropriados
- A documentação é atualizada para novas funcionalidades
Suporte
Para problemas, perguntas ou contribuições, consulte o repositório do projeto.