找回密码
 立即注册
首页 业界区 业界 使用.NET实现自带思考的Tool 并且提供mcp streamable ht ...

使用.NET实现自带思考的Tool 并且提供mcp streamable http服务

管水芸 20 小时前
使用.NET实现自带思考的Tool 并且提供MCP服务

下面我们将使用.net实现自带思考的Tool并且提供mcp streamable http供其他AI客户端使用
创建项目

创建WebAPI项目并且命名MarkAgent.Host名称,然后安装下面的包
  1. <ItemGroup>
  2.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  3.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  4.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  5.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  6.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  7.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  8. </ItemGroup>
复制代码
创建Prompts.cs文件,这里我们会提供系统需要的所有提示词:
  1. namespace MarkAgent.Host;public class Prompts{    public const string DeepThinkingPrompt = """Use this tool to engage in deep, structured thinking about complex problems, user requirements, or challenging decisions. This tool helps you process information systematically and provides your thought process back to enhance understanding and decision-making.## When to Use This ToolUse this tool proactively in these scenarios:1. **Complex Problem Analysis** - When facing multi-faceted problems that require careful consideration2. **Requirement Clarification** - When user requests are ambiguous and need deeper exploration3. **Decision Points** - When multiple approaches exist and you need to evaluate trade-offs4. **Architecture Planning** - When designing systems or making technical decisions5. **Risk Assessment** - When considering potential issues or complications6. **Learning from Context** - When analyzing existing code or systems to understand patterns## Core Thinking Principles1. **Question Assumptions** - Challenge initial interpretations and explore alternatives2. **Break Down Complexity** - Decompose complex problems into manageable components3. **Consider Multiple Perspectives** - Look at problems from different angles4. **Evaluate Trade-offs** - Weigh pros and cons of different approaches5. **Anticipate Consequences** - Think through potential implications and side effects6. **Build on Context** - Use existing knowledge and patterns to inform decisions## Thinking Process StructureYour thought process should follow this pattern:1. **Initial Understanding** - What is the core problem or requirement?2. **Context Analysis** - What relevant information do we have?3. **Assumption Identification** - What assumptions am I making?4. **Alternative Exploration** - What other approaches could work?5. **Trade-off Evaluation** - What are the pros and cons of each option?6. **Decision Rationale** - Why is this the best approach?7. **Implementation Considerations** - What practical factors matter?8. **Risk Assessment** - What could go wrong and how to mitigate?## Examples of Deep Thinking ScenariosUser: "I want to add real-time notifications to my app"Thought Process:- Initial Understanding: User wants real-time notifications, but what type? Push notifications, in-app notifications, or both?- Context Analysis: Need to examine existing tech stack, user base size, notification frequency- Assumptions: Assuming they want both types, but should clarify the specific use cases- Alternatives: WebSockets, Server-Sent Events, Push API, third-party services- Trade-offs: WebSockets offer full duplex but require more infrastructure; SSE is simpler but one-way- Decision: Recommend starting with requirements clarification, then suggest appropriate technology based on their specific needs- Implementation: Consider scalability, reliability, user preferences- Risks: Notification fatigue, performance impact, complexity overheadUser: "This code is running slowly, can you help optimize it?"Thought Process:- Initial Understanding: Performance issue exists, but need to identify bottlenecks- Context Analysis: Need to examine the code, understand data volumes, usage patterns- Assumptions: Assuming it's algorithmic complexity, but could be I/O, memory, or network- Alternatives: Algorithm optimization, caching, database indexing, parallel processing- Trade-offs: Code complexity vs performance gains, memory usage vs speed- Decision: Profile first to identify actual bottlenecks before optimizing- Implementation: Measure performance, implement targeted optimizations- Risks: Premature optimization, breaking existing functionality, over-engineering## Guidelines for Effective Thinking1. **Be Thorough** - Don't rush to conclusions; explore the problem space fully2. **Stay Objective** - Consider evidence and logic over preferences3. **Embrace Uncertainty** - It's okay to acknowledge when you need more information4. **Think Practically** - Consider real-world constraints and limitations5. **Document Reasoning** - Clearly explain your thought process and rationale6. **Iterate and Refine** - Be prepared to revise your thinking as new information emergesThe goal is to provide well-reasoned, thoughtful analysis that leads to better outcomes and helps others understand complex problems more clearly.""";        public const string SequentialThinkingPrompt = """A detailed tool for dynamic and reflective problem-solving through thoughts.This tool helps analyze problems through a flexible thinking process that can adapt and evolve.Each thought can build on, question, or revise previous insights as understanding deepens.When to use this tool:- Breaking down complex problems into steps- Planning and design with room for revision- Analysis that might need course correction- Problems where the full scope might not be clear initially- Problems that require a multi-step solution- Tasks that need to maintain context over multiple steps- Situations where irrelevant information needs to be filtered outYou should:1. Start with an initial estimate of needed thoughts, but be ready to adjust2. Feel free to question or revise previous thoughts3. Don't hesitate to add more thoughts if needed, even at the "end"4. Express uncertainty when present5. Mark thoughts that revise previous thinking or branch into new paths6. Ignore information that is irrelevant to the current step7. Generate a solution hypothesis when appropriate8. Verify the hypothesis based on the Chain of Thought steps9. Repeat the process until satisfied with the solution10. Provide a single, ideally correct answer as the final output11. Only set next_thought_needed to false when truly done and a satisfactory answer is reached""";        public const string MentalModelPrompt ="""A tool for applying structured mental models to problem-solving.Supports various mental models including:- First Principles Thinking- Opportunity Cost Analysis- Error Propagation Understanding- Rubber Duck Debugging- Pareto Principle- Occam's RazorEach model provides a systematic approach to breaking down and solving problems.<ItemGroup>
  2.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  3.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  4.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  5.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  6.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  7.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  8. </ItemGroup>""";}
