From f6bb5d7729b8fa76f2ef010bc1c5fb5c23bdba7b Mon Sep 17 00:00:00 2001 From: hourmoneys Date: Fri, 23 May 2025 17:27:15 +0800 Subject: [PATCH] add mcp service shebao tools (#2303) --- .tgitconfig | 0 .../mcp-servers/mcp-shebao-tools/README.md | 49 +++ .../mcp-servers/mcp-shebao-tools/README_ZH.md | 53 +++ .../mcp-shebao-tools/city_data.xls | Bin 0 -> 67584 bytes .../mcp-shebao-tools/mcp-server.yaml | 385 ++++++++++++++++++ 5 files changed, 487 insertions(+) create mode 100644 .tgitconfig create mode 100644 plugins/wasm-go/mcp-servers/mcp-shebao-tools/README.md create mode 100644 plugins/wasm-go/mcp-servers/mcp-shebao-tools/README_ZH.md create mode 100644 plugins/wasm-go/mcp-servers/mcp-shebao-tools/city_data.xls create mode 100644 plugins/wasm-go/mcp-servers/mcp-shebao-tools/mcp-server.yaml diff --git a/.tgitconfig b/.tgitconfig new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README.md b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README.md new file mode 100644 index 000000000..910785a43 --- /dev/null +++ b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README.md @@ -0,0 +1,49 @@ +# Shebao Tools MCP Server + +An implementation of the Model Context Protocol (MCP) server that integrates social security, housing provident fund, disability insurance, income tax, work injury compensation, and work death compensation calculation functions. + +## Features + +- Calculate social security and housing provident fund fees based on city information. Input the city name and salary information to get detailed calculation results. +- Calculate disability insurance based on enterprise scale. Input the number of employees and average salary of the enterprise to get the calculation result. +- Calculate income tax payment based on individual salary. Input the individual salary to get the payment amount. +- Calculate work injury compensation based on work injury situation. Input the work injury level and salary information to get the compensation amount. +- Calculate work death compensation based on work death situation. Input relevant information to get the compensation amount. +- Detailed list as follows: + 1. `getCityCanbaoYear`: Query the year of disability insurance payment for a city based on the city code. + 2. `getCityShebaoBase`: Query the disability insurance payment base for a city based on the city code and year. + 3. `calcCanbaoCity`: Calculate the recommended number of disabled employees to hire and the cost savings for a city. + 4. `getCityPersonDeductRules`: Query the special additional deductions for individual income tax on wages and salaries. + 5. `calcCityNormal`: Calculate the detailed individual income tax payment for a city based on the salary. + 6. `calcCityLaobar`: Calculate the tax payable for a one-time labor remuneration. + 7. `getCityIns`: Query the social security and housing provident fund payment information for a city based on the city ID. + 8. `calcCityYearEndBonus`: Calculate the tax payable for an annual one-time bonus. + 9. `getCityGm`: Calculate the work death compensation for a city. + 10. `getCityAvgSalary`: Query the average salary of the previous year for a city based on the city ID. + 11. `getCityDisabilityLevel`: Query the disability levels for a city based on the city ID. + 12. `getCityNurseLevel`: Query the nursing levels for a city based on the city ID. + 13. `getCityCompensateProject`: Query all types of work injury expenses. + 14. `getCityInjuryCData`: Query the calculation rules for work injury expenses. + 15. `getCityCalcInjury`: Calculate the work injury expenses for a city based on the city ID and expense type item. + 16. `getshebaoInsOrg`: Query the social security policies for a specified city. + 17. `calculator`: Calculate the detailed social security and housing provident fund payments for a city. + +## Tutorial + +### Configure API Key + +In the `mcp-server.yaml` file, set the `apikey` field to a valid API key. + +### Knowledge Base +1. Import `city_data.xls` into the knowledge base. + +### Integrate into MCP Client + +On the user's MCP Client interface, add the relevant configuration to the MCP Server list. + +```json +"mcpServers": { + "jr-shebao-calc": { + "url": "https://agent-tools.jrit.top/sse?jr-api-key={jr-api-key}", + } +} \ No newline at end of file diff --git a/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README_ZH.md b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README_ZH.md new file mode 100644 index 000000000..0fb93d8b5 --- /dev/null +++ b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/README_ZH.md @@ -0,0 +1,53 @@ +# Shebao Tools MCP Server + +一个集成了社保、公积金、残保金、个税、工伤赔付和工亡赔付计算功能的模型上下文协议(MCP)服务器实现。 + +## 功能 + +- 根据城市信息计算社保、公积金费用。输入城市名称和薪资信息,返回详细计算结果。 +- 根据城市信息企业规模计算残保金。输入企业员工数量和平均薪资,返回计算结果。 +- 根据城市信息个人薪资计算个税缴纳费用。输入个人薪资,返回缴纳费用。 +- 根据城市信息工伤情况计算赔付费用。输入工伤等级和薪资信息,返回赔付费用。 +- 根据城市信息工亡情况计算赔付费用。输入相关信息,返回赔付费用。 +- 详细清单如下: + 1.getCityCanbaoYear 根据城市编码查询该城市缴纳残保金年份 + 2.getCityShebaoBase 根据城市编码和年份查询该城市缴纳残保金基数 + 3.calcCanbaoCity 计算该城市推荐雇佣残疾人人数和节省费用 + 4.getCityPersonDeductRules 查询工资薪金个税专项附加扣除 + 5.calcCityNormal 根据工资计算该城市个税缴纳明细 + 6.calcCityLaobar 计算一次性劳务报酬应缴纳税额 + 7.getCityIns 根据城市ID查询该城市社保和公积金缴费信息 + 8.calcCityYearEndBonus 计算全年一次性奖金应缴纳税额 + 9.getCityGm 计算该城市工亡赔偿费用 + 10.getCityAvgSalary 根据城市ID查询该城市上年度平均工资 + 11.getCityDisabilityLevel 根据城市ID查询该城市伤残等级 + 12.getCityNurseLevel 根据城市ID查询该城市护理等级 + 13.getCityCompensateProject 查询所有工伤费用类型 + 14.getCityInjuryCData 查询工伤费用计算规则 + 15.getCityCalcInjury 根据城市ID和费用类型项计算工伤费用 + 16.getshebaoInsOrg 查询指定城市社保政策 + 17.calculator 计算该城市社保和公积金缴纳明细 + +## 使用教程 + +### 获取 apikey +1. 注册账号 [Create a ID](https://check.junrunrenli.com/#/index?src=higress) +2. 发送邮件to: yuanpeng@junrunrenli.com 标题:MCP 内容:申请MCP社保计算工具服务,并提供你的账号。 + +### 知识库 +1. 导入city_data.xls到知识库中。 + +### 配置 API Key + +在 `mcp-server.yaml` 文件中,将 `jr-api-key` 字段设置为有效的 API 密钥。 + +### 集成到 MCP Client + +在用户的 MCP Client 界面,将相关配置添加到 MCP Server 列表中。 + +```json +"mcpServers": { + "jr-shebao-calc": { + "url": "https://agent-tools.jrit.top/sse?jr-api-key={jr-api-key}", + } +} \ No newline at end of file diff --git a/plugins/wasm-go/mcp-servers/mcp-shebao-tools/city_data.xls b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/city_data.xls new file mode 100644 index 0000000000000000000000000000000000000000..cc246186905af19d58c34ea71ee01fc154808897 GIT binary patch literal 67584 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

I00tTFHS*UM=L~Mlz$JKETK%B~z44 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 literal 0 HcmV?d00001 diff --git a/plugins/wasm-go/mcp-servers/mcp-shebao-tools/mcp-server.yaml b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/mcp-server.yaml new file mode 100644 index 000000000..8ec879a72 --- /dev/null +++ b/plugins/wasm-go/mcp-servers/mcp-shebao-tools/mcp-server.yaml @@ -0,0 +1,385 @@ +server: + name: shebao-tools-api-server + config: + apikey: "" +tools: + - name: calculate_social_security + description: |+ + 根据城市信息计算社保、公积金费用。 + - 输入城市名称和薪资信息。 + - 返回社保和公积金的详细计算结果。 + args: + - name: city + description: 城市名称 + type: string + required: true + - name: salary + description: 个人薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools?jr-api-key={apikey} + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calculate_disability_insurance + description: |+ + 根据企业规模计算残保金。 + - 输入企业员工数量和平均薪资。 + - 返回残保金的计算结果。 + args: + - name: employee_count + description: 企业员工数量 + type: integer + required: true + - name: average_salary + description: 企业平均薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools?jr-api-key={apikey} + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calculate_income_tax + description: |+ + 根据个人薪资计算个税缴纳费用。 + - 输入个人薪资。 + - 返回个税缴纳费用。 + args: + - name: salary + description: 个人薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools?jr-api-key={apikey} + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calculate_work_injury_compensation + description: |+ + 根据工伤情况计算赔付费用。 + - 输入工伤等级和薪资信息。 + - 返回工伤赔付费用。 + args: + - name: injury_level + description: 工伤等级 + type: string + required: true + - name: salary + description: 个人薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools?jr-api-key={apikey} + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calculate_work_death_compensation + description: |+ + 根据工亡情况计算赔付费用。 + - 输入相关信息。 + - 返回工亡赔付费用。 + args: + - name: relevant_info + description: 相关信息(可根据实际情况细化) + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools?jr-api-key={apikey} + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityCanbaoYear + description: 根据城市编码查询该城市缴纳残保金年份 + args: + - name: city_code + description: 城市编码 + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityCanbaoYear + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityShebaoBase + description: 根据城市编码和年份查询该城市缴纳残保金基数 + args: + - name: city_code + description: 城市编码 + type: string + required: true + - name: year + description: 年份 + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityShebaoBase + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calcCanbaoCity + description: 计算该城市推荐雇佣残疾人人数和节省费用 + args: + - name: city_code + description: 城市编码 + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/calcCanbaoCity + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityPersonDeductRules + description: 查询工资薪金个税专项附加扣除 + args: + - name: city_code + description: 城市编码 + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityPersonDeductRules + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calcCityNormal + description: 根据工资计算该城市个税缴纳明细 + args: + - name: city_code + description: 城市编码 + type: string + required: true + - name: salary + description: 个人薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/calcCityNormal + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calcCityLaobar + description: 计算一次性劳务报酬应缴纳税额 + args: + - name: city_code + description: 城市编码 + type: string + required: true + - name: labor_income + description: 一次性劳务报酬 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/calcCityLaobar + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityIns + description: 根据城市ID查询该城市社保和公积金缴费信息 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityIns + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calcCityYearEndBonus + description: 计算全年一次性奖金应缴纳税额 + args: + - name: city_code + description: 城市编码 + type: string + required: true + - name: year_end_bonus + description: 全年一次性奖金 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/calcCityYearEndBonus + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityGm + description: 计算该城市工亡赔偿费用 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityGm + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityAvgSalary + description: 根据城市ID查询该城市上年度平均工资 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityAvgSalary + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityDisabilityLevel + description: 根据城市ID查询该城市伤残等级 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityDisabilityLevel + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityNurseLevel + description: 根据城市ID查询该城市护理等级 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityNurseLevel + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityCompensateProject + description: 查询所有工伤费用类型 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityCompensateProject + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityInjuryCData + description: 查询工伤费用计算规则 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityInjuryCData + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getCityCalcInjury + description: 根据城市ID和费用类型项计算工伤费用 + args: + - name: city_id + description: 城市ID + type: string + required: true + - name: expense_type + description: 费用类型项 + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getCityCalcInjury + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: getshebaoInsOrg + description: 查询指定城市社保政策 + args: + - name: city_id + description: 城市ID + type: string + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/getshebaoInsOrg + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" + + - name: calculator + description: 计算该城市社保和公积金缴纳明细 + args: + - name: city + description: 城市名称 + type: string + required: true + - name: salary + description: 个人薪资 + type: number + required: true + requestTemplate: + argsToUrlParam: true + url: https://agent-tools.jrit.top/agent/tools/calculator + method: GET + headers: + - key: jr-api-key + value: "{{.config.apikey}}" \ No newline at end of file