Net上下文服务
NetContextServer 通过模型上下文协议(MCP)赋予像 Cursor AI 这样的 AI 代码助手深入理解您的 .NET 代码库的能力。这意味着更准确的代码建议、对您问题的更好回答以及更高效的编码体验。
服务介绍
NetContextServer
🔍 通过深度理解 .NET 代码库来增强您的 AI 编码助手
NetContextServer 通过 Model Context Protocol (MCP) 使像 Cursor AI 这样的 AI 编码助手能够深入理解您的 .NET 代码库。这意味着更准确的代码建议、更好的问题回答以及更高效的编码体验。

✨ 主要功能
- 🧠 语义代码搜索:用自然语言描述您要找的内容,以查找代码
- 🔍 智能导航:帮助 AI 工具理解您的项目结构和依赖关系
- 🛡️ 内置安全:自动保护敏感数据的安全文件访问
- 🚀 Cursor AI 集成:无缝设置 Cursor AI 以增强编码辅助
- 📦 包分析:了解您的依赖项并获取更新建议
- 🔍 深度依赖可视化:使用交互式彩色编码图查看传递依赖
- 🧩 智能分组:将相关包视觉分组以便于导航
- 📊 更新建议:识别过时的包和安全问题
- 📊 测试覆盖率分析:深入了解您的测试覆盖率
- 🎯 多格式支持:解析来自 Coverlet、LCOV 和 Cobertura XML 的覆盖率数据
- 📈 详细报告:文件级别的覆盖率百分比和未覆盖行跟踪
- 🔄 分支覆盖率:在可用的情况下跟踪方法级别的分支覆盖率
- 💡 智能建议:获得提高测试覆盖率的建议
- ⚡ 快速高效:对大型代码库进行快速索引和响应
🚀 快速开始
- 克隆并构建:
git clone https://github.com/willibrandon/NetContextServer.git
cd NetContextServer
dotnet build
- 设置(可选,用于语义搜索):
# Set Azure OpenAI credentials in environment:
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_OPENAI_API_KEY=your_key
- 开始使用:
# Point to your project
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"
# Try semantic search
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "find authentication logic"
👉 阅读我们的入门指南 以获取详细的设置说明和最佳实践。
🔌 与 Cursor AI 的集成
- 打开 Cursor AI
- 按
Cmd/Ctrl + Shift + P - 输入 "Configure MCP Server"
- 输入:
{
"command": "dotnet",
"args": ["run", "--project", "path/to/NetContextServer/src/NetContextServer/NetContextServer.csproj"]
}
现在 Cursor AI 可以理解您的代码库了!尝试向它提问,例如:
- "列出此项目目录中的所有 .NET 源文件"
- "在代码文件中搜索精确文本匹配"
- "分析所有项目中的 NuGet 包"
- "获取当前的忽略模式列表"
- "添加这些忽略模式:.generated.cs, bin/"
- "列出此目录中的所有 .csproj 文件"
- "显示此文件的内容"
- "文件操作的当前基本目录是什么?"
- "帮助我思考身份验证系统的设计"
- "记录我对这个架构决策的推理"
- "分析 MyService.cs 的测试覆盖率"
- "显示身份验证模块中未覆盖的行"
- "总体测试覆盖率百分比是多少?"
- "哪些文件的测试覆盖率最低?"
📚 文档
功能
- 📁 项目与文件列表:列出解决方案中的所有项目和源文件
- 🔍 代码搜索:通过您的代码库搜索特定模式或文本
- 🧠 语义搜索:根据意义而不是仅基于精确文本匹配来查找代码
- 📖 文件内容访问:安全检查和大小限制下读取源文件
- 🛡️ 安全性:对敏感文件和目录访问内置保护
- 🎯 模式管理:灵活的忽略模式以控制文件访问
- 📊 覆盖率分析:解析和分析测试覆盖率数据
- 📈 覆盖率报告:支持 Coverlet JSON、LCOV 和 Cobertura XML 格式
- 🎯 行覆盖率:跟踪哪些行被测试覆盖
- 🌳 分支覆盖率:监控方法级别的分支覆盖率
- 💡 建议:获得可操作的建议以提高覆盖率
- 💭 结构化思维:记录和验证关于复杂操作的推理
- 🧩 AI 优化推理:基于 Anthropic 的研究 改进 LLM 问题解决能力
- 📋 任务规划:将复杂问题分解为可管理的步骤
- ✅ 政策合规性:根据项目指南验证解决方案
- 🔄 工具输出分析:在采取下一步行动前处理来自其他工具的结果
- 📝 决策文档:维护架构选择的审计轨迹
从源代码构建
- 克隆仓库:
git clone https://github.com/willibrandon/NetContextServer.git
cd NetContextServer
- 构建解决方案:
dotnet build
- 运行测试(可选):
dotnet test
运行命令
使用客户端与您的代码库交互:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- <command> [options]
环境设置
对于语义搜索功能,您需要设置以下环境变量:
AZURE_OPENAI_ENDPOINT:您的 Azure OpenAI 终端 URLAZURE_OPENAI_API_KEY:您的 Azure OpenAI API 密钥
使用方法
基本命令
- 设置基础目录:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "D:\YourProject"
- 获取基础目录:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-base-dir
- 获取版本信息:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- version
- 列出项目:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-projects-in-dir --directory "D:\YourProject\src"
- 列出源文件:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-source-files --project-dir "D:\YourProject\src\YourProject"
- 分析包:
# Set your base directory first
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"
# Run the package analysis
dotnet run --project src/NetContextClient/NetContextClient.csproj -- analyze-packages
示例输出:
Project: MyProject.csproj
Found 2 package(s):
- ✅ Newtonsoft.Json (13.0.1)
Used in 5 location(s)
Dependencies:
└─ Newtonsoft.Json
└─ System.*
└─ System.ComponentModel
- 🔄 Microsoft.Extensions.DependencyInjection (5.0.2 → 6.0.1)
Update available: 6.0.1
Dependencies:
└─ Microsoft.Extensions.DependencyInjection
└─ Microsoft.*
└─ Microsoft.Extensions.DependencyInjection.Abstractions
- 分析测试覆盖率:
# Set your base directory first
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "path/to/your/project"
# Analyze coverage from a Coverlet JSON report
dotnet run --project src/NetContextClient/NetContextClient.csproj -- coverage-analysis --report-path "TestResults/coverage.json"
# Get a coverage summary
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": "Consider adding tests for the user validation error paths"
}
]
搜索命令
- 文本搜索:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- search-code --text "authentication"
- 语义搜索:
# Search with default number of results (5)
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "handle user authentication"
# Search with custom number of results
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "database connection string" --top 10
语义搜索功能:
- 使用嵌入来根据意义查找代码
- 返回按相关性排序的代码片段
- 显示行号和相似度分数
- 在首次搜索时自动索引您的代码
模式管理
- 添加忽略模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- add-ignore-patterns --patterns "*.txt" "*.log"
- 查看当前模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-ignore-patterns
- 移除特定模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- remove-ignore-patterns --patterns "*.txt"
- 清除用户模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- clear-ignore-patterns
- 查看状态文件位置:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- get-state-file-location
默认忽略模式
以下模式默认被忽略,以保护敏感信息:
*.env- 环境文件appsettings.*.json- 应用程序设置*.pfx- 证书文件*.key- 密钥文件*.pem- PEM 文件*password*- 名称中包含 "password" 的文件*secret*- 名称中包含 "secret" 的文件
安全特性
- 路径安全:只能在指定的基础目录内访问文件
- 模式验证:忽略模式会进行语法验证
- 大小限制:大文件内容会被截断,以防止内存问题
- 敏感文件保护:内置模式保护常见的敏感文件
示例工作流程
- 为您的项目设置基础目录:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- set-base-dir --directory "D:\Projects\MyApp"
- 检查服务器版本和配置:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- version
- 设置自定义忽略模式:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- add-ignore-patterns --patterns "*.generated.cs" "*.designer.cs"
- 列出所有项目:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- list-projects-in-dir --directory "D:\Projects\MyApp\src"
- 分析您项目的包依赖关系:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- analyze-packages
- 搜索与认证相关的代码:
dotnet run --project src/NetContextClient/NetContextClient.csproj -- semantic-search --query "user authentication and authorization logic"
与 AI 编码工具集成
NetContextServer 实现了 模型上下文协议 (MCP),允许与支持该协议的 AI 编码助手无缝集成,例如:
- Cursor AI:为您的 AI 助手提供完整的代码库上下文,以实现更准确的代码生成和协助
- 其他兼容 MCP 的工具:任何实现模型上下文协议的工具都可以连接到 NetContextServer
使用 Cursor AI 的步骤:
- 配置 Cursor AI 使用 NetContextServer 作为其 MCP 提供者
- 享受具有完整代码库上下文的增强代码协助
为了测试和调试 MCP 交互,您可以使用 CursorMCPMonitor,这是一个实时监控工具,可帮助跟踪和分析 MCP 客户端和服务器之间的通信。
模型上下文协议使AI工具能够请求有关您的代码库的特定信息,从而使AI的建议更加符合您的特定项目结构和编码模式。
错误处理
服务器为常见情况提供了清晰的错误消息:
- 目录未找到
- 拒绝访问(超出基本目录)
- 无效模式
- 文件大小超出限制
- 受限文件类型
- 缺少用于语义搜索的环境变量
贡献
- 分叉仓库
- 创建一个特性分支
- 提交您的更改
- 推送到该分支
- 创建一个拉取请求
许可证
本项目采用MIT许可证授权 - 详情请参阅LICENSE文件。