复制代码
注意,上面的提示词非常的重要,它会影响Tool的输入效果
然后我们继续,创建ThoughtData.cs
  1. public class ThoughtData
  2. {
  3.     public string thought { get; set; } = string.Empty;
  4.    
  5.     public int thoughtNumber { get; set; }
  6.    
  7.     public int totalThoughts { get; set; }
  8.    
  9.     public bool isRevision { get; set; } = false;
  10.    
  11.     public int? revisesThought { get; set; }
  12.    
  13.     public int? branchFromThought { get; set; }
  14.    
  15.     public string? branchId { get; set; }
  16.    
  17.     public bool needsMoreThoughts { get; set; } = false;
  18.    
  19.     public bool nextThoughtNeeded { get; set; } = true;
  20. }
复制代码
创建MentalModelData.cs
  1. public class MentalModelData
  2. {
  3.     public MentalModelName ModelName { get; set; }
  4.     public string Problem { get; set; } = string.Empty;
  5.     public string[] Steps { get; set; } = [];
  6.     public string Reasoning { get; set; } = string.Empty;
  7.     public string Conclusion { get; set; } = string.Empty;
  8. }
  9. public enum MentalModelName
  10. {
  11.     FirstPrinciples,
  12.     OpportunityCost,
  13.     ErrorPropagation,
  14.     RubberDuck,
  15.     ParetoPrinciple,
  16.     OccamsRazor,
  17. }
