项目简介
“实体解析MCP服务器”是一个实现了Model Context Protocol (MCP) 的后端服务,专门用于解决实体识别和数据去重问题。它能够比较两组数据(通常是JSON格式),并判断它们是否代表同一个真实世界的实体。项目支持多种对比方法,包括文本标准化、语法相似度计算以及通过集成大语言模型(如Google Gemini)进行深度语义分析,从而提供准确的匹配判断。
主要功能点
- 文本标准化: 对输入文本进行预处理,包括转换为小写、移除标点符号、归一化空白字符,确保对比的准确性。
- 语法相似度对比: 使用Dice系数和Levenshtein距离算法,从结构和字符层面评估两组数据的相似程度。
- 语义相似度分析: 集成大语言模型(需提供API Key),对数据字段进行深层语义理解和比较,判断其含义是否一致。
- 多维度匹配判断: 综合语法和语义分析结果,提供一个全面的匹配报告和最终判断,说明两组数据是否可能来自同一实体。
- MCP协议支持: 作为MCP服务器,它能够以标准化的JSON-RPC协议与LLM客户端通信,提供可调用的“比较实体”工具。
安装步骤
- 克隆仓库:
首先,您需要将项目仓库克隆到本地。
git clone https://github.com/u3588064/Entity-Resolution.git cd Entity-Resolution - 安装依赖:
该MCP服务器主要基于TypeScript/JavaScript实现,并使用Node.js运行。请确保您已安装Node.js和npm(或yarn)。
npm install # 或者 yarn install - 编译项目:
安装完依赖后,需要将TypeScript源代码编译成JavaScript,生成可运行的'build'目录。
编译成功后,您将在项目根目录下找到'build/index.js'文件,这是MCP服务器的启动入口。npm run build # 或者 yarn build
服务器配置
作为MCP客户端,您需要配置该MCP服务器的启动信息,以便客户端能够连接和调用其功能。以下是一个标准的MCP客户端配置JSON示例:
{ "name": "entity-resolution-server", "description": "用于实体数据对比和语义分析的MCP服务器,支持语法和LLM语义对比。", "command": "node", "args": ["./build/index.js"] }
配置说明:
- 'name': MCP服务器的唯一名称,客户端通过此名称识别服务器。
- 'description': 服务器的简要描述,方便理解其功能。
- 'command': 启动MCP服务器的可执行命令。在此项目中,是'node'。
- 'args': 传递给'command'的参数列表。'./build/index.js'是编译后服务器代码的入口文件路径。请确保在客户端的启动环境中,'./build/index.js'路径是正确的(通常是相对于MCP客户端配置的目录)。
基本使用方法
一旦MCP客户端成功连接到“实体解析MCP服务器”,它就可以通过JSON-RPC协议调用服务器提供的“工具(Tool)”。此服务器目前提供一个名为 'compare_entities' 的工具。
'compare_entities' 工具输入参数:
- 'entity1' (Object, 必填): 待比较的第一个实体数据(JSON对象)。
- 'entity2' (Object, 必填): 待比较的第二个实体数据(JSON对象)。
- 'threshold' (Number, 可选): 一个介于0到1之间的数值,用于语法相似度判断的阈值,默认值为0.8。当Dice相似度超过此阈值时,认为语法上匹配。
- 'apiKey' (String, 可选): Google Generative AI 的API Key。如果提供,服务器将使用Gemini模型进行语义相似度分析;如果未提供,则跳过语义分析。
示例(MCP客户端调用此工具的逻辑):
假设客户端已经建立与MCP服务器的连接,并准备调用 'compare_entities' 工具。
-
准备输入数据:
{ "entity1": { "name": "John Doe", "address": "123 Main St, Anytown, USA", "hobbies": ["reading", "hiking", "coding"] }, "entity2": { "name": "john doe", "address": "123 Main Street, Anytown, USA", "hobbies": ["coding", "hiking", "reading"] }, "threshold": 0.85, "apiKey": "YOUR_GOOGLE_GEMINI_API_KEY" } -
客户端调用工具: MCP客户端会向服务器发送一个JSON-RPC 'callTool' 请求,其中包含上述参数。
-
服务器返回结果: 服务器将返回一个JSON对象,其中包含:
- 'overallSyntacticSimilarity': 整体语法相似度分数(Dice和Levenshtein)。
- 'isMatchSyntactic': 基于阈值的语法匹配结果。
- 'fieldDetails': 逐字段的详细比较结果,包括原始值、标准化值、语法相似度以及LLM的语义判断(如果提供了API Key)。
- 'finalLlmAnalysis': 大语言模型对整体匹配情况的最终分析和判断。
- 'llmProcessingError': LLM处理过程中发生的错误信息(如果有)。
通过以上步骤,MCP客户端即可利用该服务器强大的实体对比能力,在LLM应用中实现高效的数据去重和实体识别。
信息
分类
AI与计算