当前位置: 首页 > news >正文

MCP 与 .NET 开发:影响与机遇

MCP 与 .NET 开发:影响与机遇

作 者:WPFDevelopersOrg -驚鏵

现在发布这篇文章,简直就是在炒冷饭,大家都腻了吧?不过,从我开发并使用的角度来看,这次我想分享一些不同的体验和看法,或许能带来新的启发!

什么是MCP

MCP,全名是Model Context Protocol(模型上下文协议) ,这是Anthropic公司在2024 年 11 月 25日推出的技术协议并发布的文章:https://www.anthropic.com/news/model-context-protocol[1]。MCP 旨在定义一套通用通信规则,借助这套规则,AI 助手就能连接外部资源,让给出的回应更准确、更好用。

核心作用MCP相当于AI世界的TYPE-C,解决了不同厂商、不同模型工具接入方式不统一的问题。它将外部能力抽象为三类资源:

  • Tools(工具):可执行的动作(如run_sqlsend_emailfile_system)。

  • Resources(资源):可浏览的数据或状态(如文件系统、数据库表)。

  • Prompts(模板):可复用的提示模板(如generate_unit_test)。

通过统一的调用协议(基于JSON-RPC双向流),MCP Client(如ChatGPTClaudeIDE插件)与MCP Server(封装工具和资源的服务端)解耦,开发者只需实现一次工具,即可跨平台、多模型复用。