复制代码
现在我们可以创建AgentTool.cs核心的MCP Tool代码了,这个代码会整合AI入的内容然后反馈给AI。
  1. using System.ComponentModel;using System.Text;using System.Text.Encodings.Web;using System.Text.Json;using System.Text.Json.Serialization;using MarkAgent.Host.Domain.Entities;using MarkAgent.Host.Domain.Events;using MarkAgent.Host.Domain.Services;using MarkAgent.Host.Tools.Models;using ModelContextProtocol.Server;namespace MarkAgent.Host.Tools;[McpServerToolType]public class AgentTools(IStatisticsChannelService statisticsChannel){    [McpServerTool, Description(Prompts.MentalModelPrompt)]    public MentalModelData MentalModel(MentalModelName model, string problem, string[] steps,        string reasoning, string conclusion)    {        // 验证必需字段        if (string.IsNullOrEmpty(problem))        {<ItemGroup>
  2.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  3.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  4.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  5.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  6.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  7.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  8. </ItemGroup>throw new ArgumentException("Invalid problem: must be a string", nameof(problem));        }        // 处理可选字段并应用默认值        var processedSteps = steps ?? [];        var processedReasoning = !string.IsNullOrEmpty(reasoning) ? reasoning : "";        var processedConclusion = !string.IsNullOrEmpty(conclusion) ? conclusion : "";        // 创建并返回 MentalModelData 对象        return new MentalModelData        {<ItemGroup>
  9.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  10.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  11.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  12.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  13.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  14.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  15. </ItemGroup>ModelName = model,<ItemGroup>
  16.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  17.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  18.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  19.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  20.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  21.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  22. </ItemGroup>Problem = problem,<ItemGroup>
  23.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  24.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  25.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  26.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  27.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  28.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  29. </ItemGroup>Steps = processedSteps,<ItemGroup>
  30.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  31.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  32.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  33.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  34.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  35.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  36. </ItemGroup>Reasoning = processedReasoning,<ItemGroup>
  37.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  38.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  39.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  40.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  41.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  42.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  43. </ItemGroup>Conclusion = processedConclusion        };    }    [McpServerTool, Description(Prompts.SequentialThinkingPrompt)]    public ThoughtData SequentialThinking(        string thought,        int thoughtNumber,        int totalThoughts,        bool nextThoughtNeeded,        bool isRevision,        int revisesThought,        int branchFromThought,        string branchId,        bool needsMoreThoughts)    {        // 验证必需字段        if (string.IsNullOrEmpty(thought))        {<ItemGroup>
  44.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  45.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  46.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  47.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  48.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  49.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  50. </ItemGroup>throw new ArgumentException("Invalid thought: must be a string", nameof(thought));        }        if (thoughtNumber  0 ? (int?)branchFromThought : null;        var processedBranchId = !string.IsNullOrEmpty(branchId) ? branchId : null;        var processedNeedsMoreThoughts = needsMoreThoughts;        // 创建并返回 ThoughtData 对象        return new ThoughtData        {<ItemGroup>
  51.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  52.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  53.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  54.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  55.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  56.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  57. </ItemGroup>thought = thought,<ItemGroup>
  58.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  59.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  60.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  61.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  62.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  63.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  64. </ItemGroup>thoughtNumber = thoughtNumber,<ItemGroup>
  65.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  66.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  67.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  68.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  69.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  70.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  71. </ItemGroup>totalThoughts = totalThoughts,<ItemGroup>
  72.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  73.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  74.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  75.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  76.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  77.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  78. </ItemGroup>nextThoughtNeeded = nextThoughtNeeded,<ItemGroup>
  79.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  80.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  81.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  82.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  83.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  84.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  85. </ItemGroup>isRevision = processedIsRevision,<ItemGroup>
  86.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  87.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  88.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  89.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  90.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  91.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  92. </ItemGroup>revisesThought = processedRevisesThought,<ItemGroup>
  93.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  94.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  95.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  96.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  97.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  98.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  99. </ItemGroup>branchFromThought = processedBranchFromThought,<ItemGroup>
  100.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  101.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  102.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  103.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  104.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  105.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  106. </ItemGroup>branchId = processedBranchId,<ItemGroup>
  107.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  108.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  109.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  110.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  111.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  112.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  113. </ItemGroup>needsMoreThoughts = processedNeedsMoreThoughts        };    }    [McpServerTool, Description(Prompts.DeepThinkingPrompt)]    public string DeepThinking(        IMcpServer mcpServer,        [Description(<ItemGroup>
  114.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  115.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  116.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  117.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  118.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  119.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  120. </ItemGroup>"Your structured thought process about the problem, following the thinking framework provided in the tool description. This should be a detailed analysis that explores the problem from multiple angles.")]        string thought)    {        var startTime = DateTime.UtcNow;        string? errorMessage = null;        bool isSuccess = true;        try        {<ItemGroup>
  121.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  122.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  123.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  124.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  125.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  126.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  127. </ItemGroup>// 设置控制台编码支持UTF-8<ItemGroup>
  128.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  129.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  130.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  131.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  132.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  133.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  134. </ItemGroup>Console.OutputEncoding = Encoding.UTF8;<ItemGroup>
  135.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  136.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  137.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  138.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  139.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  140.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  141. </ItemGroup>Console.WriteLine();<ItemGroup>
  142.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  143.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  144.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  145.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  146.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  147.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  148. </ItemGroup>Console.ForegroundColor = ConsoleColor.Cyan;<ItemGroup>
  149.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  150.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  151.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  152.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  153.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  154.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  155. </ItemGroup>Console.ResetColor();<ItemGroup>
  156.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  157.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  158.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  159.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  160.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  161.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  162. </ItemGroup>Console.WriteLine("─".PadRight(50, '─'));<ItemGroup>
  163.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  164.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  165.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  166.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  167.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  168.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  169. </ItemGroup>Console.WriteLine(thought);<ItemGroup>
  170.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  171.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  172.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  173.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  174.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  175.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  176. </ItemGroup>Console.WriteLine("─".PadRight(50, '─'));<ItemGroup>
  177.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  178.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  179.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  180.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  181.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  182.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  183. </ItemGroup>Console.WriteLine();<ItemGroup>
  184.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  185.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  186.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  187.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  188.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  189.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  190. </ItemGroup>// 构建返回给大模型的消息<ItemGroup>
  191.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  192.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  193.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  194.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  195.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  196.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  197. </ItemGroup>var responseMessage = BuildThoughtResponseMessage(thought);<ItemGroup>
  198.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  199.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  200.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  201.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  202.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  203.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  204. </ItemGroup>return responseMessage;        }        catch (Exception ex)        {<ItemGroup>
  205.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  206.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  207.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  208.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  209.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  210.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  211. </ItemGroup>isSuccess = false;<ItemGroup>
  212.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  213.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  214.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  215.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  216.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  217.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  218. </ItemGroup>errorMessage = ex.Message;<ItemGroup>
  219.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  220.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  221.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  222.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  223.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  224.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  225. </ItemGroup>throw;        }        finally        {<ItemGroup>
  226.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  227.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  228.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  229.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  230.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  231.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  232. </ItemGroup>// 记录工具使用统计<ItemGroup>
  233.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  234.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  235.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  236.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  237.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  238.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  239. </ItemGroup>var endTime = DateTime.UtcNow;<ItemGroup>
  240.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  241.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  242.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  243.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  244.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  245.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  246. </ItemGroup>var inputJson = JsonSerializer.Serialize(new { thought });<ItemGroup>
  247.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  248.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  249.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  250.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  251.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  252.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  253. </ItemGroup>var sessionId = mcpServer.SessionId;<ItemGroup>
  254.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  255.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  256.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  257.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  258.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  259.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  260. </ItemGroup>// 异步记录统计,不阻塞主流程<ItemGroup>
  261.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  262.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  263.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  264.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  265.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  266.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  267. </ItemGroup>_ = Task.Run(async () =><ItemGroup>
  268.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  269.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  270.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  271.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  272.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  273.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  274. </ItemGroup>{<ItemGroup>
  275.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  276.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  277.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  278.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  279.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  280.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  281. </ItemGroup>    try<ItemGroup>
  282.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  283.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  284.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  285.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  286.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  287.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  288. </ItemGroup>    {<ItemGroup>
  289.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  290.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  291.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  292.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  293.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  294.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  295. </ItemGroup>        var toolUsageEvent = new ToolUsageEvent<ItemGroup>
  296.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  297.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  298.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  299.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  300.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  301.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  302. </ItemGroup>        {<ItemGroup>
  303.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  304.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  305.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  306.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  307.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  308.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  309. </ItemGroup><ItemGroup>
  310.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  311.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  312.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  313.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  314.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  315.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  316. </ItemGroup>ToolName = "DeepThinking",<ItemGroup>
  317.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  318.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  319.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  320.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  321.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  322.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  323. </ItemGroup><ItemGroup>
  324.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  325.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  326.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  327.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  328.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  329.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  330. </ItemGroup>SessionId = sessionId ?? string.Empty,<ItemGroup>
  331.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  332.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  333.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  334.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  335.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  336.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  337. </ItemGroup><ItemGroup>
  338.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  339.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  340.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  341.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  342.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  343.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  344. </ItemGroup>StartTime = startTime,<ItemGroup>
  345.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  346.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  347.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  348.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  349.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  350.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  351. </ItemGroup><ItemGroup>
  352.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  353.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  354.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  355.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  356.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  357.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  358. </ItemGroup>EndTime = endTime,<ItemGroup>
  359.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  360.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  361.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  362.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  363.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  364.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  365. </ItemGroup><ItemGroup>
  366.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  367.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  368.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  369.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  370.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  371.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  372. </ItemGroup>IsSuccess = isSuccess,<ItemGroup>
  373.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  374.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  375.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  376.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  377.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  378.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  379. </ItemGroup><ItemGroup>
  380.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  381.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  382.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  383.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  384.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  385.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  386. </ItemGroup>ErrorMessage = errorMessage,<ItemGroup>
  387.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  388.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  389.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  390.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  391.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  392.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  393. </ItemGroup><ItemGroup>
  394.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  395.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  396.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  397.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  398.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  399.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  400. </ItemGroup>InputSize = Encoding.UTF8.GetByteCount(inputJson),<ItemGroup>
  401.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  402.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  403.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  404.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  405.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  406.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  407. </ItemGroup><ItemGroup>
  408.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  409.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  410.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  411.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  412.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  413.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  414. </ItemGroup>OutputSize = 0, // 输出大小在返回时计算<ItemGroup>
  415.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  416.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  417.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  418.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  419.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  420.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  421. </ItemGroup><ItemGroup>
  422.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  423.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  424.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  425.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  426.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  427.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  428. </ItemGroup>ParametersJson = inputJson<ItemGroup>
  429.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  430.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  431.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  432.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  433.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  434.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  435. </ItemGroup>        };<ItemGroup>
  436.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  437.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  438.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  439.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  440.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  441.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  442. </ItemGroup>        await statisticsChannel.WriteToolUsageEventAsync(toolUsageEvent);<ItemGroup>
  443.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  444.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  445.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  446.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  447.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  448.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  449. </ItemGroup>    }<ItemGroup>
  450.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  451.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  452.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  453.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  454.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  455.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  456. </ItemGroup>    catch<ItemGroup>
  457.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  458.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  459.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  460.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  461.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  462.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  463. </ItemGroup>    {<ItemGroup>
  464.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  465.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  466.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  467.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  468.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  469.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  470. </ItemGroup>        // 忽略统计记录错误,不影响主功能<ItemGroup>
  471.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  472.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  473.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  474.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  475.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  476.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  477. </ItemGroup>    }<ItemGroup>
  478.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  479.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  480.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  481.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  482.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  483.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  484. </ItemGroup>});        }    }    private string BuildThoughtResponseMessage(string thought)    {        var sb = new StringBuilder();        sb.AppendLine(<ItemGroup>
  485.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  486.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  487.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  488.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  489.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  490.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  491. </ItemGroup>"Deep thinking process completed successfully. Your structured analysis has been recorded and will inform future decision-making.");        sb.AppendLine();        sb.AppendLine("");        sb.AppendLine(<ItemGroup>
  492.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  493.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  494.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  495.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  496.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  497.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  498. </ItemGroup>"The AI has engaged in deep thinking about the current problem/requirement. Key insights from this analysis:");        sb.AppendLine();        sb.AppendLine($"Thought Process: {thought}");        sb.AppendLine();        sb.AppendLine(<ItemGroup>
  499.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  500.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  501.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  502.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  503.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  504.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  505. </ItemGroup>"Use these insights to make more informed decisions and provide better solutions. The thinking process should guide your approach to the problem.");        sb.AppendLine("");        return sb.ToString();    }}
