项目简介

'mcp-typescript-sample' 是一个完整的 MCP (Model Context Protocol) 服务器和客户端实现示例,使用 TypeScript (Node.js) 编写。它展示了如何构建一个生产就绪的 MCP 设置,包括基于 JWT 的认证,并提供了与大型语言模型 (LLM) 进行工具调用的能力。该项目特别集成了 Microsoft Entra ID (Azure AD) 进行身份验证,并通过 MCP 工具调用 Microsoft Graph API。

主要功能点

  • MCP 服务器实现: 遵循 Model Context Protocol 标准,提供工具注册、执行以及 JSON-RPC over HTTP 通信。
  • 集成身份验证: 通过 Microsoft Entra ID 实现 JWT 令牌验证,确保服务器端 API 的安全性。
  • 工具调用能力: 示例中包含一个 "echo" 工具和一个通过 Microsoft Graph API 获取租户用户列表的工具,展示了 MCP 如何与外部服务集成。
  • LLM 交互: 客户端通过 MCP 服务器提供的工具与 LLM(如 Ollama 或 OpenAI)进行交互,支持流式响应和自动化工具调用。
  • 开发与生产就绪: 提供了开发和生产环境的配置及运行指南,方便快速部署和使用。

安装步骤

  1. 环境准备:
    • 确保已安装 Node.js (v18 或更高版本)。
    • 如果需要在本地运行 LLM 客户端演示,请安装 Ollama 并拉取 'qwen3:4b' 模型。
  2. Microsoft Entra ID 配置:
    • 在您的 Entra ID 租户中注册一个应用程序。
    • 配置 API 权限,添加名为 'mcp:tools' 的自定义作用域。
    • 配置身份验证设置,以便客户端可以进行交互式登录。
    • 您需要获取以下信息用于配置:'AZURE_TENANT_ID', 'AZURE_CLIENT_ID', 'AZURE_CLIENT_SECRET' (用于服务器), 'AZURE_CLIENT_SCOPE' (格式为 'api://<client-id>/mcp:tools')。
  3. 克隆仓库:
    git clone https://github.com/tmaestrini/mcp-typescript-sample.git
    cd mcp-typescript-sample
  4. 服务器端设置:
    • 进入 'server' 目录:'cd server'
    • 复制 '.env.template' 为 '.env':'cp .env.template .env'
    • 编辑 '.env' 文件,填入您的 Entra ID 凭据和服务器端口(例如 'REMOTE_MCP_SERVER_PORT=3000')。
    • 安装依赖:'npm install'
    • 运行服务器:'npm start' (开发模式) 或 'npm run build && node dist/main.js' (生产模式)。
  5. 客户端设置 (可选,如果需要测试完整流程):
    • 进入 'client' 目录:'cd client'
    • 复制 '.env.template' 为 '.env.development':'cp .env.template .env.development'
    • 编辑 '.env.development' 文件,填入您的 Entra ID 凭据和 MCP 服务器的基础 URL(例如 'REMOTE_MCP_SERVER_BASE_URL=http://localhost:3000/mcp')。
    • 安装依赖:'npm install'
    • 运行客户端:'npm start'。客户端将引导您完成 Entra ID 认证,然后您可以开始与 LLM 交互。

服务器配置信息 (供 MCP 客户端连接)

MCP 服务器在 'http://localhost:3000/mcp' 地址上通过 HTTP POST 方法提供服务。您的 MCP 客户端需要配置以下信息才能连接到此服务器:

{
  "name": "ts-mcpserver",
  "command": "http_transport",
  "args": {
    "url": "http://localhost:3000/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_ACCESS_TOKEN"
    }
  }
}
  • 'name': 服务器的名称,本示例中为 'ts-mcpserver'。
  • 'command': 指示 MCP 客户端使用 HTTP 传输协议连接服务器。
  • 'args.url': MCP 服务器的访问地址。请确保服务器已启动并在该地址监听请求。
  • 'args.headers.Authorization': 用于身份验证的 Bearer 令牌。这是一个示例,您的 MCP 客户端需要获取并在此处提供有效的 Entra ID 访问令牌。

基本使用方法

  1. 确保 MCP 服务器已按上述步骤运行。
  2. 运行客户端程序(如果需要通过命令行交互)。
  3. 客户端会引导您通过浏览器进行 Microsoft Entra ID 认证。
  4. 认证成功后,客户端将显示从 MCP 服务器注册的工具列表。
  5. 在命令行提示符下输入问题,例如 "How many users work in my company?",客户端将利用 LLM 和 MCP 服务器的工具来生成答案。

信息

分类

AI与计算