JSON数据查询与操作服务

一个基于JSONPath表达式的模型上下文协议(MCP)服务器,用于查询和操作JSON数据。

  • by lpenguin
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 lpenguin/json-mcp

使用说明

json-mcp

用于使用JSONPath表达式查询和操纵JSON数据的模型上下文协议(MCP)服务器。

特性

此MCP服务器为处理JSON文件提供了强大的工具:

  • 搜索:通过简单文本在文件中搜索JSON数据,并返回JSONPaths,其中包含匹配元素周围的上下文
  • 怎么翻译:通过JSONPath表达式查询文件中的JSON数据
  • appendToArray:将元素附加到JSONPath选择的数组中
  • 集:在JSONPath上设置(upstart)一个值。可以更新单个比赛或所有比赛。
  • 删除:删除文件中JSONPath处的元素

安装

您可以使用npx运行此服务器:

npx @lpenguin/json-mcp

或者全局安装:

npm install -g @lpenguin/json-mcp

用法

作为MCP服务器

添加到您的MCP客户端配置中(例如,Claude Desktop、Cline):

{
  "mcpServers": {
    "@lpenguin/json-mcp": {
      "command": "npx",
      "args": ["-y", "@lpenguin/json-mcp"]
    }
  }
}

工具示例

在JSON文件中搜索文本

// Search for "apple" in data.json
{
  "name": "search",
  "arguments": {
    "file": "/path/to/data.json",
    "searchText": "apple"
  }
}

按JSONPath查询

// Get all book titles from books.json
{
  "name": "query",
  "arguments": {
    "file": "/path/to/books.json",
    "path": "$.store.book[*].title"
  }
}

追加到数组

// Append new item to array in items.json
{
  "name": "appendToArray",
  "arguments": {
    "file": "/path/to/items.json",
    "path": "$.items",
    "value": {"name": "new item", "price": 9.99}
  }
}

设置(追加)数据

// Set or create a value at path in config.json (updates first match only)
{
  "name": "set",
  "arguments": {
    "file": "/path/to/config.json",
    "path": "$.settings.timeout",
    "value": 5000
  }
}

// Set value at all matching paths (when all=true)
{
  "name": "set",
  "arguments": {
    "file": "/path/to/data.json",
    "path": "$.items[*].price",
    "value": 9.99,
    "all": true
  }
}

删除数据

// Delete first item from array in items.json
{
  "name": "delete",
  "arguments": {
    "file": "/path/to/items.json",
    "path": "$.items[0]"
  }
}

JSONPath语法

此服务器使用 jsonpath+ 它支持完整的JSONPath规范:

  • $ -根节点
  • @ -当前节点
  • . -儿童操作员
  • .. -递归下降
  • * -通配符
  • [] -数组下标
  • [,] -工会运营商
  • [start:end:step] -阵列切片
  • ?() -筛选器表达式
  • () -脚本表达式

示例:

  • $.store.book[*].author -所有作者
  • $..author -所有作者(递归)
  • $.store.* -商店里的所有东西
  • $.store..price -店内所有价格
  • $..book[?(@.price < 10)] -所有价格低于10美元的书籍
  • $..book[-1:] -最后一本书

发展

设置

npm install

构建

npm run build

测试

npm test

许可证

麻省理工学院