复制代码
在这里我们提供了三个Tool,三个不同的Tool,面向思考方式思考处理都不太一样,然后我们现在对外提供MCP服务,打开我们的Program.cs
  1. var builder = WebApplication.CreateBuilder(args);builder.Services    .AddMcpServer((options =>    {        options.ServerInfo = new Implementation        {<ItemGroup>
  2.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  3.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  4.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  5.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  6.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  7.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  8. </ItemGroup>Name = "MarkAgent",<ItemGroup>
  9.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  10.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  11.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  12.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  13.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  14.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  15. </ItemGroup>Version = typeof(Program).Assembly.GetName().Version?.ToString() ?? "1.0.0",<ItemGroup>
  16.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  17.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  18.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  19.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  20.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  21.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  22. </ItemGroup>Title = "MarkAgent MCP Server",        };    }))    .WithHttpTransport(options =>    {        options.RunSessionHandler += async (context, serverOptions, arg3) =>        {<ItemGroup>
  23.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  24.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  25.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  26.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  27.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  28.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  29. </ItemGroup>try<ItemGroup>
  30.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  31.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  32.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  33.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  34.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  35.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  36. </ItemGroup>{<ItemGroup>
  37.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  38.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  39.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  40.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  41.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  42.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  43. </ItemGroup>    // 获取客户端信息<ItemGroup>
  44.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  45.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  46.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  47.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  48.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  49.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  50. </ItemGroup>    var ipAddress = context.Connection.RemoteIpAddress?.ToString();<ItemGroup>
  51.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  52.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  53.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  54.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  55.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  56.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  57. </ItemGroup>    var userAgent = context.Request.Headers.UserAgent.ToString();<ItemGroup>
  58.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  59.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  60.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  61.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  62.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  63.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  64. </ItemGroup>    // 获取请求客户端信息<ItemGroup>
  65.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  66.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  67.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  68.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  69.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  70.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  71. </ItemGroup>    var clientName = userAgent;<ItemGroup>
  72.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  73.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  74.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  75.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  76.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  77.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  78. </ItemGroup>    var clientVersion = serverOptions?.ClientInfo?.Version ?? "0.0.0";<ItemGroup>
  79.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  80.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  81.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  82.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  83.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  84.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  85. </ItemGroup>    var clientTitle = userAgent;<ItemGroup>
  86.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  87.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  88.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  89.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  90.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  91.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  92. </ItemGroup>    // 生成会话ID<ItemGroup>
  93.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  94.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  95.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  96.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  97.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  98.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  99. </ItemGroup>    var sessionId = serverOptions.SessionId;<ItemGroup>
  100.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  101.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  102.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  103.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  104.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  105.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  106. </ItemGroup>    Console.WriteLine($"Client connected: {clientName} v{clientVersion} (Session: {sessionId[..8]}...)");<ItemGroup>
  107.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  108.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  109.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  110.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  111.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  112.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  113. </ItemGroup>    await serverOptions.RunAsync();<ItemGroup>
  114.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  115.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  116.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  117.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  118.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  119.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  120. </ItemGroup>}<ItemGroup>
  121.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  122.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  123.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  124.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  125.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  126.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  127. </ItemGroup>catch (Exception ex)<ItemGroup>
  128.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  129.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  130.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  131.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  132.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  133.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  134. </ItemGroup>{<ItemGroup>
  135.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  136.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  137.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  138.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  139.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  140.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  141. </ItemGroup>    // 记录错误但不影响连接<ItemGroup>
  142.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  143.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  144.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  145.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  146.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  147.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  148. </ItemGroup>    Console.WriteLine($"❌ Error recording client connection: {ex.Message}");<ItemGroup>
  149.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  150.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  151.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  152.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  153.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  154.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  155. </ItemGroup>}        };    })    .WithTools();var app = builder.Build();app.MapMcp("/mcp");await app.RunAsync();