大家也可以去阿里云旗下AI开源社区魔搭(ModelScopeMCP广场社区[2],上传自己的MCPServer或下载现成的MCPServer进行体验。

下面演示使用.NET创建一个MCPServer

下面使用官方的modelcontextprotocol包进行演示, 从官方 SDK[3]的完整清单看到大部分开发语言都已经支持。

1. 新建一个控制台MCPServerDemo项目:
2. 引入所需的 NugetModelContextProtocol
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.3" /> <PackageReference Include="ModelContextProtocol" Version="1.0.0" />
3.新建FileSystem tools类:
  • 简单但实用的文件保存工具

using ModelContextProtocol.Server; using System.ComponentModel; using System.Text; namespaceMCPServerDemo.Tools { [McpServerToolType] publicclassFileSystem { [McpServerTool, Description("将内容保存成 txt 文件。")] public string SaveFile( [Description("文件名称(不需要加.txt)")] string fileName, [Description("文件内容")] string content, [Description("保存目录(可选,默认程序目录)")] string? directory = null) { try { string safeFileName = string.Join("_", fileName.Split(Path.GetInvalidFileNameChars())); if (!safeFileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase)) safeFileName += ".txt"; string saveDir = directory ?? AppDomain.CurrentDomain.BaseDirectory; Directory.CreateDirectory(saveDir); string fullPath = Path.Combine(saveDir, safeFileName); if (File.Exists(fullPath)) { string fileNameWithoutExt = Path.GetFileNameWithoutExtension(safeFileName); string ext = Path.GetExtension(safeFileName); string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss"); fullPath = Path.Combine(saveDir, $"{fileNameWithoutExt}_{timestamp}{ext}"); } File.WriteAllText(fullPath, content, Encoding.UTF8); return$"文件创建成功!\n路径: {fullPath}\n大小: {content.Length} 字符"; } catch (Exception ex) { return$"文件创建失败: {ex.Message}"; } } } }
4.修改Program.cs代码如下:
  • 添加FileSystem服务

  • 配置MCPServer

  • 注册FileSystem中的工具

  • 使用Stdio传输

using MCPServerDemo.Tools; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using ModelContextProtocol.Protocol; namespaceMCPServerDemo { internalclassProgram { publicstatic IHost AppHost { get; privateset; } = null!; static async Task Main(string[] args) { var builder = Host.CreateApplicationBuilder(args); builder.Services.AddSingleton<FileSystem>(); builder.Services .AddMcpServer(serverOptions => { serverOptions.ServerInfo = new Implementation { Name = "MCP Server", Version = "1.0.0" }; }) .WithTools<FileSystem>() .WithStdioServerTransport(); var host = builder.Build(); AppHost = host; await host.RunAsync(); } } }
5.生成项目后,使用官方提供的Inspector进行调试:
  • cd到输出程序输出目录:

cd D:\Samples\MCPServerDemo\MCPServerDemo\bin\Debug\net9.0
  • 执行安装Inspector

npx @modelcontextprotocol/inspector .\MCPServerDemo.exe
6.会安装一会,安装完成会自动打开浏览器
7.Result结果
8.进入到目录能看到20260303.txt文件,也是自己填写的内容。

MCP 在 Windows 下的开发优势

  • 官方C# SDK:MicrosoftAnthropic联合推出了MCPC# SDKModelContextProtocol NuGet包),使.NET应用程序能够快速实现与MCP客户端和服务器交互。

  • Windows原生支持MCP,未来可无缝调用系统功能.

  • 极致性能:Native AOT实现毫秒级启动和80%内存节省

参考资料

[1]

https://www.anthropic.com/news/model-context-protocol:https://www.anthropic.com/news/model-context-protocol

[2]

广场社区:https://www.modelscope.cn/mcp

[3]

SDK:https://modelcontextprotocol.io/docs/sdk

http://www.jsqmd.com/news/437409/

相关文章:

  • Cogito-V1-Preview-Llama-3B应用探索:AI Agent自主任务规划与执行
  • 阶跃星辰开源模型STEP3-VL-10B训练策略
  • 嵌入式T9拼音输入法设计与实现
  • 避坑指南:Ubuntu 20.04安装4080 Super驱动时如何解决nouveau冲突和签名问题
  • LeagueAkari智能助手:英雄联盟效率提升工具集
  • Elsevier期刊LaTeX投稿避坑指南:从文件上传到基金选项的全流程解析
  • PotatoTool V2.3深度解析:红队功能升级与实战应用指南
  • 5个显卡调校心法:NVIDIA Profile Inspector让你释放显卡隐藏性能
  • iOS开发者注意:第三方库隐私清单缺失?手把手教你添加PrivacyInfo.xcprivacy文件
  • Lingyuxiu MXJ LoRA数学建模实战:风格参数优化
  • DeOldify部署审计清单:防火墙规则/端口暴露/认证机制合规检查
  • FATFS底层diskio接口原理与嵌入式移植实战
  • 9.1M轻量级时间序列预测:Granite FlowState R1保姆级教程,小白也能玩转
  • C++动态数组越界踩坑实录:HEAP CORRUPTION DETECTED错误排查指南(附VLD检测)
  • Qwen3-Embedding-4B适合什么场景?金融合同分析案例详解
  • NEURAL MASK 开发环境配置:使用 Anaconda 管理 Python 依赖与虚拟环境
  • XUnity Auto Translator:Unity游戏实时翻译插件解决方案
  • 保姆级教程:Flutter打包避坑指南——解决Gradle assembleRelease卡死问题
  • 基于Chandra的智能招聘系统开发实践
  • 零基础玩转国风AI绘画:LiuJuan20260223Zimage 5分钟快速部署教程
  • ComfyUI Ollama节点502错误终极解决指南(附详细排查步骤)
  • 免费体验东方美学!LiuJuan国风生成模型快速上手,生成你的第一张汉服图
  • Qwen3-ASR-1.7B跨语言会议系统:实时翻译与转录解决方案
  • 手把手教你部署HY-1.8B-2Bit-GGUF:腾讯混元模型在CSDN的保姆级教程
  • 智能家居新手必看:Matter协议下Wi-Fi与Thread的实战选择指南
  • NVIDIA Profile Inspector深度指南:释放显卡潜能的高级配置工具
  • UniApp弹窗手势冲突?教你分分钟搞定iOS和Android的滑动返回问题
  • Nunchaku FLUX.1 CustomV3模型架构解析:理解图像生成的底层原理
  • 2024最新可用!Docker国内镜像源一键配置指南(附实测推荐列表)
  • 5090显卡一键部署LiveTalk数字人(512x512分辨率+解决KV Cache溢出)