项目简介

这是一个基于 Node.js 和 TypeScript 实现的模型上下文协议 (MCP) 服务器示例。它展示了如何构建一个提供工具(Tools)的 MCP 服务器,并通过 SSE(Server-Sent Events)协议与 MCP 客户端通信。该示例聚焦于 TODO 列表的管理工具,并使用 PostgreSQL 数据库存储数据。虽然仓库标题提到 Azure Container Apps 部署,但核心代码是本地运行的 MCP 服务器实现。

主要功能点

  • 提供 TODO 管理工具: 服务器提供添加、列出、完成和删除 TODO 事项的功能。这些功能作为 MCP 工具暴露给客户端。
  • 支持 MCP SSE 协议: 服务器通过 Server-Sent Events 协议接收客户端请求和发送通知。
  • MCP 工具声明与执行: 服务器定义并注册了一组 TODO 相关的工具,能够根据客户端(如大型语言模型)的请求执行相应的工具函数。
  • 数据库集成: 使用 PostgreSQL 数据库来持久化存储 TODO 列表数据。

安装步骤

  1. 克隆仓库: 将 'https://github.com/Azure-Samples/mcp-container-ts' 仓库克隆到本地。
  2. 安装 Node.js 和 npm: 确保您的系统安装了 Node.js (v23+) 和 npm。
  3. 安装 Docker: 建议安装 Docker,用于运行 PostgreSQL 数据库。
  4. 启动 PostgreSQL 数据库: 在仓库根目录下,使用 Docker Compose 启动数据库服务。
    docker compose up -d --build 'postgres'
    这将启动一个 PostgreSQL 容器,MCP 服务器将连接到该容器。
  5. 安装项目依赖: 在仓库根目录下,使用 npm 安装项目所需的库。
    npm install

服务器配置

本仓库实现的是一个 MCP 服务器,用于与 MCP 客户端通信。要让客户端能够连接并使用此服务器,您需要在客户端进行配置。典型的 MCP 客户端配置会包含服务器的名称、类型(协议)和连接 URL。

对于此服务器示例,MCP 客户端需要以下配置信息:

  • 服务器名称 (name): 可以自定义,例如 'mcp-todo-server'。
  • 连接类型 (type): 'sse' (表示使用 Server-Sent Events 协议)。
  • 连接地址 (url): 服务器运行后的 SSE 端点地址,默认是 'http://localhost:3000/sse'。

客户端通常会将这些信息保存在配置文件(如 '.vscode/mcp.json' 或客户端的设置界面)中,然后根据这些信息建立与服务器的连接,获取可用的工具列表,并发送工具调用请求。

基本使用方法

  1. 启动 MCP 服务器: 完成安装步骤后,在仓库根目录下运行以下命令启动服务器。
    npm start
    服务器启动后,您将在控制台看到服务器运行的提示信息和 SSE 端点地址(默认为 'http://localhost:3000/sse')。
  2. 连接 MCP 客户端: 使用兼容的 MCP 客户端(如支持 MCP 协议的 VS Code 扩展、MCP Inspector 等)。
  3. 配置客户端连接: 在客户端中,根据上述“服务器配置”部分提供的信息(类型 'sse',地址 'http://localhost:3000/sse')添加或配置 MCP 服务器连接。
  4. 使用工具: 连接成功后,客户端可以发现服务器提供的 TODO 管理工具。您可以通过客户端界面或与大型语言模型交互来触发工具调用,例如:
    • 请求大模型“请帮我把给 Dan 发邮件这件事添加到我的待办列表”,大模型可能会识别意图并调用服务器的 'add_todo' 工具。
    • 直接在客户端中选择并调用 'list_todos' 工具,查看当前待办列表。
    • 调用 'complete_todo' 或 'delete_todo' 工具,完成或删除待办事项(可能需要提供待办事项的 ID)。
  5. 停止服务器: 在运行 'npm start' 的终端窗口中按 'Ctrl + C' 来停止 MCP 服务器。

信息

分类

开发者工具