复制代码
上面的代码就将我们的Tool加入到了MCP Server当中了,现在我们只需要启动服务即可,然后打开cherry Studio进行测试。
进行链接测试

打开软件以后找到设置,然后点击MCP设置
1.png

然后填充json配置
2.png

案例:
  1. {
  2.   "mcpServers": {
  3.     "agent": {
  4.       "url": "http://localhost:5157/mcp",
  5.       "type":"streamableHttp"
  6.     }
  7.   }
  8. }
复制代码
然后点击确定,然后进入MCP并且打开工具我们可以看到下面几个Function
3.png

然后现在回到对话界面,并且选择我们添加的MCP
4.png

然后我们进行测试发送下面内容,然后测试效果如图
  1. 帮我写一篇c#入门教程,请深入思考
复制代码
5.png

当然如果您觉得麻烦我们提供了在线的MCP服务下面是接入的教程:
Trae接入MarkAgent

打开Trae,然后点击功能管理,在右上角
6.png

然后点击MCP,在点击手动添加
7.png

然后将下面的内容粘贴进去然后点击确认:
  1. {
  2.   "mcpServers": {
  3.     "agent": {
  4.       "url": "http://localhost:5157/mcp",
  5.       "type":"streamableHttp"
  6.     }
  7.   }
  8. }
