@yilin jing/mcp json-utils
MCP(模型上下文协议)服务器的JSON响应实用程序。为API响应提供格式化、项目限制和文件保存功能。
特性
- 响应格式:使用JSON结构树将API响应转换为可读标记
- 项目限制:自动限制大型数组以防止上下文溢出(默认值:10个项目)
- 原始数据保存:可选择将完整响应数据保存到本地文件
- 动态场检测:自动查找并限制响应结构中任何位置的大型数组
安装
npm install @yilin-jing/mcp-json-utils用法
import { JsonResponseHandler } from '@yilin-jing/mcp-json-utils';
// Create handler with custom max items (default: 10)
const jsonHandler = new JsonResponseHandler({ maxItemsForContext: 10 });
// Format a response
const result = jsonHandler.formatResponse(data, {
rawDataSaveDir: '/tmp/my_data', // Optional: save full data to file
toolName: 'get_posts', // Optional: tool name for filename
params: { featured: true } // Optional: params for filename
});
// Result is a CallToolResult with formatted markdown输出格式
格式化的响应包括:
- 头球 带有工具名称
- 文件简介 (如果
rawDataSaveDir提供)路径和大小 - 限制说明 (如果项目有限)显示字段路径和计数
- JSON结构树 显示数据的形状
- JSON数据 物品有限
输出示例:
## get_posts
> **Raw data saved to**: `/tmp/my_data/get_posts_featured=true_2024-01-15T10-30-00-000Z.json` (15.2 KB)
> **Note**: `edges` limited to 10 items (25 total). Full data saved to file.
### JSON Structure
├── edges: Array[10]
│ └── [item]:
│ ├── id: string
│ ├── name: string
│ └── ...
└── pageInfo:
├── hasNextPage: boolean
└── endCursor: string
### Data (`edges`: 10/25 items){ "edges": [...], "pageInfo": {...} }
## API
### `JsonResponseHandler`
#### 构造函数
new JsonResponseHandler(config: { maxItemsForContext: number })
#### 方法
- `formatResponse(data, options?)` -将数据格式化为MCP CallToolResult
- `saveRawData(data, saveDir, toolName, params?)` -将数据保存到文件
- `limitItems(data)` -限制数据中的大数组
- `findLargeArrayField(data)` -查找第一个包含>maxItems项的数组
- `generateJsonStructureTree(obj)` -生成树可视化
- `formatFileSize(bytes)` -将字节格式化为人类可读字符串
## 许可证
麻省理工学院