AI助手工具服务器

一个基于C#和.NET构建的MCP服务器示例,提供自定义工具和资源供AI助手使用,包括文本处理、分析和提示模板等功能。

  • by hemsoft-dev
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 HemSoft/mcp-server-demo

使用说明

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集成)

构建服务器

  1. 克隆此仓库:

    git clone https://github.com/HemSoft/mcp-server-demo.git
    cd mcp-server-demo
    
  2. 构建项目:

    dotnet build
    
  3. 运行服务器(用于测试):

    dotnet run
    

与 VS Code 一起使用

要在VS Code中使用此MCP服务器并结合GitHub Copilot:

方法1:使用VS Code MCP扩展

  1. 在VS Code中安装MCP扩展
  2. 打开VS Code设置并导航到MCP配置
  3. 添加一个新的服务器配置:
    {
      "mcpServers": {
        "mcp-server-demo": {
          "command": "dotnet",
          "args": ["run", "--project", "path/to/mcp-server-demo/mcp-server-demo.csproj"],
          "env": {}
        }
      }
    }
    

方法2:使用MCP配置文件

  1. 在您的 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"
        }
      }
    }
    
  2. 重启 VS Code 或重新加载窗口

  3. 当GitHub Copilot启动时,MCP服务器将自动连接

与Claude Desktop一起使用

要在Claude Desktop中使用此服务器:

  1. 以发布模式构建项目:

    dotnet build -c Release
    
  2. 编辑您的Claude桌面配置文件:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/claude/claude_desktop_config.json
  3. 添加服务器配置:

    {
      "mcpServers": {
        "mcp-server-demo": {
          "command": "dotnet",
          "args": ["path/to/mcp-server-demo/bin/Release/net8.0/mcp-server-demo.dll"],
          "env": {}
        }
      }
    }
    
  4. 重启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 该工具通过以下方式展示这一模式:

  1. 接收用户输入(待分析的文本)
  2. 通过(某种方式)调用客户端的大型语言模型(LLM) thisServer.AsSamplingChatClient()
  3. 向大型语言模型(LLM)发送提示
  4. 将大语言模型(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.Server v0.4.0预览版2

添加新工具:

  1. 在(某个类或结构中)创建一个新的静态方法 EchoTool 类(或创建一个新类)
  2. 用……装饰 [McpServerTool] 并且 [Description] 属性
  3. 重建并重启服务器

添加新资源:

  1. 在(某个类中)创建一个新的静态方法 EchoResource 班级(或创建一个新班级)
  2. 用……装饰 [McpServerResource] 和 [Description] 属性
  3. 重建并重启服务器

添加新提示:

  1. 在(某个类中)创建一个新的静态方法 DemoPrompts 班级(或创建一个新班级)
  2. 用……装饰教室 [McpServerPromptType] 以及采用的方法 [McpServerPrompt] 并且 [Description] 属性
  3. 返回一个 ChatMessage (与……一起)带着;和……一起 ChatRole.User 以及你的提示模板
  4. 重建并重启服务器

许可证

此项目遵循MIT许可证授权——详情请参见LICENSE文件。