使用说明
MCP服务器演示
一个用C#和.NET构建的示例模型上下文协议(MCP)服务器,展示了如何为AI助手创建自定义工具和资源。该服务器提供了两个简单工具(Echo和ReverseEcho)以及一个资源(Text)。
特点/功能
- 回声工具返回一条包含输入文本的问候消息
- **“ReverseEcho Tool”可以翻译为“反向回声工具”**返回字符顺序反转后的输入文本
- “AnalyzeWithElicitation Tool” 可以翻译为“结合引出分析工具”或“引出式分析工具”,具体翻译可能根据上下文和使用场景有所调整。这里,“AnalyzeWithElicitation”指的是结合了引出(或挖掘)功能的分析,“Tool”则指的是工具通过调用客户端的大型语言模型(LLM)进行分析,演示服务器引出(或服务器请求)的过程
- 文本资源为AI助手提供简单的文本资源
- 提示模板用于文本摘要、情感分析和创意生成的可重用提示模板
- 使用 ModelContextProtocol.Server v0.4.0-preview.2 构建
- 兼容任何MCP主机(VS Code、Claude Desktop等)
先决条件
- .NET 8.0 或更高版本
- 带有GitHub Copilot扩展的VS Code(用于VS Code集成)
构建服务器
-
克隆此仓库:
git clone https://github.com/HemSoft/mcp-server-demo.git cd mcp-server-demo -
构建项目:
dotnet build -
运行服务器(用于测试):
dotnet run
与 VS Code 一起使用
要在VS Code中使用此MCP服务器并结合GitHub Copilot:
方法1:使用VS Code MCP扩展
- 在VS Code中安装MCP扩展
- 打开VS Code设置并导航到MCP配置
- 添加一个新的服务器配置:
{ "mcpServers": { "mcp-server-demo": { "command": "dotnet", "args": ["run", "--project", "path/to/mcp-server-demo/mcp-server-demo.csproj"], "env": {} } } }
方法2:使用MCP配置文件
-
在您的 VS Code 工作区中创建或编辑 MCP 配置文件(
.vscode/mcp.json):{ "mcpServers": { "mcp-server-demo": { "command": "dotnet", "args": ["run", "--project", "./mcp-server-demo.csproj"], "cwd": "/path/to/your/mcp-server-demo" } } } -
重启 VS Code 或重新加载窗口
-
当GitHub Copilot启动时,MCP服务器将自动连接
与Claude Desktop一起使用
要在Claude Desktop中使用此服务器:
-
以发布模式构建项目:
dotnet build -c Release -
编辑您的Claude桌面配置文件:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
- Windows:
-
添加服务器配置:
{ "mcpServers": { "mcp-server-demo": { "command": "dotnet", "args": ["path/to/mcp-server-demo/bin/Release/net8.0/mcp-server-demo.dll"], "env": {} } } } -
重启Claude桌面版
可用工具
回声
- 描述将消息连同问候语一起回传给客户端
- 参数:
message(字符串):要回显的消息
- 示例输入“Hello World”返回“来自C#的问候:Hello World”
反向回声
- 描述返回字符顺序颠倒的输入消息
- 参数:
message(字符串):要反转的消息
- 示例输入“Hello World”返回“dlroW olleH”
“AnalyzeWithElicitation”可以翻译为“通过引出进行分析”。这里,“Analyze”表示“分析”,“With”表示“通过”,“Elicitation”则指的是“引出”或“获取(信息)的过程”。因此,整个短语的意思是“通过引出(信息或数据)来进行分析”
- 描述通过调用客户端的大型语言模型(LLM)来分析文本(展示引出/采样过程)
- 参数:
text(字符串):要分析的文本
- 示例输入“项目成功启动”返回由客户端的大型语言模型(LLM)提取的关键见解
- 高级的这个工具展示了MCP(可能是指某种特定的模型或过程,但在此上下文中未明确说明,故保留原样)的触发机制——服务器调用客户端的大型语言模型(LLM)以获取智能分析,然后返回结果
可用资源
文本资源
- 描述提供一个简单的文本资源,返回“来自C#的问候”
- **URI(统一资源标识符)**可以通过MCP资源调用来访问
- 使用方法AI助手可以检索此资源以获取静态文本内容
引出(采样)
引出(或诱发) 这是指当MCP服务器在工具执行过程中回调到客户端的大型语言模型(LLM)以获取智能响应。这使得服务器能够利用客户端的语言模型进行动态分析或处理。
该 AnalyzeWithElicitation 该工具通过以下方式展示这一模式:
- 接收用户输入(待分析的文本)
- 通过(某种方式)调用客户端的大型语言模型(LLM)
thisServer.AsSamplingChatClient() - 向大型语言模型(LLM)发送提示
- 将大语言模型(LLM)的回复返回给用户
这与提示不同,提示是静态的模板。引出(或激发)机制使得服务器能够实现动态且上下文感知的行为。
可用提示
提示是可重复使用的模板,用于指导人工智能助手执行特定任务。它们可以根据用户输入进行参数化设置。
总结提示(或:概括提示)
- 描述一个用于总结文本内容的提示模板
- 参数:
content(字符串):要总结的文本内容
- 示例将一篇长文章概括为2-3句话
- 使用方法请AI“使用SummarizePrompt来总结这篇文章……”
情感分析提示
- 描述用于分析文本情感的提示模板
- 参数:
text(字符串):要分析的文本
- 示例分析评论是正面、负面还是中立
- 使用方法请让AI“使用情感分析提示来分析这条评论……”
创意生成提示符
- 描述一个用于生成创意想法的提示模板
- 参数:
topic(字符串):用于创意构思的主题或话题
- 示例生成5个与“可持续技术”相关的创新想法
- 使用方法请AI“使用IdeaGeneratorPrompt来为……生成想法”
测试服务器
一旦连接到MCP主机,您可以通过要求AI助手执行以下操作来测试工具:
- “回传信息‘Hello MCP’”
- “反转字符串 'Once upon a time'”
- “使用AnalyzeWithElicitation工具分析以下文本:[在此处输入您的文本]”
你可以通过让AI助手执行以下操作来测试该资源:
- “从MCP服务器访问文本资源”
- “检索可用的文本内容”
你可以通过要求AI助手执行以下操作来测试提示:
- “使用SummarizePrompt来总结这段文字……”
- “使用情感分析提示来分析这条评论……”
- “使用IdeaGeneratorPrompt来生成关于……的想法”
故障排除
服务器无法连接
- 确保已安装.NET 8.0,并可通过以下方式访问:
dotnet命令 - 检查配置中的文件路径是否正确
- 验证服务器构建是否无错误(
dotnet build)
工具不可用
- 重启您的MCP主机应用程序
- 检查MCP主机日志中的连接错误
- 确保配置JSON有效
发展
这个项目展示了C#中MCP服务器的基本结构:
Program.cs主要入口点,包含工具、资源和提示定义mcp-server-demo.csproj包含依赖项的项目文件- 用途
ModelContextProtocol.Serverv0.4.0预览版2
添加新工具:
- 在(某个类或结构中)创建一个新的静态方法
EchoTool类(或创建一个新类) - 用……装饰
[McpServerTool]并且[Description]属性 - 重建并重启服务器
添加新资源:
- 在(某个类中)创建一个新的静态方法
EchoResource班级(或创建一个新班级) - 用……装饰
[McpServerResource]和[Description]属性 - 重建并重启服务器
添加新提示:
- 在(某个类中)创建一个新的静态方法
DemoPrompts班级(或创建一个新班级) - 用……装饰教室
[McpServerPromptType]以及采用的方法[McpServerPrompt]并且[Description]属性 - 返回一个
ChatMessage(与……一起)带着;和……一起ChatRole.User以及你的提示模板 - 重建并重启服务器
许可证
此项目遵循MIT许可证授权——详情请参见LICENSE文件。
