项目简介

“实体解析MCP服务器”是一个实现了Model Context Protocol (MCP) 的后端服务,专门用于解决实体识别和数据去重问题。它能够比较两组数据(通常是JSON格式),并判断它们是否代表同一个真实世界的实体。项目支持多种对比方法,包括文本标准化、语法相似度计算以及通过集成大语言模型(如Google Gemini)进行深度语义分析,从而提供准确的匹配判断。

主要功能点

  • 文本标准化: 对输入文本进行预处理,包括转换为小写、移除标点符号、归一化空白字符,确保对比的准确性。
  • 语法相似度对比: 使用Dice系数和Levenshtein距离算法,从结构和字符层面评估两组数据的相似程度。
  • 语义相似度分析: 集成大语言模型(需提供API Key),对数据字段进行深层语义理解和比较,判断其含义是否一致。
  • 多维度匹配判断: 综合语法和语义分析结果,提供一个全面的匹配报告和最终判断,说明两组数据是否可能来自同一实体。
  • MCP协议支持: 作为MCP服务器,它能够以标准化的JSON-RPC协议与LLM客户端通信,提供可调用的“比较实体”工具。

安装步骤

  1. 克隆仓库: 首先,您需要将项目仓库克隆到本地。
    git clone https://github.com/u3588064/Entity-Resolution.git
    cd Entity-Resolution
  2. 安装依赖: 该MCP服务器主要基于TypeScript/JavaScript实现,并使用Node.js运行。请确保您已安装Node.js和npm(或yarn)。
    npm install
    # 或者 yarn install
  3. 编译项目: 安装完依赖后,需要将TypeScript源代码编译成JavaScript,生成可运行的'build'目录。
    npm run build
    # 或者 yarn build
    编译成功后,您将在项目根目录下找到'build/index.js'文件,这是MCP服务器的启动入口。

服务器配置

作为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' 工具。

  1. 准备输入数据:

    {
      "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"
    }
  2. 客户端调用工具: MCP客户端会向服务器发送一个JSON-RPC 'callTool' 请求,其中包含上述参数。

  3. 服务器返回结果: 服务器将返回一个JSON对象,其中包含:

    • 'overallSyntacticSimilarity': 整体语法相似度分数(Dice和Levenshtein)。
    • 'isMatchSyntactic': 基于阈值的语法匹配结果。
    • 'fieldDetails': 逐字段的详细比较结果,包括原始值、标准化值、语法相似度以及LLM的语义判断(如果提供了API Key)。
    • 'finalLlmAnalysis': 大语言模型对整体匹配情况的最终分析和判断。
    • 'llmProcessingError': LLM处理过程中发生的错误信息(如果有)。

通过以上步骤,MCP客户端即可利用该服务器强大的实体对比能力,在LLM应用中实现高效的数据去重和实体识别。

信息

分类

AI与计算