复制代码
8.png

添加完成以后一共提供了四个Tool,前面三个是用于优化思考,最后面的是Todo 跟Claude Code中的Todo功能是完全一样的,提示词是直接使用了Claude Code的提示词,通过这些Tool,您可以体验非一般的AI!
9.png

Copilot接入MarkAgent

先打开您的项目根目录,然后在根目录创建.vscode目录,然后在目录下在创建mcp.json文件,并且填充下面的内容,然后我们现在打开VSCode。
  1. {
  2.   "servers": {
  3.     "todo": {
  4.       "url": "https://agent.mark-chat.chat/mcp",
  5.       "type": "http"
  6.     }
  7.   }
  8. }
复制代码
点击输入框下面的工具
10.png

然后下面提供了我们的Tool了
11.png

我们只需要对话即可,在需要的时候AI会自行调用Tool,下面开始您的AI之旅。
Rider接入MarkAgent

打开Rider,然后打开Github Copilot
然后点击输入框左边的工具
12.png

然后点击Add MCP Tools
13.png

然后填充下面的配置:
  1. {    "servers": {        "todo": {<ItemGroup>
  2.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  3.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  4.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  5.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  6.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  7.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  8. </ItemGroup>"url": "https://agent.mark-chat.chat/mcp",<ItemGroup>
  9.   <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
  10.   <PackageReference Include="ModelContextProtocol" Version="0.3.0-preview.3" />
  11.   <PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.3.0-preview.3" />
  12.   <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.0.2" />
  13.   <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
  14.   <PackageReference Include="Scalar.AspNetCore" Version="1.1.0" />
  15. </ItemGroup>"type": "http"        }    }}
复制代码
然后关闭文件,然后我们就可以看到输入框左边显示如图效果:
14.png

技术交流群

.NET AI学习交流群 加我备注.NET AI
qq:961090189

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册