Token导航 LogoToken导航TokenDH.com
shos.mcpsample2 logo
AI代理未说明官方级别未说明来源级核验

shos.mcpsample2

MCP Server

一个展示Model Context Protocol (MCP)在C#中实现的综合示例解决方案,包含多种服务器类型和客户端应用。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
服务器实现C#AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Fujiwo

提供方

Fujiwo

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

肖。MCPSample2

一个全面的示例解决方案,展示了 模型上下文协议(MCP) 用C#实现,具有多种服务器类型和客户端应用程序。

概述

此解决方案展示了三种不同的MCP服务器实现和一个可以连接到所有这些实现的客户端:

  • 控制台STDIO MCP服务器 -使用标准输入/输出进行MCP通信
  • Web SSE MCP服务器 -使用HTTP进行服务器发送事件传输
  • Web HTTP MCP服务器 -使用流式HTTP传输
  • MCP客户端 -连接到所有服务器类型的交互式控制台应用程序

建筑

┌─────────────────┐    ┌──────────────────────┐
│   MCP Client    │    │   Shared MCP Tools   │
│                 │    │                      │
│ - Interactive   │    │ - GetRandomNumber    │
│ - Multi-server  │    │ - CalculateFactorial │
│ - Transport     │    │ - IsPrime            │
│   demos         │    │ - ReverseString      │
│ - OAuth 2.1     │    │ - GetCurrentTime     │
│   PKCE Client   │    │ - FormatDate         │
└─────────────────┘    │ - CalculateDistance  │
         │              │ - GenerateFibonacci   │
         │              └──────────────────────┘
         ▼                        ▲
┌─────────────────┐              │
│ OAuth 2.1       │              │
│ Protected       │              │
│ MCP Servers     │              │
│                 │              │
│ ├ Console STDIO │──────────────┤ (No OAuth)
│ ├ Web SSE       │──────────────┤ (OAuth 2.1)
│ └ Web HTTP      │──────────────┘ (OAuth 2.1)
└─────────────────┘

项目

1.鞋子。MCPSample2.Server。控制台

控制台STDIO MCP服务器

  • 传输:标准输入/输出(STDIO)
  • 端口:N/A(使用STDIN/STDOUT)
  • 用途:直接过程通信
  • 最适合:本地集成、CLI工具、GitHub Copilot

2.鞋子。MCPSample2.Server。WebSSE

使用OAuth 2.1的Web SSE MCP服务器

  • 传输:HTTP与服务器发送的事件
  • 端口:5001(HTTP),7001(HTTPS)
  • 端点: /api/mcp (OAuth 2.1受保护)
  • OAuth:使用PKCE的授权代码流
  • 最适合:实时web应用程序、持久连接

3.鞋子。MCPSample2.Server。WebHTTP

基于OAuth 2.1的Web HTTP MCP服务器

  • 传输:流式HTTP
  • 端口:5002(HTTP),7002(HTTPS)
  • 端点: /api/mcp (OAuth 2.1受保护)
  • OAuth:使用PKCE的授权代码流
  • 最适合:类似REST的集成、无状态连接

4.鞋子。MCPSample2.客户端

支持OAuth 2.1的MCP客户端应用程序

  • 交互式控制台应用程序
  • 连接到所有三种服务器类型
  • 演示不同的运输方法
  • 显示服务器功能和运行状况检查
  • OAuth 2.1 PKCE客户端实现
  • 测试OAuth授权流

5.鞋子。MCPSample2.共享

共享库

  • 所有服务器使用的通用MCP工具
  • 演示各种工具类型:

- 数学的:随机数、阶乘、素数检验、斐波那契 - 字符串操作:反向字符串 - 日期/时间:当前时间、日期格式 - 几何的:距离计算

可用的MCP工具

所有服务器通过共享库公开相同的工具集:

工具说明参数
GetRandomNumber生成随机数min (int), max (int)
CalculateFactorial计算阶乘number (int)
IsPrime检查数字是否为素数number (int)
ReverseString反转字符串input (字符串)
GetCurrentTime获取当前UTC时间
FormatDate格式化日期字符串date (日期时间), format (字符串)
CalculateDistance计算二维距离x1, y1, x2, y2 (双)
GenerateFibonacci生成斐波那契数列count (int)

快速开始

先决条件

运行应用程序

  1. 克隆和构建:
   git clone https://github.com/Fujiwo/Shos.MCPSample2.git
   cd Shos.MCPSample2
   dotnet build
  1. 启动MCP客户端:
   cd Shos.MCPSample2.Client
   dotnet run
  1. 启动单个服务器 (在单独的终端中):

控制台STDIO服务器:

   cd Shos.MCPSample2.Server.Console
   dotnet run

网络SSE服务器:

   cd Shos.MCPSample2.Server.WebSSE  
   dotnet run
   # Server starts at: http://localhost:5001

