使用说明

项目简介

本项目 'mcp-officer' 是一个基于 Model Context Protocol (MCP) 的后端服务器,旨在模拟警察审讯过程。它利用 OpenAI 的 GPT-3.5-turbo 模型,根据设定的压力等级、犯罪类型和证据等信息,生成警官的审讯策略和对话,以及模拟嫌疑人的回应。该服务器通过 HTTP 协议提供资源访问和功能调用,可以作为 LLM 客户端的上下文信息提供者,用于构建交互式的审讯模拟应用。

主要功能点

  • 警官信息管理 (Resource):提供警官个人资料查询功能,例如警徽编号、姓名、部门等。
  • 智能审讯模拟 (Resource):根据嫌疑人信息、案件详情和压力等级,生成警官的审讯话术。
  • 嫌疑人回应模拟 (Tool - 仓库中未明确作为Tool定义,但功能上可以被LLM客户端作为Tool调用):根据警官的话术、嫌疑人性格和负罪感等因素,模拟嫌疑人的回答。
  • 数据验证:使用 Zod 库对请求数据进行强类型检查和验证,确保数据格式的正确性。
  • 配置灵活:允许通过 '.env' 文件和 'config.ts' 文件配置 OpenAI API 密钥、模型选择、Token 数量和温度参数等。

安装步骤

  1. 克隆仓库
    git clone https://github.com/ziyacivan/mcp-officer.git
    cd mcp-officer
  2. 安装依赖
    pnpm install
  3. 配置环境变量: 复制 '.env.example' 文件并重命名为 '.env',然后修改 '.env' 文件,填入你的 OpenAI API Key。
    cp .env.example .env
    # 编辑 .env 文件,填入 OPENAI_API_KEY=your_api_key_here
  4. 启动服务器
    pnpm start
    服务器默认运行在 'http://localhost:3000'。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置以下信息以连接到 'mcp-officer' 服务器。请注意,以下配置信息为 JSON 格式,用于 MCP 客户端进行配置,不是直接在服务器端执行的命令。

{
  "serverName": "LSPD Interrogation Server",
  "command": "node",
  "args": ["src/server.ts"],
  "transports": ["http"],
  "httpEndpoint": "http://localhost:3000"
}

配置参数注释:

  • 'serverName': 服务器名称,用于标识服务器,例如 "LSPD Interrogation Server"。
  • 'command': 启动服务器的命令,这里使用 'node' 运行 Node.js 服务器。
  • 'args': 启动命令的参数,指向服务器入口文件 'src/server.ts'。
  • 'transports': 服务器支持的传输协议,这里配置为 'http'。
  • 'httpEndpoint': HTTP 传输协议的端点地址,默认为 'http://localhost:3000'。MCP客户端将通过此地址与服务器进行通信。

基本使用方法

  1. 获取警官信息 (Resource: 'officer-profile'): 使用 GET 请求访问 '/profile/{badgeNumber}' 端点,例如获取警徽编号为 '1234' 的警官信息:

    curl http://localhost:3000/profile/1234

    或者使用 MCP 客户端,通过资源 URI 'lapd://officers/1234' 获取。

  2. 开始审讯 (Resource: 'conduct-interrogation'): 使用 POST 请求访问 '/interrogations/{suspectId}' 端点,并提供 JSON 格式的请求体,例如:

    curl -X POST http://localhost:3000/interrogations/suspect_01 \
      -H "Content-Type: application/json" \
      -d '{
        "suspectName": "John Doe",
        "pressureLevel": 80,
        "crime": "Drug trafficking",
        "evidence": ["Search records", "Confidential witness statement"]
      }'

    或者使用 MCP 客户端,通过资源 URI 'lapd://interrogations/suspect_01' 发起 POST 请求,并传递请求体。

  3. 模拟嫌疑人回应 (Tool - HTTP POST 请求模拟): 使用 POST 请求访问 '/interrogations/{suspectId}/respond' 端点,并提供 JSON 格式的请求体,模拟嫌疑人对警官话语的回应:

    curl -X POST http://localhost:3000/interrogations/suspect_01/respond \
      -H "Content-Type": "application/json" \
      -d '{
        "suspectName": "John Doe",
        "officerStatement": "Your fingerprints were found at the crime scene!",
        "guilt": 85,
        "personality": "cowardly",
        "previousResponses": ["I'm innocent!"]
      }'

    虽然 'generateSuspectResponse' 功能在代码中没有被显式声明为 MCP Tool,但 LLM 客户端可以将其视为需要调用的外部功能,通过 HTTP POST 请求触发。在更完善的 MCP 实现中,应该将类似 'generateSuspectResponse' 这样的功能注册为 Tool,以便 MCP 客户端可以更规范地调用。

注意: 本项目示例主要通过 HTTP 接口提供 MCP 服务器的功能,虽然使用了 '@modelcontextprotocol/sdk/server/mcp.js' SDK,但在实际的 MCP 客户端交互中,可能需要根据 MCP 协议的具体规范进行请求和响应处理。例如,更标准的 MCP 实现可能需要处理 JSON-RPC 格式的请求,并支持 WebSocket 或 SSE 等传输协议。 当前示例更侧重于通过 HTTP API 提供资源和功能。

信息

分类

AI与计算