该仓库提供了一个基于TypeScript实现的Model Context Protocol (MCP) 资源服务器示例,重点展示了如何集成OAuth 2.0进行认证、使用Firestore进行数据存储以及处理多租户(工作空间)上下文。它是一个学习资源,而非开箱即用的生产服务器。
主要功能点
- 遵守MCP协议: 实现MCP服务器的核心功能,处理来自LLM客户端的JSON-RPC请求。
- 工具注册与执行: 定义并注册示例工具(如 'get_agent'),允许LLM通过协议调用这些工具。
- OAuth 2.0认证: 利用MCP SDK的中间件和自定义服务,验证客户端请求中携带的OAuth Bearer Token,确保请求的合法性。
- 工作空间隔离: 在工具处理逻辑中强制要求并验证 'workspace_id',结合用户权限检查,实现数据和功能的租户隔离。
- Firestore集成: 示例工具和认证逻辑演示了如何与Google Cloud Firestore数据库进行交互,存取用户、OAuth信息和业务数据。
- 类型安全与校验: 使用TypeScript提供强大的类型检查,使用Zod定义工具的输入/输出Schema并进行运行时数据验证。
安装步骤
- 克隆仓库:
git clone YOUR_REPO_URL_HERE cd mcp-server-demo - 安装依赖:
npm install # 或者 yarn install - 配置环境变量: 复制 '.env.example' 文件到 '.env',并编辑填写以下必填配置:
重要: 需要自行搭建或使用一个OAuth 2.0认证服务器。本项目仅作为资源服务器负责验证令牌。# Firestore 项目 ID PROJECT_ID="your-gcp-project-id" # 你的OAuth认证服务器的Issuer URL OAUTH_ISSUER_URL="https://your-auth-server.com" # 本MCP服务器可访问的Base URL BASE_URL="http://localhost:8080" # 或实际部署的URL # 服务文档URL (可选) DOCS_URL="http://localhost:8080/docs" # 或实际文档URL - 设置Firestore: 配置好Google Cloud SDK以连接到你的GCP项目,或者使用Firestore模拟器(启动命令:'gcloud emulators firestore start --host-port=localhost:8081')。可能需要手动或通过脚本添加一些测试数据(用户、工作空间、OAuth令牌等)。
- 构建项目:
npm run build
服务器配置(供MCP客户端使用)
本服务器通过HTTP协议提供服务。MCP客户端通常需要知道服务器的地址和必要的启动信息才能建立连接或管理服务器进程。虽然这是一个HTTP服务器,根据MCP客户端的标准配置模式,需要提供启动进程的命令和参数。
{ "server name": "TypeScript MCP 资源服务器示例", "command": "node", "args": ["dist/index.js"] }
说明:
- 'server name': 服务器的友好名称。
- 'command': 用于启动服务器进程的命令。这里是Node.js运行时。
- 'args': 传递给命令的参数。'dist/index.js' 是构建后的服务器入口文件。
客户端在启动此进程后,应通过HTTP协议连接到服务器配置中指定的 'BASE_URL' 和 '/mcp' 路径(例如 'http://localhost:8080/mcp')进行JSON-RPC通信。客户端需要在请求头中提供 'Authorization: Bearer <token>'。
基本使用方法
启动服务器:
npm start # 或者在开发模式下带热重载 # npm run dev
服务器将在配置的端口上监听。一个MCP客户端(如基于 '@modelcontextprotocol/sdk/client' 构建的应用)可以通过HTTP向 '/mcp' 路径发送JSON-RPC请求。例如,要调用 'get_agent' 工具,客户端会发送一个 'tool_call' 请求,包含工具名称、工作空间ID和Agent ID,并附带有效的OAuth Bearer Token。服务器会验证Token和工作空间访问权限,然后执行工具逻辑,查询Firestore并将结果返回给客户端。
信息
分类
AI与计算