Web HTTP服务器:

   cd Shos.MCPSample2.Server.WebHTTP
   dotnet run  
   # Server starts at: http://localhost:5002

测试服务器

控制台STDIO服务器

STDIO服务器通过标准输入/输出进行通信。它的设计用途是:

  • 可以启动流程的MCP客户端
  • GitHub Copilot(正确配置后)
  • 支持MCP的其他开发工具

Web服务器(SSE和HTTP)

两个web服务器都提供:

  • MCP端点: /api/mcp
  • 健康检查: /weatherforecast
  • Swagger用户界面: /swagger (处于开发模式)

测试web服务器:

# Health check
curl http://localhost:5001/weatherforecast  # SSE server
curl http://localhost:5002/weatherforecast  # HTTP server

# Access Swagger UI
open http://localhost:5001/swagger  # SSE server  
open http://localhost:5002/swagger  # HTTP server

MCP客户端使用情况

客户端应用程序提供了一个支持OAuth 2.1的交互式菜单:

=== MCP Client Sample with OAuth 2.1 ===
Select a server to connect to:
1. Console STDIO MCP Server (No OAuth - Local only)
2. Web SSE MCP Server (HTTP) - OAuth 2.1 Protected
3. Web HTTP MCP Server (HTTP) - OAuth 2.1 Protected
4. Test OAuth 2.1 Flow
5. Exit

每个选项都演示了:

  • 如何连接到该传输类型
  • 可用服务器功能
  • 健康检查结果
  • OAuth 2.1保护状态
  • 服务器未运行时的安装说明

选项4 提供了一个完整的OAuth 2.1 PKCE流程演示,显示:

  • OAuth发现
  • PKCE挑战生成
  • 授权码交换
  • 受保护端点的访问令牌使用情况

开发说明

技术栈

  • .NET 8.0:目标框架
  • 模型上下文协议:官方C#MCP SDK(预览版)
  • 模型上下文协议。AspNetCore:ASP。NET核心集成
  • 微软。扩展。托管:依赖注入和托管

运输类型

  1. STDIO传输

- 直接过程沟通 - 使用人: WithStdioServerTransport() - 最适合:本地工具、IDE集成

  1. HTTP传输(SSE和流式传输)

- 基于网络的通信 - 使用人: WithHttpTransport() - 最适合:Web应用程序、远程服务

架构优势

  • 共享工具:所有服务器的通用功能
  • 运输灵活性:相同的工具,不同的连接方法
  • 可扩展:易于添加新工具或服务器
  • 遵从标准:使用官方MCP SDK

OAuth 2.1集成

OAuth 2.1实现现已完成!

MCP web服务器(WebSSE和WebHTTP)现在使用PKCSE(代码交换证明密钥)通过OAuth 2.1授权进行保护,以增强安全性。

OAuth 2.1功能

  • PKCE 需要:所有授权流都使用PKCE进行安全保护
  • JWT承载代币:访问令牌为JWT格式,具有安全签名
  • 发现端点:标准OAuth发现位于 /.well-known/oauth-authorization-server
  • 授权码流:标准OAuth 2.1授权代码流
  • MCP保护:MCP端点需要有效的承载令牌

OAuth 2.1端点

这两个web服务器都公开了以下OAuth端点:

终点目的
/.well-known/oauth-authorization-serverOAuth发现信息
/oauth/authorize授权端点(需要PKCE)
/oauth/token令牌交换端点
/api/mcp受保护的MCP端点(需要Bearer令牌)

测试OAuth 2.1

  1. 启动web服务器:
   cd Shos.MCPSample2.Server.WebSSE
   dotnet run  # Starts on http://localhost:5001
  1. 使用OAuth测试运行客户端:
   cd Shos.MCPSample2.Client
   dotnet run
   # Select option 4: "Test OAuth 2.1 Flow"
  1. 手动OAuth流测试:
   # Discovery
   curl http://localhost:5001/.well-known/oauth-authorization-server

   # Test protected endpoint (should return 401)
   curl -I http://localhost:5001/api/mcp

   # Generate PKCE challenge and test full flow
   # (See client implementation for complete example)

OAuth 2.1配置

OAuth设置已在中配置 appsettings.json:

{
  "OAuth": {
    "Issuer": "https://localhost:7001",
    "Audience": "mcp-api",
    "AccessTokenExpirationMinutes": 60,
    "DefaultClientId": "mcp-sample-client",
    "DefaultRedirectUri": "http://localhost:8080/callback"
  }
}

安全说明:JWT签名密钥目前是硬编码的,用于演示目的。在生产环境中,使用安全密钥管理(Azure密钥库等)。

贡献

这是一个演示MCP概念的示例/教育项目。您可以将其作为您自己的MCP实现的起点。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

资源

目录标签

目录标签

服务器实现C#AI代理MCP协议本地部署C#开发OAuth2.1客户端应用

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP