项目简介

该仓库包含多个 Model Context Protocol (MCP) 服务器的实现示例,旨在展示如何构建与 Microsoft Copilot Studio 兼容的 MCP 后端。这些示例涵盖了使用 TypeScript 和 C# 语言,并演示了通过 HTTP 和 SSE 两种传输协议与 MCP 客户端(如 Copilot Studio)进行通信。

主要功能点

  • 工具注册与执行: 示例服务器定义并注册了多种工具(Tools),如查询员工剩余年假、记录年假使用、获取笑话、执行简单计算等。客户端可以通过 MCP 协议调用这些工具,服务器执行相应的逻辑并返回结果。
  • 多协议支持: 仓库中的示例展示了如何使用 MCP SDK 实现基于 HTTP POST (streamable HTTP) 和 Server-Sent Events (SSE) 的 MCP 传输。
  • 数据集成示例: 部分示例集成了外部数据存储(如 Azure Table Storage)或第三方 API(如笑话 API),演示了 MCP 服务器如何作为桥梁连接 LLM 客户端与外部服务和数据源。

安装步骤

要运行这些示例,你需要先克隆仓库并安装依赖。

  1. 克隆仓库:

    git clone https://github.com/microsoft/copilot-studio-mcp.git
    cd copilot-studio-mcp
  2. 选择并进入示例目录: 根据你想运行的示例进入对应的子目录,例如运行 TypeScript HTTP 示例:

    cd samples/employeevacations-http-typescript

    或者运行 C# HTTP 示例:

    cd samples/employeevacations-http-csharp

    或者运行 TypeScript SSE 示例:

    cd samples/calculator-sse-typescript

    cd samples/jokesmcp-sse-typescript
  3. 安装依赖:

    • 对于 TypeScript 示例:
      npm install
      npm run build # 可能需要编译,具体看示例目录的 package.json
    • 对于 C# 示例:
      dotnet restore
  4. 配置环境变量: 部分示例(如员工年假示例)需要配置连接字符串或其他环境变量。请参照具体示例目录下的说明或代码中的提示设置所需的环境变量(例如,'TABLE_CONNECTION_STRING' 或 'ConnectionStrings:tableServiceConnectionName')。

  5. 启动服务器:

    • 对于 TypeScript 示例:
      npm start # 或者 node dist/your_main_file.js
    • 对于 C# 示例:
      dotnet run

服务器启动后,将监听指定的端口(通常是 3000 或 3001),等待 MCP 客户端连接。

服务器配置 (供MCP客户端使用)

MCP 客户端(如 Microsoft Copilot Studio)连接到此服务器时,需要提供服务器的启动信息和连接地址。通常这些信息会配置在一个 JSON 对象中。以下是配置的关键字段及其从示例中提取的示例值:

  • 'name': 服务器的名称,例如在 TypeScript HTTP 示例中是 '"mcp-streamable-http"',在 SSE Calculator 示例中是 '"calculatorDemo"',在 SSE Jokes 示例中是 '"jokesMCP"'。客户端使用此名称识别服务器。
  • 'command': 用于启动服务器的可执行命令。对于 Node.js 示例,通常是 '"node"'。对于 C# 示例,通常是 '"dotnet"'。
  • 'args': 传递给启动命令的参数列表。这通常是主程序文件的路径。例如,对于 TypeScript HTTP 示例编译后的文件可能是 '["dist/app.js"]';对于 C# 示例可能是 '["bin/Debug/netX.0/MCP.HTTP.Server.dll"]'(具体路径取决于你的 .NET 版本和构建配置)。客户端会执行 'command' 加上 'args' 来启动 MCP 服务器进程。
  • 'uri' / 连接地址: 客户端连接服务器的 URL。对于 HTTP 示例,可能是 'http://localhost:3000/mcp'。对于 SSE 示例,SSE 连接通常是 'http://localhost:3001/sse' 或 'https://your_host/sse',而 POST 地址可能是不同的路径,如 '/jokes' 或 '/mcpfy/v1/calculatordemo'。请根据你运行的具体示例和配置的端口号确定准确的地址。

例如,连接到 TypeScript Employee Vacation HTTP 示例的客户端配置可能包含:

{
  "name": "mcp-streamable-http",
  "command": "node",
  "args": ["path/to/samples/employeevacations-http-typescript/dist/app.js"],
  "uri": "http://localhost:3000/mcp"
}

请注意替换 'path/to/...' 为你的实际文件路径,并根据实际运行情况调整端口号和 URI。

基本使用方法

一旦 MCP 服务器成功启动并通过客户端进行了配置,MCP 客户端将能够发现服务器声明的能力(如工具列表)。LLM 模型在需要执行特定任务时,会向 MCP 客户端发送请求,客户端再通过配置好的传输通道将对应的 MCP 请求发送给你的服务器。服务器执行工具逻辑后,会将结果通过同一通道返回给客户端,最终反馈给 LLM。用户通常通过与 LLM 进行对话来间接使用这些服务器提供的功能。

信息

分类

开发者工具