COA CodeNav MCP服务器
强大的MCP(模型上下文协议)服务器,提供全面的 C#和TypeScript 用于AI助手的代码分析和导航工具。基于微软的Roslyn编译器平台和TypeScript服务器协议,它将Visual Studio的IntelliSense和高级代码导航功能引入人工智能,实现了对代码库的深入理解和操作。
🚀 特性
自动装载系统⚡
- 零配置 -解决方案和TypeScript项目在启动时自动加载
- 多语言支持 -C#和TypeScript工作区同步初始化
- 智能发现 -自动查找.sln、.csproj和tsconfig.json文件
- 后台加载 -具有并行工作空间准备的非阻塞启动
- 优雅的退路 -如果自动检测失败,则恢复手动加载
C#分析(Roslyn)
- 完整的C#代码分析 -完整的Roslyn编译器集成,实现准确的代码理解
- 31强大的工具 -涵盖导航、分析、重构和代码生成的综合套件
- 高级重构 -提取方法/接口、内联代码、移动类型、重命名符号等
- 深入分析 -代码度量、依赖性分析、克隆检测和调用层次结构
TypeScript分析(TSP)
- TypeScript服务器协议 -原生TSP集成,用于精确的TypeScript分析
- 14综合工具 -全套服务,涵盖导航、分析、重构和工作区管理
- 高级功能 -导入管理、快速修复、工作区加载和符号层次结构
- 项目管理 -加载支持完整monorepo工作区的tsconfig.json项目
- 实时诊断 -使用智能修复进行编译错误检测
AI优化体验
- AI优先设计 -具有洞察力、下一步行动和错误恢复的结构化输出
- 智能令牌管理 -自动截断响应以防止上下文溢出
- 渐进式披露 -大型结果的自动响应摘要
- 智能挂钩 -Claude Code与智能类型验证建议的集成
- 与跨平台支持 -Windows、macOS和Linux兼容性
📦 安装
先决条件
- .NET 9.0 SDK或更高版本
- Windows、macOS或Linux
- 支持MCP的AI助手(Claude Desktop等)
- 对于TypeScript:TypeScript已全局安装(
npm install -g typescript)
快速安装(推荐)
通过.NET全局工具
# Install the global tool from NuGet
dotnet tool install --global COA.CodeNav.McpServer
# Add to Claude Desktop configuration
# The tool will be available as 'coa-codenav' command手动克劳德桌面配置
添加到您的Claude配置文件中:
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS/Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"coa-codenav": {
"command": "coa-codenav"
}
}
}替代方案:从源代码构建
# Clone and build
git clone https://github.com/anortham/coa-codenav-mcp.git
cd coa-codenav-mcp
dotnet build -c Release
# Add to Claude Desktop configuration
# Windows
"command": "C:\\path\\to\\coa-codenav-mcp\\COA.CodeNav.McpServer\\bin\\Release\\net9.0\\COA.CodeNav.McpServer.exe"
# macOS/Linux
"command": "/path/to/coa-codenav-mcp/COA.CodeNav.McpServer/bin/Release/net9.0/COA.CodeNav.McpServer"更新工具
# Update to latest version
dotnet tool update --global COA.CodeNav.McpServer卸载工具
# Remove global tool
dotnet tool uninstall --global COA.CodeNav.McpServer🛠️ 可用工具
快速参考
💡 新:启用自动加载后,解决方案和TypeScript项目会自动加载,无需手动加载!
C#工具(31个工具)
| 工具 | 目的 | 示例用法 |
|---|---|---|
csharp_load_solution | 加载VS解决方案\* | “加载MyApp.sln” |
csharp_goto_definition | 跳转到定义 | “转到UserService定义” |
csharp_find_all_references | 查找用法 | “ProcessOrder在哪里使用?” |
csharp_symbol_search | 搜索符号 | “查找所有\*服务类别” |
csharp_get_diagnostics | 获取错误/警告 | “显示所有错误” |
csharp_rename_symbol | 跨解决方案重命名 | “将UserService重命名为UserManager” |
csharp_extract_interface | 提取接口 | “提取IUserService接口” |
csharp_move_type | 将类型移动到新文件 | “将用户类移动到User.cs” |
csharp_inline_method | 内联方法调用 | “内联辅助方法” |
csharp_call_hierarchy | 查看调用图 | “显示谁调用ProcessOrder” |
csharp_code_clone_detection | 查找重复代码 | “查找重复代码块” |
\*仅在自动加载失败或需要其他解决方案时才需要
TypeScript工具(14个工具)
| 工具 | 目的 | 示例用法 |
|---|---|---|
ts_load_tsconfig | 加载TypeScript项目\* | “加载tsconfig.json” |
ts_load_workspace | 加载多项目工作区\* | “加载TypeScript单仓库” |
ts_goto_definition | 导航到定义 | “转到UserService定义” |
ts_find_all_references | 查找符号引用 | “processOrder在哪里使用?” |
ts_find_implementations | 查找接口实现 | “查找所有用户实现” |
ts_get_diagnostics | 获取TypeScript错误 | “检查TypeScript错误” |
ts_hover | 获取符号信息 | “此函数的作用是什么?” |
ts_document_symbols | 提取文件结构 | “显示所有类和方法” |
ts_symbol_search | 搜索符号 | “查找所有\*服务类别” |
ts_rename_symbol | 跨文件重命名 | “将UserService重命名为UserManager” |
ts_call_hierarchy | 分析调用关系 | “显示函数的调用层次结构” |
ts_add_missing_imports | 自动添加导入语句 | “将缺失的导入添加到文件中” |
ts_organize_imports | 排序和组织导入 | “清理导入报表” |
ts_apply_quick_fix | 应用TypeScript修复 | “修复此TypeScript错误” |
\*仅在自动加载失败或用于其他项目时才需要
🔄 自动装载系统
MCP服务器现在具有一个智能自动加载系统,可以在启动时自动发现和加载您的项目,在大多数情况下无需手动设置工作区。
自动加载的工作原理
- 启动检测:当MCP服务器启动时,它会扫描当前目录和子目录
- 多语言发现:同时搜索:
- C#解决方案(.sln 文件) - C#项目(.csproj 文件) - TypeScript配置(tsconfig.json 文件)
- 智能优先级:更喜欢解决方案而不是单个项目,尊重配置偏好
- 后台加载:并行加载工作区,而不会阻止服务器启动
- 优雅的退路:如果自动检测失败,则返回手动加载
配置(appsettings.json)
{
"Startup": {
"AutoLoadSolution": true, // Enable auto-loading
"SolutionPath": "MyApp.sln", // Preferred solution name
"MaxSearchDepth": 5, // Directory search depth
"PreferredSolutionName": "MyApp", // Preferred solution prefix
"RequireSolution": false // Allow project-only loading
},
"CodeSearch": {
"BaseUrl": "http://localhost:5020" // CodeSearch service URL for development
}
}环境变量
对于生产部署,请通过环境变量配置CodeSearch服务URL:
# Production deployment
export CODENAV_CODESEARCH_URL="https://codesearch-service:8080"
# Docker/Container deployment
export CODENAV_CODESEARCH_URL="http://codesearch-service:5020"
# Kubernetes deployment
export CODENAV_CODESEARCH_URL="http://codesearch-service.default.svc.cluster.local:5020"配置优先 (从高到低):
- 环境变量
CODENAV_CODESEARCH_URL - 配置部分
CodeSearch:BaseUrl - 默认开发URL
http://localhost:5020
安全说明:切勿使用 localhost 生产环境中的URL。始终为部署目标配置适当的服务URL。
自动加载状态
使用 csharp_get_workspace_statistics 检查自动加载是否成功:
{
"totalWorkspaces": 1,
"workspaceDetails": [{
"workspaceId": "C:\\Projects\\MyApp\\MyApp.sln",
"loadedPath": "C:\\Projects\\MyApp\\MyApp.sln",
"createdAt": "2025-01-20T10:30:00Z",
"lastAccessedAt": "2025-01-20T10:35:00Z"
}]
}当仍需要手动加载时
- 其他解决方案:加载不在启动目录中的辅助解决方案
- 具体项目:解决方案自动加载失败时加载单个项目
- 远程路径:从网络位置或不同驱动器加载解决方案
- 多工作区:同时使用多个不相关的解决方案
自动装载的好处
- ✅ 零配置 -适用于大多数项目
- ✅ 更快的启动 -并行加载缩短了到达第一个可用状态的时间
- ✅ 多语言 -同时处理C#和TypeScript项目
- ✅ 情报准备就绪 -类型验证和导航工具立即可用
- ✅ 向后兼容 -需要时仍可手动加载
工作空间管理
csharp_load_solution
加载完整的Visual Studio解决方案进行分析(通常仅在自动加载失败或需要其他解决方案时才需要)。
何时使用:
- “加载MyApp.sln解决方案”
- “在C:\\Projects\\MyApp中打开解决方案文件”
- “我想分析这个C#解决方案”
例子:
{
"solutionPath": "C:\\Projects\\MyApp\\MyApp.sln",
"workspaceId": "optional-custom-id"
}csharp_load_project
加载一个C#项目文件。
何时使用:
- “仅加载MyApp.Core项目”
- “打开csproj文件”
- “我只需要分析这个项目”
例子:
{
"projectPath": "C:\\Projects\\MyApp\\MyApp.Core\\MyApp.Core.csproj"
}csharp_get_workspace_statistics
获取有关已加载工作区和资源使用情况的统计信息。
何时使用:
- “显示工作区内存使用情况”
- “加载了多少个工作区?”
- “检查工作区性能”
代码导航
csharp_goto_definition
导航到特定位置的符号定义。
何时使用:
- “UserService在哪里定义?”
- “显示ProcessOrder方法的定义”
- “跳转到声明此类的位置”
例子:
{
"filePath": "Program.cs",
"line": 42,
"column": 25
}答复包括:
- 定义的确切位置
- 符号类型和签名
- 下一步行动(查找参考、实现等)
csharp_find_all_references
查找整个代码库中对符号的所有引用。
何时使用:
- “UserService在哪里使用?”
- “查找所有对ProcessOrder的调用”
- “显示对此变量的所有引用”
例子:
{
"filePath": "Services/UserService.cs",
"line": 15,
"column": 20,
"maxResults": 100
}特征:
- 按文件对结果进行分组
- 显示使用情况
- 使用分页处理大型结果集
csharp_find_implementations
查找接口的所有实现和虚拟/抽象方法的重写。
何时使用:
- “哪些类实现了IRepository?”
- “显示此接口的所有实现”
- “什么凌驾于ProcessOrder之上?”
csharp_hover
获取有关符号的详细信息,包括签名、文档和类型信息。
何时使用:
- “这种方法有什么作用?”
- “显示ProcessOrder的文档”
- “此函数接受哪些参数?”
代码搜索和发现
csharp_symbol_search
在整个解决方案中按名称或模式搜索符号。
何时使用:
- “查找名称中包含“Service”的所有类”
- “搜索以“Process”开头的方法”
- “查找UserController类”
- “显示Data命名空间中的所有接口”
搜索类型:
contains-名称中任意位置的部分匹配(默认)exact-名称完全匹配startswith-名称以查询开头endswith-名称以查询结尾wildcard-支持\*和?通配符regex-完整正则表达式模式fuzzy-拼写错误的模糊匹配
例子:
{
"query": "User*Service",
"searchType": "wildcard",
"symbolKinds": ["Class", "Interface"],
"namespaceFilter": "MyApp.Services",
"maxResults": 50
}csharp_document_symbols
从文件中提取完整的符号层次结构。
何时使用:
- “显示此文件的结构”
- “UserService.cs中有哪些方法?”
- “给我一个这门课的大纲”
csharp_get_type_members
列出一个类型的所有成员,包括方法、属性、字段和事件。
何时使用:
- “UserService有哪些方法?”
- “显示Order类的所有属性”
- “列出成员,包括继承的成员”
代码分析
csharp_get_diagnostics
获取编译错误、警告和分析器诊断。
何时使用:
- “显示解决方案中的所有错误”
- “我有什么警告?”
- “检查是否存在可为null的引用警告”
- “查找代码质量问题”
例子:
{
"scope": "solution",
"severities": ["Error", "Warning"],
"includeAnalyzers": true,
"idFilter": "CS8", // Filter for specific diagnostic IDs
"maxResults": 50
}csharp_code_metrics
计算代码复杂性和可维护性指标。
何时使用:
- “计算此方法的复杂性”
- “查找过于复杂的方法”
- “显示此类的可维护性指数”
- “确定重构候选者”
提供的指标:
- 圈复杂度 -代码路径数
- 代码行 -逻辑代码行
- 可维护性指数 -0-100分(越高越好)
- 继承深度 -继承层次深度
- 类耦合度 -耦合类的数量
csharp_find_unused_code
查找可能未使用的代码元素,包括类、方法、属性和字段。
何时使用:
- “在项目中查找死代码”
- “显示未使用的私有方法”
- “清理未使用的班级”
- “识别可以删除的代码”
csharp_type_hierarchy
查看完整的类型层次结构,包括基类、派生类型和接口实现。
何时使用:
- “显示UserService的继承层次结构”
- “哪些类派生自BaseController?”
- “查看完整的类型层次结构”
- “这个类实现了哪些接口?”
高级分析
csharp_call_hierarchy
查看显示呼入和呼出的双向呼叫图。
何时使用:
- “显示此方法的所有调用者”
- “此函数调用哪些方法?”
- “查看完整的呼叫层次结构”
- “了解方法依赖关系”
csharp_find_all_overrides
查找虚拟/抽象方法和属性的所有重写。
何时使用:
- “什么会覆盖此虚拟方法?”
- “查找抽象方法的所有实现”
- “显示覆盖层次结构”
csharp_solution_wide_find_replace
在整个解决方案中执行查找和替换操作。
何时使用:
- “替换所有TODO注释”
- “更新不推荐使用的API用法”
- “批量文本替换”
- “跨解决方案查找模式”
例子:
{
"findPattern": "// TODO:",
"replacePattern": "// TASK:",
"preview": true,
"useRegex": false,
"wholeWord": false
}csharp_code_clone_detection
检测重复的代码模式以寻找重构机会。
何时使用:
- “查找重复代码”
- “识别复制粘贴代码”
- “寻找重构机会”
- “检测代码克隆”
特征:
- 可配置的相似性阈值
- 大型代码库的超时参数(30-300秒)
- 类型1(精确)、类型2(重命名)、类型3(修改)克隆检测
例子:
{
"minLines": 6,
"minTokens": 50,
"similarityThreshold": 0.8,
"timeoutSeconds": 120
}csharp_dependency_analysis
分析类型、命名空间和项目之间的依赖关系和耦合。
何时使用:
- “分析项目依赖关系”
- “查找循环依赖关系”
- “检查命名空间之间的耦合”
- “了解架构”
分析级别:
project-项目级依赖关系namespace-命名空间依赖关系type-类型级别依赖关系
代码流分析
csharp_trace_call_stack
跟踪从入口点到实现的代码执行路径。
何时使用:
- “显示ProcessOrder是如何被调用的”
- “跟踪从Main到此方法的执行情况”
- “什么叫验证用户?”
- “反向跟踪呼叫链”
方向:
forward-跟踪该方法发出的调用backward-查找该方法的调用者
例子:
{
"filePath": "Services/OrderService.cs",
"line": 45,
"column": 20,
"direction": "backward",
"maxDepth": 10
}代码重构和生成
csharp_rename_symbol
通过冲突检测和预览在整个解决方案中重命名符号。
何时使用:
- “将UserService重命名为UserManager”
- “到处更改此变量名”
- “重构:将ProcessOrder重命名为ExecuteOrder”
特征:
- 应用前预览更改
- 冲突检测
- 类型的可选文件重命名
- 在注释/字符串中重命名
- 一起重命名重载
例子:
{
"filePath": "UserService.cs",
"line": 10,
"column": 15,
"newName": "UserManager",
"preview": true,
"renameFile": true,
"renameInComments": true
}csharp_apply_code_fix
在特定位置应用可用的代码修复程序进行诊断。
何时使用:
- “修复此编译错误”
- “将建议的修复程序应用于CS0219”
- “解决此可为null的警告”
csharp_generate_code
为常见模式和样板生成代码。
何时使用:
- “从字段生成构造函数”
- “为这些字段创建属性”
- “实现此接口”
- “生成等号和哈希码”
发电类型:
constructor-从字段/属性生成构造函数properties-从字段生成属性interface-实现接口成员equals-生成Equals和GetHashCodedisposable-实现IDisposable模式
csharp_extract_method
将所选代码提取到新方法中。
何时使用:
- “将此代码提取到方法中”
- “重构:名为'ValidateInput'的提取方法”
- “从第50-75行创建一个方法”
例子:
{
"filePath": "OrderService.cs",
"startLine": 50,
"endLine": 75,
"methodName": "ValidateInput",
"makeStatic": false
}csharp_add_missing_usings
使用未解析类型的指令添加缺失。
何时使用:
- “修复缺失的导入”
- “添加必需的使用语句”
- “解决未解析的类型引用”
csharp_format_document
根据项目设置和.editorconfig格式化代码。
何时使用:
- “格式化此文件”
- “修复缩进”
- “清理代码格式”
- “使用语句组织”
💡 真实世界的例子
示例1:理解代码库
User: "I need to understand how user authentication works in this codebase"
AI: I'll help you understand the authentication system. Let me search for authentication-related code.
*Uses csharp_symbol_search with query "auth*" and wildcard search*
*Finds AuthenticationService, IAuthenticationProvider, AuthController*
Found several authentication components. Let me examine the main service structure.
*Uses csharp_get_type_members on AuthenticationService*
*Uses csharp_trace_call_stack to understand the flow*
The authentication system consists of:
1. `AuthenticationService` - Main service handling login/logout
2. `IAuthenticationProvider` - Interface for different auth providers
3. `JwtAuthProvider` - JWT token implementation
4. `AuthController` - REST API endpoints
The flow is: AuthController → AuthenticationService → IAuthenticationProvider示例2:重构复杂代码
User: "This method is too complex, can you help refactor it?"
AI: Let me analyze the complexity of this method first.
*Uses csharp_code_metrics to measure complexity*
This method has a cyclomatic complexity of 15, which is quite high. Let me help refactor it.
*Uses csharp_extract_method to extract logical blocks*
*Uses csharp_rename_symbol to give meaningful names*
I've extracted 3 logical blocks into separate methods:
1. ValidateInput() - Input validation logic
2. ProcessBusinessRules() - Core business logic
3. PrepareResponse() - Response formatting
The complexity is now reduced to 5, making it much more maintainable.示例3:发现和解决问题
User: "The build is failing, can you help?"
AI: Let me check for compilation errors.
*Uses csharp_get_diagnostics with scope "solution"*
Found 3 errors:
1. CS0246: Type 'IUserRepository' not found in OrderService.cs:15
2. CS1061: 'User' does not contain 'EmailAddress' in UserValidator.cs:42
3. CS0103: Name 'logger' does not exist in ProcessingService.cs:78
Let me fix these:
*Uses csharp_add_missing_usings for the first error*
*Uses csharp_hover to understand the User type*
*Uses csharp_find_all_references to check logger usage*
Fixed:
1. Added missing using for IUserRepository
2. The property is 'Email' not 'EmailAddress'
3. Need to inject ILogger in the constructor示例4:代码审查和质量检查
User: "Review this service class for code quality issues"
AI: I'll perform a comprehensive code review. Let me analyze various aspects.
*Uses csharp_code_metrics to check complexity*
*Uses csharp_find_unused_code to identify dead code*
*Uses csharp_get_diagnostics to check for warnings*
Code Review Results:
1. **Complexity**: Method 'ProcessOrder' has high complexity (12)
- Recommend extracting validation logic
2. **Unused Code**: Found 2 unused private methods
- CalculateDiscount() - line 145
- ValidateStock() - line 203
3. **Code Warnings**:
- CS8602: Possible null reference in line 87
- CS1998: Async method lacks await in SaveOrder()
4. **Suggestions**:
- Extract complex logic from ProcessOrder
- Remove or implement unused methods
- Add null checks or use nullable annotations
- Make SaveOrder synchronous or add async operations📚 完整工具清单
服务器提供26种工具,分为以下几类:
工作空间管理(3个工具)
csharp_load_solution-加载.sln文件csharp_load_project-加载.csproj文件csharp_get_workspace_statistics-查看工作区信息和内存使用情况
代码导航(8个工具)
csharp_goto_definition-导航到定义csharp_find_all_references-查找所有用法csharp_find_implementations-查找接口实现csharp_hover-获取符号信息csharp_trace_call_stack-跟踪执行路径csharp_symbol_search-按图案搜索符号csharp_document_symbols-获取文件结构csharp_get_type_members-列出类型成员
重构(4个工具)
csharp_rename_symbol-跨解决方案重命名csharp_extract_method-将代码提取到方法csharp_add_missing_usings-使用指令添加csharp_format_document-格式代码
诊断和修复(3个工具)
csharp_get_diagnostics-获取错误/警告csharp_apply_code_fix-应用代码修复csharp_generate_code-生成样板代码
高级分析(8个工具)
csharp_code_metrics-计算复杂性csharp_find_unused_code-查找死代码csharp_type_hierarchy-查看继承csharp_call_hierarchy-双向调用图csharp_find_all_overrides-查找覆盖csharp_solution_wide_find_replace-批量操作csharp_code_clone_detection-查找重复项csharp_dependency_analysis-分析依赖关系
🏗️ 建筑
核心组件
- MSBuildWorkspaceManager -管理Roslyn工作区生命周期和缓存
- Roslyn工作区服务 -提供代码分析操作的核心服务
- 文档服务 -处理文档跟踪和更新
- 工具类 -具有MCP协议集成的单个工具实现
- 符号缓存 -重复符号查找的性能优化
- 资源提供程序 -通过渐进式披露管理大型结果
设计原则
- AI优先设计 -每个回复都包括见解和建议的下一步行动
- 代币效率 -自动摘要可防止上下文溢出
- 错误恢复 -详细的错误信息和可操作的步骤
- 演出 -符号缓存和高效的工作空间管理
- 可扩展性 -使用基于属性的发现易于添加新工具
- 智能集成 -无缝的Claude代码挂钩,增强开发工作流程
许可证管理
所有工具都实现了智能令牌管理:
- 建造前预估响应大小
- 应用安全限制(5K-10K代币)
- 超限时逐步减少
- 将完整结果存储在资源中
- 为分页提供明确的下一步操作
🎯 Claude代码集成
智能挂钩系统
COA CodeNav MCP包括复杂的Claude Code挂钩,通过提供上下文指导和自动工作区管理来增强开发体验。
可用挂钩
会话开始挂钩 (session_start_codenav.py)
- 会话启动和恢复时触发
- 报告检测到的项目的自动加载状态
- 如果自动加载失败,提供回退指导
- 显示类型验证工具的即时准备状态
预编辑护栏 (guard_rails_pre.py)
- 在编辑/写入/多编辑操作之前触发
- 分析代码的类型引用和复杂性
- 建议在使用自定义类型时进行类型验证
- 考虑自动加载解决方案,以避免冗余建议
工具成功后跟踪 (guard_rails_post.py)
- 跟踪CodeNav工具的成功使用情况
- 建立已验证类型的会话本地知识
- 提供针对自动加载环境优化的简洁反馈
- 在整个会话中维护验证统计数据
挂钩特点
- 自动加载感知:钩子能够理解解决方案何时已经通过自动加载加载
- 降低噪音:由于不再需要手动加载提醒,因此输出更清洁
- 类型验证重点:重点从“加载解决方案”转向“验证类型”
- 会话记忆:跟踪已验证的类型,以避免冗余建议
- 向后兼容:优雅地处理手动加载场景
吊钩输出示例
会话启动(自动加载激活):
🔥 SESSION START HOOK TRIGGERED
🚀 CodeNav Auto-Loading Status
=============================================
📁 C# Project Detected
✅ Solution auto-loaded: COA.CodeNav.McpServer.sln
🚀 C# type verification ready!
📁 TypeScript Project Detected
✅ TypeScript workspace auto-loaded
🚀 TypeScript type verification ready!
✨ Auto-Loading Benefits:
• Solutions/projects loaded automatically at startup
• No manual loading steps required
• Instant type verification tools available
• Seamless hover tooltips and go-to-definition预编辑指南:
💡 Type Verification Suggestion:
💡 Verify C# types: UserService, OrderProcessor, PaymentValidator
mcp__codenav__csharp_hover
→ UserService details发布工具成功:
✅ Type verified: UserService
Properties: Id, Name, Email (+2 more)
Methods: GetUser, UpdateUser (+3 more)
Session: 12 types verified安装
钩子会自动安装在MCP服务器上。要将它们与Claude Code一起使用:
- 将钩子锉放入
.claude/hooks/ - 配置
.claude/settings.json带钩子触发器 - 钩子将在会话开始和工具使用时自动激活
挂钩配置
示例 .claude/settings.json 配置:
{
"hooks": {
"SessionStart": [
{
"source": "startup",
"hooks": [
{
"type": "command",
"command": "uv run .claude/hooks/session_start_codenav.py"
}
]
}
],
"PreToolUse": [
{
"matcher": "Edit|Write|MultiEdit",
"hooks": [
{
"type": "command",
"command": "uv run .claude/hooks/guard_rails_pre.py"
}
]
}
],
"PostToolUse": [
{
"matcher": "csharp_hover|csharp_goto_definition|ts_hover|ts_goto_definition",
"hooks": [
{
"type": "command",
"command": "uv run .claude/hooks/guard_rails_post.py"
}
]
}
]
}
}🚀 部署
生产配置
在部署到生产、暂存或容器化环境时,请确保配置正确:
CodeSearch服务集成
MCP服务器与CodeSearch服务集成,以增强代码分析功能。为您的环境适当配置服务URL:
发展 (默认):
{
"CodeSearch": {
"BaseUrl": "http://localhost:5020"
}
}生产/暂存:
# Set environment variable (preferred for production)
export CODENAV_CODESEARCH_URL="https://codesearch.yourcompany.com"容器部署:
# Docker Compose
version: '3.8'
services:
codenav:
image: codenav-mcp:latest
environment:
- CODENAV_CODESEARCH_URL=http://codesearch-service:5020
depends_on:
- codesearch-serviceKubernetes部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: codenav-mcp
spec:
template:
spec:
containers:
- name: codenav
image: codenav-mcp:latest
env:
- name: CODENAV_CODESEARCH_URL
value: "http://codesearch-service.default.svc.cluster.local:5020"安全考虑
- URL验证:服务器验证所有配置的URL,启动失败,并显示无效配置的明确错误消息
- 环境变量:在生产中使用环境变量进行敏感配置
- 异常处理:所有服务集成都包括用于生产调试的正确错误处理和日志记录
- 超文本传输安全协议:使用HTTPS URL进行生产CodeSearch服务连接
- 超时配置:服务调用包括适当的超时值(默认为10秒)
配置验证
服务器对所有配置值执行启动验证:
- 无效的URL导致启动失败,并显示明确的错误消息
- 缺少的配置会退回到开发默认值并发出警告
- 出于审计目的,记录了环境变量覆盖
🔧 故障排除
常见问题
自动加载问题
- 尽管已自动加载,但“未加载工作区”:检查当前目录或子目录中是否存在解决方案/项目文件
- 自动加载发现错误的解决方案:使用手册
csharp_load_solution使用您想要的特定路径 - TypeScript不能自动加载:确保
tsconfig.json已存在,且TypeScript已全局安装(npm install -g typescript) - 检测到多个解决方案:配置
PreferredSolutionName在apps_中指定要首选的解决方案
配置问题
- “配置的CodeSearch URL无效”启动错误:
- 检查 CodeSearch:BaseUrl apps_中的URL是有效的 - 验证 CODENAV_CODESEARCH_URL 环境变量格式 - 确保配置的服务可以从部署环境访问
- 生产中的服务连接失败:
- 从不使用 localhost 容器化或云环境中的URL - 配置正确的服务发现URL(例如Kubernetes服务名称) - 检查服务之间的网络连接
- 环境变量未生效:
- 验证环境变量名称: CODENAV_CODESEARCH_URL - 检查变量在应用程序的运行时环境中是否可用 - 环境变量覆盖apps.config
工作区错误
- “工作区未加载”错误:
- 首先,检查 csharp_get_workspace_statistics 查看自动加载是否有效 - 如果没有加载工作区,请手动调用 csharp_load_solution 或 csharp_load_project - 验证解决方案是否在Visual Studio中成功生成
符号导航问题
- “未找到符号”错误:
- 确保该文件是加载的解决方案/项目的一部分 - 检查行号和列号是否正确(从1开始) - 验证代码是否编译正确 - 使用 csharp_get_diagnostics 检查编译问题
性能问题
- 响应时间慢:
- 使用 csharp_get_workspace_statistics 检查内存使用情况 - 考虑加载单个项目,而不是大型解决方案 - 为大型结果启用响应摘要 - 检查是否不必要地加载了多个工作区
钩子相关问题
- 挂钩未触发:验证
.claude/settings.json配置并确保Python/uv可用 - 吊钩输出过大:挂钩针对自动装载环境进行了优化;如果不使用自动加载,请考虑禁用
- 类型验证建议没有帮助胡克从你的课程中学习;当您验证更多类型时,建议会得到改进
响应问题
- “响应截断”消息:
- 对于大型结果,这是正常的,以防止上下文溢出 - 使用提供的后续操作以获得更多结果 - 考虑使用更具体的查询来减少结果大小
自动加载配置
禁用自动加载:
{
"Startup": {
"AutoLoadSolution": false
}
}配置搜索行为:
{
"Startup": {
"AutoLoadSolution": true,
"MaxSearchDepth": 3, // Reduce for faster startup
"PreferredSolutionName": "MyMainApp", // Prefer specific solution
"RequireSolution": true // Don't fallback to projects
}
}调试自动加载:
- 检查登录
%LOCALAPPDATA%\COA.CodeNav.McpServer\logs(Windows)或~/.local/share/COA.CodeNav.McpServer/logs(Linux/macOS) - 使用
csharp_get_workspace_statistics看看装了什么 - 验证解决方案/项目文件是否可访问且未损坏
日志记录
日志将写入:
- 窗户:
%LOCALAPPDATA%\COA.CodeNav.McpServer\logs - Linux/macOS:
~/.local/share/COA.CodeNav.McpServer/logs
开发设置
- 分叉并克隆存储库
- 在Visual Studio 2022或VS代码中打开
- 构建和运行测试:
dotnet test - 进行更改并提交PR
添加新工具
服务器使用COA。麦克。框架v1.1.6。要添加新工具,请执行以下操作:
- 在中创建一个新类
Tools文件夹继承自McpToolBase - 覆盖
Name和Description属性 - 实施
ExecuteInternalAsync方法 - 在中注册该工具
Program.cs - 遵循既定的结果模式
工具实现示例:
public class MyNewTool : McpToolBase
{
public override string Name => "csharp_my_tool";
public override string Description => @"Brief description.
Returns: What it returns.
Prerequisites: Requirements.
Use cases: When to use.";
protected override async Task ExecuteInternalAsync(
MyParams parameters,
CancellationToken cancellationToken)
{
// Implementation
return new MyResult { Success = true, ... };
}
}注册于 Program.cs:
builder.Services.AddScoped();📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 建立在 微软的Roslyn 编译器平台
- 使用COA。麦克。MCP通信协议库
- 灵感来自Visual Studio的代码导航功能
- 感谢所有贡献者和用户!
📊 项目状态
自动加载系统(新!⚡)
- ✅ 智能工作空间发现 -自动查找和加载C#解决方案和TypeScript项目
- ✅ 多语言支持 -C#和TypeScript工作区同步初始化
- ✅ 后台加载 -具有并行工作空间准备的非阻塞启动
- ✅ 智能回退 -在需要时,可轻松降级为手动加载
- ✅ Claude代码集成 -针对自动加载工作流程优化的Hooks系统
C#分析(完整)
- ✅ 31罗斯林工具 实施和测试
- ✅ 完整的MSBuild工作区 支持自动加载和手动回退
- ✅ 高级重构 -提取方法、重命名符号、生成代码
- ✅ 深度分析 -度量、依赖关系、克隆检测、调用层次结构
- ✅ 符号缓存 用于性能优化
TypeScript分析(已发布)
- ✅ 14个TypeScript工具 用TypeScript服务器协议实现
- ✅ 项目管理 具有自动加载tsconfig.json和工作区跟踪功能
- ✅ 导航工具 -GoToDefinition、FindReferences、悬停、CallHierarchy工作正常
- ✅ 实时诊断 通过tsc编译器集成
- ✅ 高级分析 -具有双向呼叫跟踪的呼叫层次结构
- ✅ 进口管理 -自动组织和修复缺失的导入
框架集成
- ✅ COA。麦克。框架v1.7.19 -具有增强令牌管理功能的最新框架
- ✅ AI优化响应 具有洞察力、下一步行动和错误恢复
- ✅ 智能代币管理 具有自动响应截断功能
- ✅ 与跨平台支持 -Windows、macOS和Linux
- ✅ 全局.NET工具 易于安装的包装
- ✅ 克劳德代码挂钩 -智能会话管理和类型验证指导
计划的功能
- 🚧 Python语言支持(架构已准备好扩展)
- 🚧 其他TypeScript工具(文档符号、符号搜索、查找实现)
- 🚧 Razor/Atring支持
- 🚧 通过TypeScript基础架构支持JavaScript
🚀 入门指南
C#项目(带自动加载)
- 安装:
dotnet tool install --global COA.CodeNav.McpServer - 配置 您的AI助手(请参阅安装部分)
- 开始会话 在您的项目目录中-解决方案自动加载! ⚡
- 立即探索:“UserService类做什么?”
- 导航:“查找所有对ProcessOrder的引用”
- 重构:“将UserService重命名为UserManager”
*仅需要手动加载其他解决方案:“加载MyApp.sln解决方案”*
TypeScript项目(自动加载)
- 先决条件:确保安装了TypeScript:
npm install -g typescript - 开始会话 在您的项目目录中,tsconfig.json会自动加载! ⚡
- 立即导航:“转到UserService的定义”
- 分析:“检查TypeScript编译错误”
- 探索:“查找processOrder方法的所有引用”
*仅需要手动加载其他项目:“加载tsconfig.json文件”*
快速验证
启动会话后,检查自动加载是否正常工作:
- C:“显示工作区统计信息”-应显示已加载的解决方案
- TypeScript:“检查TypeScript错误”-应显示项目状态
______________________________________________________________________
