摘要:import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";import { StdioServerTransport } from "@modelcontextprotocol/sd
随着MCP的普及,能否从业务角度,以MCP化的交互方式让业务简单通过自然语言描述进行对系统的操作,从而带来成本更低更便捷更快的体验。
二、实现功能:
1.根据合同状态或编号查询合同信息:
i. question: 请帮我查询待签署的合同
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";import { z } from "zod";const QUERY_CONTRACT = "xxxxxxx";const DELAY_CONTRACT = "xxxxxxx";// Create server instanceconst server = new McpServer({ name: "contract", version: "1.0.0", capabilities: { resources: {}, tools: {}, },});// Helper function for making API Requestsasync function makerequest(url, params) { const headers = { "X-Requested-With": 'XMLHttpRequest', "content-type": 'application/json', }; try { const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(params), credentials: 'include', }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return (await response.json); } catch (error) { console.error("Error making Contract request:", error); return null; }}// Format alert datafunction formatAlert(feature) { const props = feature; return [ `合同号: ${props.contractNumber || "Unknown"}`, `合同id: ${props.id || "Unknown"}`, `版本号: ${props.version || "Unknown"}`, `创建人: ${props.creator || "Unknown"}`, `合同名称: ${props.name || "Unknown"}`, `合同主体: ${props.ouName || "Unknown"}`, `合同类型: ${props.typeName || "Unknown"}`, `交易方: ${props.refPartiesName || "Unknown"}`, `有效日期至: ${props.endTime || "Unknown"}`, "---", ].join("\n");}const statusDict = { xx: xx};// Register toolsserver.tool("获取合同列表", "获取某种状态或某个合同的合同列表", { state: z.string.describe("两或三字的合同状态 (e.g. xx, xx)"), contractNumber: z.string.describe("合同号 (e.g. xxxxxxx,xxxxxxxx,xxxxxxx)"),}, async ({ state, contractNumber }) => { const statusCode = statusDict[state]; const alertsData = await makeRequest(QUERY_CONTRACT, { status: statusCode, pageIndex: 1, pageSize: 10, searchSource: 0, contractNumber: contractNumber }); // ...... 省略业务逻辑 ...... //});server.tool("合同延期", "对指定合同进行延期操作", { contractId: z.string.describe("合同id (e.g. 41556890,41556953)"), contractNumber: z.string.describe("合同号 (e.g. PE2025A3709738,BEC2025A3709735)"), version: z.string.describe("版本号 (e.g. 1,2)"), endTime: z.string.describe("有效日期至 (e.g. 2023-08-15 12:00:00)"),}, async ({ contractId, contractNumber, version, endTime }) => { const alertsData = await makeRequest(DELAY_CONTRACT, { endTime: newEndTime, version, contractNumber, contractId }); // ...... 省略业务逻辑 ...... //});async function main { const transport = new StdioServerTransport; await server.connect(transport); console.error("Contract MCP Server running on stdio");}main.catch((error) => { console.error("Fatal error in main:", error); process.exit(1);});; 来源:京东云开发者
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!