自定义上下文MCP服务器
此模型上下文协议(MCP)服务器提供了根据JSON模板从文本中结构化和提取数据的工具。
特性
文本到JSON转换
- 基于带占位符的JSON模板对文本进行分组和结构化
- 将AI生成的文本中的信息提取为结构化JSON格式
- 支持任何带有嵌套占位符的任意JSON结构
- 从文本中智能提取键值对
- 将AI输出处理为结构化数据,以供下游应用程序使用
入门指南
安装
npm install运行服务器
npm start对于热重载开发:
npm run dev:watch用法
此MCP服务器提供两个主要工具:
1.按JSON分组文本(group-text-by-json)
该工具采用带有占位符的JSON模板,并生成一个提示,让AI根据模板的结构对文本进行分组。
{
"template": "{ \"type\": \"\", \"text\": \"\" }"
}该工具分析模板,提取占位符键,并返回一个提示,引导AI以键值格式提取信息。
2.文本转换为JSON(text-to-json)
此工具获取上一步的分组文本输出,并将其转换为基于原始模板的结构化JSON对象。
{
"template": "{ \"type\": \"\", \"text\": \"\" }",
"text": "type: pen\ntext: This is a blue pen"
}它从文本中提取键值对,并根据模板对其进行结构化。
工作流示例
- 定义一个带有占位符的JSON模板:
{
"item": {
"name": "",
"price": "
",
"description": ""
}
}- 使用
group-text-by-json为AI创建提示:
- 该工具可识别占位符键:名称、价格、描述 - 生成一个提示,指示AI按这些键对信息进行分组
- 将提示发送到AI模型并接收分组文本:
name: Blue Pen
price: $2.99
description: A smooth-writing ballpoint pen with blue ink- 使用
text-to-json将分组文本转换为JSON:
- 结果:
{
"item": {
"name": "Blue Pen",
"price": "$2.99",
"description": "A smooth-writing ballpoint pen with blue ink"
}
}模板格式
模板可以在有效JSON结构中的任何位置包含占位符:
- 使用尖括号定义占位符: `
,,
`等等。
- 模板必须是有效的JSON字符串
- 占位符可以处于任何嵌套级别
- 支持复杂的嵌套结构
带有嵌套占位符的示例模板:
{
"product": {
"details": {
"name": "",
"category": ""
},
"pricing": {
"amount": "
",
"currency": "USD"
}
},
"metadata": {
"timestamp": "2023-09-01T12:00:00Z"
}
}实现细节
服务器的工作原理如下:
- 分析JSON模板以提取占位符键
- 生成提示,引导AI模型通过这些键提取信息
- 解析AI生成的文本以提取键值对
- 基于原始模板结构重建JSON对象
发展
先决条件
- Node.js v18或更高版本
- npm或纱线
构建并运行
# Install dependencies
npm install
# Build the project
npm run build
# Run the server
npm start
# Development with hot reloading
npm run dev:watch自定义热重加载
此项目包括一个自定义热重新加载设置,该设置结合了以下内容:
- 节点:监视src目录中的文件更改并重建TypeScript文件
- 浏览器同步:生成文件更改时自动刷新浏览器
- 并发执行:同时运行两个服务并同步输出
设置配置在:
nodemon.json:控制TypeScript的监视和重建package.json:用于同时运行nodemon和浏览器同步
要使用自定义热重新加载功能,请执行以下操作:
npm run dev:watch这创建了一个开发环境,其中:
- TypeScript文件在更改时会自动重建
- MCP服务器使用更新的代码重新启动
- 已连接的浏览器刷新以显示最新更改
与MCP检查器一起使用
您可以使用MCP检查器进行调试:
npm run dev这将使用MCP检查器运行服务器,以便对请求和响应进行可视化调试。

