本项目是一个基于 Model Context Protocol (MCP) 的 Node.js 服务器库,专注于为 LLM 应用提供访问和处理候选人信息的标准化接口。它被设计为一个可嵌入的库,而不是一个独立的应用程序,需要集成到其他 Node.js 应用中运行。

项目简介

该库允许开发者轻松地构建一个 MCP 服务器,该服务器可以托管候选人的各种信息(如简历文本、URL、社交媒体链接等)作为 MCP 资源,并提供与这些信息交互或基于这些信息执行操作的 工具(如发送邮件、生成面试问题)。它遵循 MCP 规范,通过 JSON-RPC 与 MCP 客户端(通常是 LLM 应用)通信。

主要功能点

  • 资源托管: 标准化提供候选人的结构化和非结构化数据,例如:
    • 简历内容(文本、URL)
    • LinkedIn、GitHub、个人网站的 URL
    • 个人网站内容(文本)
  • 工具注册与执行: 提供可供 LLM 调用的功能,包括:
    • 获取特定候选人数据(如简历文本、LinkedIn URL)
    • 通过配置的邮件服务发送邮件给候选人
    • 基于候选人信息生成面试问题或评估角色契合度(这些工具内部可能使用 Prompt 或外部逻辑)
  • Prompt 模板定义: 定义了多种 Prompt 模板,帮助 LLM 更好地理解和利用候选人信息,例如:
    • 获取候选人背景信息
    • 评估技术熟练度
    • 生成电话面试问题
    • 总结职业亮点
    • 评估职位匹配度

安装步骤

要使用此库,首先需要在你的 Node.js 项目中安装它:

npm install @jhgaylor/candidate-mcp-server

服务器配置

MCP 客户端需要知道如何启动并连接到你的 MCP 服务器实例。由于这是一个库,你需要编写一个 Node.js 脚本来创建服务器实例并连接到某个传输层(如 Stdio 或 HTTP)。以下是一个 MCP 客户端可能使用的配置示例(以 JSON 格式展示,实际使用时需要根据客户端的要求填写):

{
  "name": "Candidate MCP Server", 
  "command": "node",
  "args": [
    "path/to/your/server-runner.js", 
    "--stdio" 
  ],
  "transport": "stdio",
  "initializationOptions": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
       "roots": { "listChanged": true },
       "sampling": {}
    },
    "clientInfo": {
       "name": "YourLLMClient",
       "version": "1.0.0"
    }
  }
}

注意:

  • 'name': MCP 服务器的名称,可配置。
  • 'command': 启动服务器进程的命令,通常是 'node'。
  • 'args': 传递给 'command' 的参数数组。'path/to/your/server-runner.js' 应替换为你自己创建的、用于启动并配置此 MCP 服务器库的 JavaScript 文件路径(例如,编译后的 'examples/stdio.js' 的路径,或者你自己的集成脚本路径)。'--stdio' 参数指示服务器使用标准输入输出进行通信。
  • 'transport': 指定使用的传输协议,此处为 'stdio'。如果集成到 HTTP 服务器中,传输类型和配置会有所不同。
  • 'initializationOptions': 客户端初始化时发送给服务器的参数,包含协议版本、客户端能力等信息。

在你自己的 'server-runner.js' 脚本中,你需要引入 '@jhgaylor/candidate-mcp-server' 库,创建服务器实例,并配置具体的候选人数据和服务器设置(如 Mailgun API 密钥),然后连接到选定的传输层。

基本使用方法

一旦 MCP 服务器实例在你自己的应用中启动并通过 Stdio 或 HTTP 与 MCP 客户端建立了连接,LLM 客户端就可以发送标准的 JSON-RPC 请求来与服务器交互:

  1. 获取服务器能力: 发送 'initialize' 请求来了解服务器支持的资源、工具和 Prompt。
  2. 列出资源: 发送 'resources/list' 请求获取所有可用资源的 URI 和信息。
  3. 读取资源: 发送 'resources/read' 请求(带资源 URI 参数)获取特定候选人信息(如简历文本)。
  4. 列出工具: 发送 'tools/list' 请求获取所有可用工具的名称、描述和参数 schema。
  5. 调用工具: 发送 'tools/call' 请求(带工具名称和参数)执行特定操作(如 'get_github_url' 获取 GitHub URL,或 'contact_candidate' 发送邮件)。
  6. 使用 Prompt 模板: 发送 'prompts/render' 请求(带 Prompt 名称和参数)获取用于 LLM 交互的 Prompt 文本。

LLM 客户端解析服务器返回的 JSON-RPC 响应来获取数据或了解工具调用的结果。

信息

分类

AI与计算