项目简介
'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)进行交互,支持流式响应和自动化工具调用。
- 开发与生产就绪: 提供了开发和生产环境的配置及运行指南,方便快速部署和使用。
安装步骤
- 环境准备:
- 确保已安装 Node.js (v18 或更高版本)。
- 如果需要在本地运行 LLM 客户端演示,请安装 Ollama 并拉取 'qwen3:4b' 模型。
- 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')。
- 克隆仓库:
git clone https://github.com/tmaestrini/mcp-typescript-sample.git cd mcp-typescript-sample - 服务器端设置:
- 进入 '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' (生产模式)。
- 客户端设置 (可选,如果需要测试完整流程):
- 进入 '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 访问令牌。
基本使用方法
- 确保 MCP 服务器已按上述步骤运行。
- 运行客户端程序(如果需要通过命令行交互)。
- 客户端会引导您通过浏览器进行 Microsoft Entra ID 认证。
- 认证成功后,客户端将显示从 MCP 服务器注册的工具列表。
- 在命令行提示符下输入问题,例如 "How many users work in my company?",客户端将利用 LLM 和 MCP 服务器的工具来生成答案。
信息
分类
AI与计算