返回市场
网络上下文服务器

网络上下文服务器

作者:willibrandon26 星标更新:2025-07-16

项目介绍

NetContextServer

<div align="center">

🔍 通过深入理解.NET代码库来增强你的AI编码助手

MIT 许可证 使用 .NET 构建 与 MCP 兼容 .NET 构建和测试

</div>

NetContextServer 通过 模型上下文协议 (MCP),使像 VS Code 这样的AI编码助手能够深入理解你的.NET代码库。这意味着更准确的代码建议、更好的问题解答以及更高效的编码体验。

NetContextServer 与 VS Code 的演示

✨ 主要功能

  • 🧠 语义代码搜索:通过自然语言描述查找代码
  • 🔍 智能导航:帮助AI工具理解你的项目结构和依赖关系
  • 🛡️ 内置安全:自动保护敏感数据的安全文件访问
  • 🚀 VS Code 集成:无缝设置与 VS Code 结合以增强编码辅助
  • 📦 包分析:了解你的依赖关系并获得更新建议
    • 🔍 深度依赖可视化:通过交互式、彩色编码图查看传递依赖关系
    • 🧩 智能分组:视觉上分组相关包以便于导航
    • 📊 更新建议:识别过时的包和安全问题
  • 📊 测试覆盖率分析:深入了解你的测试覆盖率
    • 🎯 多格式支持:解析来自 Coverlet、LCOV 和 Cobertura XML 的覆盖率数据
    • 📈 详细报告:文件级别的覆盖率百分比和未覆盖行跟踪
    • 🔄 分支覆盖率:跟踪方法级别的分支覆盖率(如果可用)
    • 💡 智能建议:获取提高测试覆盖率的建议
  • 快速且高效:对大型代码库进行快速索引和响应时间

🚀 快速开始

  1. 克隆并构建
git clone https://github.com/willibrandon/NetContextServer.git
cd NetContextServer
dotnet build
  1. 设置(可选,用于语义搜索):
# 在环境变量中设置 Azure OpenAI 凭据:
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_OPENAI_API_KEY=your_key
  1. 开始使用
# 指向你的项目
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"

# 尝试语义搜索
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "查找身份验证逻辑"

👉 阅读我们的入门指南 获取详细的设置说明和最佳实践。

