使用说明
项目简介
本项目 '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 数量和温度参数等。
安装步骤
- 克隆仓库:
git clone https://github.com/ziyacivan/mcp-officer.git cd mcp-officer - 安装依赖:
pnpm install - 配置环境变量:
复制 '.env.example' 文件并重命名为 '.env',然后修改 '.env' 文件,填入你的 OpenAI API Key。
cp .env.example .env # 编辑 .env 文件,填入 OPENAI_API_KEY=your_api_key_here - 启动服务器:
服务器默认运行在 'http://localhost:3000'。pnpm start
服务器配置 (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客户端将通过此地址与服务器进行通信。
基本使用方法
-
获取警官信息 (Resource: 'officer-profile'): 使用 GET 请求访问 '/profile/{badgeNumber}' 端点,例如获取警徽编号为 '1234' 的警官信息:
curl http://localhost:3000/profile/1234或者使用 MCP 客户端,通过资源 URI 'lapd://officers/1234' 获取。
-
开始审讯 (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 请求,并传递请求体。
-
模拟嫌疑人回应 (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与计算