JSON-RPC文件共享服务

MCP HTA是一个基于文件共享(SMB)的JSON-RPC服务器/客户端系统,无需外部运行时,仅使用HTA(mshta.exe, JScript)即可运行。

  • by matsumaru-t
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 matsumaru-t/MCP

使用说明

MCP HTA — 基于文件共享(中小型企业)的JSON-RPC 服务器/客户端

此存储库没有外部运行时HTA(mshta.exe, JScript)通过文件共享(SMB)JSON-RPC 是系统。

构成

  • mcp_server.hta —基于文件的JSON-RPC 服务器
  • mcp_client.hta — JSON-RPC 客户机(incoming/ 将条目添加到文档注册表outgoing/ 轮询)
  • mcp_config.json —共享文件夹和行为参数
  • tools/ —服务器端工具(自动加载和自动注册)
    • register.js —方法注册表(registerMethod, listTools)
    • loader.js — tools/ 属下 .js 自动检测,从注释信息注册

目录(共享位置)

  • incoming/ -客户端-服务器请求(.msg)
  • outgoing/ -服务器-客户端响应(<id>.response.json)
  • processed/ —服务器已处理 .msg 移动

结构(基于文件JSON-RPC)

  1. 客户机JSON-RPC 2.0 请求符合 incoming/ 的 <id>.msg 中所述修改相应参数的值 .tmp →重命名)。
  2. 服务器 incoming/ 轮询并处理请求 outgoing/<id>.response.json 导出(.tmp →重命名)。
  3. 客户机 outgoing/ 我的 <id>.response.json 中所述修改相应参数的值。

服务器JSON-RPC 2.0 的错误代码:

  • -32700分析错误
  • -32600无效请求
  • -32601找不到方法
  • -32602无效参数
  • -32603内部错误

设定(mcp_config.json)

{
	"sharedPath": ".",         // 共有フォルダ(. はカレント)
	"pollInterval": 1000,       // ポーリング間隔(ms)
	"encoding": "utf-8"        // 文字コード
}

自动注册工具(tools/loader.js)

tools/ 属下 .js 将从第一个注释的元信息自动注册。document.write 而需要与环境混合的每条反射光线,进行环境采样。

注释示例(标题)

/*
Tool: excel/read
Description: Read Excel cells with absolute positions; optional formula/style.
Params: {path, sheet?, range?, formulas?, styles?} or [path, sheet?, range?, formulas?, styles?]
Returns: {sheet, range, anchor, size, cells[]}
Example: {path:"C:\\file.xlsx", sheet:"Sheet1", range:"A1:C3"}
Example: ["C:\\file.xlsx", "Sheet1", "A1:C3", true, true]
*/
function readExcel(params){ /* ... */ }
// 推奨: 明示引数で定義(loader が自動でマッピング)
// function readExcel(path, sheet, range, formulas, styles){ /* ... */ }

积分

  • 工具名称以斜线分隔(例如: core/echo, excel/read, excel/write)
  • 文件中的第一个 function 関数名(...) 检测并自动注册
  • 自动参数映射(对象/数组-函数参数)
    • params 排列-直接 fn.apply(null, params)
    • params 对象-签名 params[引数名] 映射
    • 向后兼容:一个参数,名称为 params/p/arg/args 在…的情况下 params 原封不动地交给
  • 注册表(register.js) description / params / returns 加上 examples 保存
  • listTools 啊 examples 的明细栏样式中定义的设置

可用工具(示例)

  • core/echo — 按原样返回输入

    • 例: params: { "hello": "world" }
  • core/sum — 2 一个数字的和(数组)or 对象格式

    • 例: params: [1,2] / {a:1,b:2}
  • core/time — 现在时刻の文字列

  • excel/sheets/read — Excel 装入单元格(位置,可选公式/样式)

  • excel/sheets/write — 在指定地址时写入值/公式/样式(有保存标志)

  • excel/sheets/list — 按数组返回指定工作簿的工作表名称

  • excel/sheets/add — 添加新工作表(名称/位置指定和保存标志)

  • file/list — 目录列表(可通配符)

  • file/read — 文本文件导入(OS默认代码页)

  • file/write — 文本文件写入(OS默认代码页,覆盖)

  • file/stat — 文件/文件夹信息(类别、大小、日期时间等)

  • file/mkdir — 文件夹创建(递归创建)

  • file/delete — 文件/文件夹删除(文件夹为recursive=true 必需的

Excel 系是Windows + Excel COM 中所述方法的备选方法Excel.Application)。

送受信例(JSON-RPC)

请求

{
	"jsonrpc": "2.0",
	"id": "1234",
	"method": "core/sum",
	"params": [1, 2]
}

响应

{
	"jsonrpc": "2.0",
	"id": "1234",
	"result": 3
}

使用方法(步骤)

  1. mcp_server.hta 中所述修改相应参数的值。
  2. mcp_client.hta 启动方法名称和params 输入并发送(如果有对应的工具)Examples 查看项目中可用的所有族。
  3. 客户端自动 outgoing/ ,接收并显示相应的响应。

补足

  • 文件写入 .tmp →用重命名原子性地进行。
  • 在实际操作中,请确认共享权限网络的稳定性。