🔌 与 VS Code 的集成

  1. 打开 Visual Studio Code
  2. 按下 Ctrl + Shift + P(或在 macOS 上按 Cmd + Shift + P
  3. 输入 "配置 MCP 服务器"
  4. 输入:
{
  "command": "dotnet",
  "args": ["run", "--project", "path/to/NetContextServer/src/NetContextServer/NetContextServer.csproj"]
}

现在 VS Code 可以理解你的代码库了!尝试询问它一些问题,例如:

  • "列出此项目目录中的所有 .NET 源文件"
  • "在代码文件中搜索精确文本匹配项"
  • "分析所有项目的 NuGet 包"
  • "获取当前忽略模式列表"
  • "添加这些忽略模式:.generated.cs, bin/"
  • "列出此目录中的所有 .csproj 文件"
  • "显示这个文件的内容"
  • "当前文件操作的基础目录是什么?"
  • "帮我思考身份验证系统的设计"
  • "记录我对这个架构决策的推理"
  • "分析 MyService.cs 的测试覆盖率"
  • "显示身份验证模块中的未覆盖行"
  • "整体测试覆盖率百分比是多少?"
  • "哪些文件的测试覆盖率最低?"

📚 文档

功能

  • 📁 项目及文件列表:列出解决方案中的所有项目和源文件
  • 🔍 代码搜索:在代码库中搜索特定模式或文本
  • 🧠 语义搜索:基于意义而非仅文本匹配查找代码
  • 📖 文件内容访问:带有安全检查和大小限制的源文件读取
  • 🛡️ 安全性:针对敏感文件和目录访问的内置防护措施
  • 🎯 模式管理:灵活的忽略模式控制文件访问
  • 📊 覆盖率分析:解析和分析测试覆盖率数据
    • 📈 覆盖率报告:支持 Coverlet JSON、LCOV 和 Cobertura XML 格式
    • 🎯 行覆盖率:跟踪哪些行被测试覆盖
    • 🌳 分支覆盖率:监控方法级别的分支覆盖率
    • 💡 建议:获取可操作的建议以提高覆盖率
  • 💭 结构化思考:记录和验证关于复杂操作的推理
    • 🧩 AI优化推理:基于 Anthropic 的研究 提高LLM解决问题的能力
    • 📋 任务规划:将复杂问题分解为可管理的步骤
    • 政策合规性:根据项目指南验证解决方案
    • 🔄 工具输出分析:处理其他工具的结果以采取下一步行动
    • 📝 决策文档:维护架构选择的审计轨迹

从源码构建

  1. 克隆仓库:
git clone https://github.com/willibrandon/NetContextServer.git
cd NetContextServer
  1. 构建解决方案:
dotnet build
  1. 运行测试(可选):
dotnet test

运行命令

使用客户端与你的代码库互动:

dotnet run --project src/NetContextClient/NetContextClient.csproj -- <command> [options]

环境设置

为了实现语义搜索功能,你需要设置以下环境变量:

  • AZURE_OPENAI_ENDPOINT:你的 Azure OpenAI 终端点URL
  • AZURE_OPENAI_API_KEY:你的 Azure OpenAI API 密钥

使用

基本命令

  1. 设置基础目录
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "D:\YourProject"
  1. 获取基础目录
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-base-dir
  1. 获取版本信息
dotnet run --project src/NetContextClient/NetContextClient.csproj -- version
  1. 列出项目
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-projects-in-dir --directory "D:\YourProject\src"
  1. 列出源文件
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-source-files --project-dir "D
D:\YourProject\src\YourProject"
  1. 分析包
# 首先设置你的基础目录
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"

# 运行包分析
dotnet run --project src/NetContextClient/NetContextClient.csproj -- analyze-packages

示例输出:

项目:MyProject.csproj
  发现2个包:
  - ✅ Newtonsoft.Json (13.0.1)
    在5个位置使用

    依赖关系:
    └─ Newtonsoft.Json
       └─ System.*
          └─ System.ComponentModel

  - 🔄 Microsoft.Extensions.DependencyInjection (5.0.2 → 6.0.1)
    可用更新:6.0.1

    依赖关系:
    └─ Microsoft.Extensions.DependencyInjection
       └─ Microsoft.*
          └─ Microsoft.Extensions.DependencyInjection.Abstractions
  1. 分析测试覆盖率
# 首先设置你的基础目录
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"

# 分析来自 Coverlet JSON 报告的覆盖率
dotnet run --project src/NetContextClient/NetContextClient.csproj -- coverage-analysis --report-path "TestResults/coverage.json"

# 获取覆盖率摘要
dotnet run --project src/NetContextClient/NetContextClient.csproj -- coverage-summary --report-path "TestResults/coverage.json"

示例覆盖率分析输出:

[{
    "filePath": "src/MyProject/Services/UserService.cs",
    "coveragePercentage": 85.3,
    "uncoveredLines": [42, 43, 88],
    "branchCoverage": {
      "ValidateUser()": 75.0,
      "GetUserById()": 100.0
    },
    "recommendation": "考虑为用户验证错误路径添加测试"
  }
]

搜索命令

  1. 文本搜索
dotnet run --project src/NetContextClient/NetContextClient.csproj -- search-code --text "认证"
  1. 语义搜索
# 使用默认结果数量(5)
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "处理用户认证"

# 使用自定义结果数量
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "数据库连接字符串" --top 10

语义搜索功能:

  • 使用嵌入来基于意义查找代码
  • 返回按相关性排序的代码片段
  • 显示行号和相似度分数
  • 在首次搜索时自动索引你的代码

模式管理

  1. 添加忽略模式
dotnet run --project src/NetContextClient/NetContextClient.csproj -- add-ignore-patterns --patterns "*.txt" "*.log"
  1. 查看当前模式
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-ignore-patterns
  1. 删除特定模式
dotnet run --project src/NetContextClient/NetContextClient.csproj -- remove-ignore-patterns --patterns "*.txt"
  1. 清除用户模式
dotnet run --project src/NetContextClient/NetContextClient.csproj -- clear-ignore-patterns
  1. 查看状态文件位置
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-state-file-location

默认忽略模式

以下模式默认被忽略以保护敏感信息:

  • *.env - 环境文件
  • appsettings.*.json - 应用程序设置
  • *.pfx - 证书文件
  • *.key - 密钥文件
  • *.pem - PEM 文件
  • *password* - 名称包含“password”的文件
  • *secret* - 名称包含“secret”的文件

安全特性

  1. 路径安全:只能访问指定基础目录内的文件
  2. 模式验证:忽略模式经过正确语法验证
  3. 大小限制:截断大文件内容以防止内存问题
  4. 敏感文件保护:内置模式保护常见的敏感文件

示例工作流程

  1. 设置项目的基准目录:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "D:\Projects\MyApp"
  1. 检查服务器版本和配置:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- version
  1. 设置自定义忽略模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- add-ignore-patterns --patterns "*.generated.cs" "*.designer.cs"
  1. 列出所有项目:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-projects-in-dir --directory "D:\Projects\MyApp\src"
  1. 分析你的项目的包依赖关系:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- analyze-packages
  1. 搜索与认证相关的代码:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "用户认证和授权逻辑"

与AI编码工具的集成

NetContextServer 实现了 模型上下文协议 (MCP),允许无缝集成支持此协议的AI编码助手,如:

  • VS Code:为你的AI助手提供完整的代码库上下文,从而生成更准确的代码和辅助
  • 其他兼容MCP的工具:任何实现模型上下文协议的工具都可以连接到NetContextServer

要在 VS Code 中使用:

  1. 配置 VS Code 使用 NetContextServer 作为其 MCP 提供者
  2. 享受具有完整代码库上下文的增强编码辅助

对于测试和调试 MCP 交互,你可以使用 模型上下文协议检查器,这是一个可视测试工具,帮助你检查和验证MCP客户端和服务器之间的通信。访问 检查器文档 了解更多关于其特性和能力的信息。

NetContextServer 使AI合作者能够请求有关你的代码库的具体信息,使得AI的建议更加相关和准确,符合你的具体项目结构和编码模式。

错误处理

服务器为常见场景提供了清晰的错误消息:

  • 目录未找到
  • 访问被拒绝(超出基础目录)
  • 无效模式
  • 文件大小限制超过
  • 受限文件类型
  • 语义搜索所需的环境变量缺失

贡献

  1. 分叉仓库
  2. 创建一个功能分支
  3. 提交你的更改
  4. 推送到分支
  5. 创建拉取请求

许可证

该项目采用 MIT 许可证 - 查看 LICENSE 文件以获取详细信息。