POC-MCP-。NET模型上下文协议服务器
使用的MCP(模型上下文协议)服务器的概念验证实现。NET 9.0和官方的微软ModelContextProtocol SDK。
🚀 GitHub复制品准备就绪! 该项目包括为VS Code预配置的MCP集成。打开项目并询问Copilot: *“启动带有图形界面的番茄钟”* 看看MCP在行动!
概述
本项目演示了如何使用C#和创建和分发MCP服务器。网。服务器公开了AI客户端(如GitHub Copilot、Claude等)可以通过标准化的MCP协议调用的工具。
什么是MCP?
模型上下文协议(MCP)是一个开放标准,使AI助手能够安全地连接到外部数据源和工具。它为人工智能模型提供了一种标准化的方式,通过一个通用界面与各种资源进行交互。
项目结构
POC-MCP/
├── .github/
│ └── copilot-instructions.md # AI coding agent guidelines
├── docs/ # Comprehensive documentation
│ ├── README.md # Documentation overview
│ ├── getting-started.md # Setup and quick start guide
│ ├── architecture.md # Technical architecture details
│ ├── api-reference.md # MCP tools and API documentation
│ ├── deployment.md # Build, versioning, and deployment guide
│ ├── adr/ # Architecture Decision Records
│ │ ├── README.md # ADR index and guidelines
│ │ ├── 001-dotnet-9-mcp-server.md
│ │ ├── 002-stdio-transport.md
│ │ ├── 003-attribute-based-tools.md
│ │ └── 004-self-contained-distribution.md
│ └── examples/ # Code examples and patterns
├── scripts/
│ └── version.sh # Version management script
├── src/
│ └── SampleMcpServer/ # Main MCP server implementation
│ ├── .mcp/
│ │ └── server.json # MCP server metadata
│ ├── Tools/
│ │ └── RandomNumberTools.cs # Example MCP tools
│ ├── Program.cs # Application entry point
│ ├── SampleMcpServer.csproj # Project configuration
│ └── README.md # Server-specific documentation
├── Directory.Build.props # Centralized build properties and versioning
├── global.json # .NET SDK version specification
├── POC-MCP.sln # Visual Studio solution file
└── README.md # This file特性
- ✅ 跨平台:针对Windows、macOS和Linux(多种体系结构)的构建
- ✅ 自足:没有。目标计算机上需要.NET运行时
- ✅ NuGet分发:通过NuGet打包和分发
- ✅ stdio传输:通过stdin/stdout使用JSON-RPC进行通信
- ✅ 工具发现:AI助手可以自动发现可用的工具
- ✅ IDE集成:适用于VS Code和Visual Studio
- 🤖 GitHub复制集成:中预先配置了MCP设置
.vscode/mcp.json - 🍅 番茄钟定时器工具:控制台和图形界面Pomodoro会话
- 🎲 示例工具:用于测试的随机数生成
快速开始
先决条件
- .NET 9.0 SDK
- 兼容的IDE(VS Code或支持MCP的Visual Studio)
发展
- 克隆并导航到项目:
git clone https://github.com/ballombert/POC-MCP.git
cd POC-MCP- 构建解决方案:
dotnet build- 运行MCP服务器:
dotnet run --project src/SampleMcpServer- 使用GitHub Copilot进行测试(VS代码):
- MCP服务器已在中预先配置 .vscode/mcp.json - 在VS代码中打开GitHub Copilot聊天 - 尝试以下命令: - “给我3个随机数” - “启动带有图形界面的番茄钟” - “用法语开始30分钟的工作会议” - MCP服务器应自动调用!
建筑和配电
建筑和配电
- 为所有平台构建:
dotnet pack -c Release或者使用版本脚本:
./scripts/version.sh pack- 管理版本:
# Show current version
./scripts/version.sh show
# Bump version
./scripts/version.sh bump patch
# Set specific version
./scripts/version.sh set 1.0.0-rc1- 发布到NuGet:
dotnet nuget push bin/Release/*.nupkg --api-key --source https://api.nuget.org/v3/index.json🤖 GitHub复制集成
此项目预装了GitHub Copilot集成!在VS Code中打开此项目时,MCP服务器会自动可用。
可用命令
向GitHub Copilot询问以下任何命令:
🍅 番茄钟
- *“启动带有图形界面的番茄钟”*
- *“开始一个25分钟的工作会议,休息5分钟”*
- *“打开法语番茄钟”*
- *“停止我当前的番茄钟课程”*
- *“我的番茄钟的状态如何?”*
🎲 公用事业
- *“给我3个随机数”*
- *“生成10到50之间的随机数”*
工作原理
- 自动检测:VS代码自动加载
.vscode/mcp.json - 后台服务器:当Copilot需要时,MCP服务器会运行
- 工具调用:Copilot会自动为您的请求选择合适的工具
- 实际结果:获取实际的番茄钟和随机数!
看 有关详细的设置说明。
示例工具
示例服务器包括多个工具类,用于演示:
🎲 随机数字工具
- 工具法装饰
[McpServerTool] - 参数文档
[Description]属性 - 默认参数值
- 返回值处理
🍅 番茄工具
- 基于控制台的番茄钟会话
- 图形界面启动
- 会话管理和状态检查
- 多语言支持(6种语言)
- 流程启动和错误处理
[McpServerTool]
[Description("Generates a random number between the specified minimum and maximum values.")]
public int GetRandomNumber(
[Description("Minimum value (inclusive)")] int min = 0,
[Description("Maximum value (exclusive)")] int max = 100)
{
return Random.Shared.Next(min, max);
}建筑
- 主机:微软。扩展。应用程序生命周期托管
- 运输:基于stdio的JSON-RPC通信
- 软件开发工具包:官方ModelContextProtocol NuGet包
- 日志记录:配置为stderr(stdout保留用于协议)
- 包装:独立、单文件可执行
文档
- 完整的文件 -全面的指南和参考
- 入门指南 -设置和快速入门指南
- 建筑 -技术架构细节
- API 参考 -MCP工具和方法文档
- 部署指导 -构建、版本控制和分发
- 架构决策(ADR) -重要的架构决策和基本原理
- 例子 -代码示例和使用模式
- 服务器实现 -服务器特定详细信息
- AI编码指南 -适用于AI开发代理
- MCP官方文件 -外部资源
- 协议规范 -MCP协议详细信息
贡献
这是一个概念验证项目。贡献时:
- 遵循现有代码库中建立的模式
- 添加新功能时更新文档
- 提交前与实际的AI助手进行测试
- 考虑跨平台兼容性
许可证
______________________________________________________________________
有关详细的实施指南和开发模式,请参阅 .
