一个智能的模型上下文协议(MCP)服务器,用于查询和分析 Java 语言服务器代码库,特别设计用于 Ballerina 语言服务器项目。
uv sync
claude_desktop_config.json 文件以包含 MCP 服务器路径,以便与 Claude Desktop 一起使用此 MCP 服务器。该文件应位于:/Users/[your_username]/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json 文件中添加以下条目:{
"mcpServers": {
"ballerina-language-server": {
"command": "uv",
"args": [
"--directory",
"<PATH_TO_BALLERINA_LS_MCP_SERVER>",
"run",
"--active",
"run.py"
],
"env": {
"BALLERINA_REPO_PATH": "<PATH_TO_BALLERINA_LANGUAGE_SERVER_REPO>"
}
}
}
}
设置完成后,您可以使用 Claude Desktop 中的 MCP 服务器来查询和分析 Ballerina 语言服务器代码库。您可以通过点击 搜索和工具 按钮并观察菜单中的 ballerina-language-server MCP 服务器来验证 Claude Desktop 是否识别该 MCP 服务器。
search_code(query: str, limit: int = 10)通过代码库进行增强的模糊搜索,并带有相关性评分和多词匹配。
示例:
查询: "completion provider"
返回: 排序结果,包括与完成相关的类和方法
get_class_info(class_name: str)获取特定类的详细信息,包括所有方法和字段。
示例:
查询: "CompletionProvider"
返回: 完整的类定义、方法和上下文
get_repository_stats()获取关于已索引存储库的综合统计信息。
返回:
find_similar_methods(method_name: str, limit: int = 5)使用语音匹配算法查找具有相似名称的方法。
示例:
查询: "getCompletion"
返回: getCompletion, getCompletions, findCompletion 等
find_lsp_protocol_implementations(protocol_method: str = "")查找特定 LSP 协议方法的实现或搜索常见的 LSP 模式。
示例:
查询: "textDocument/hover"
返回: 所有与悬停相关的实现
analyze_lsp_capabilities(limit: int = 10)分析在服务器中实现了哪些 LSP 功能。
返回:
find_protocol_handlers(limit: int = 10)查找处理 LSP 协议消息的类(处理器、提供者、服务、管理器)。
analyze_dependencies(class_name: str, limit: int = 15)查找给定类依赖的类/方法以及依赖于它的类。
示例:
查询: "DocumentSymbolProvider"
返回: 引用或使用此提供者的类
find_design_patterns(pattern_type: str = "", limit: int = 15)识别代码库中的常见设计模式。
支持的模式:
factory: 工厂、创建者、构建者模式observer: 观察者、监听器、事件、处理器模式singleton: 单例模式实现adapter: 适配器、包装器模式decorator: 装饰器模式visitor: 访问者模式实现strategy: 策略、政策模式command: 命令、动作、执行模式get_method_hierarchy(method_name: str)查找方法覆盖、实现和继承层次结构。
analyze_configuration()查找配置文件、属性和设置代码。
get_file_structure_overview(limit: int = 15)获取存储库文件结构和包组织的概览。
analyze_code_complexity()分析代码复杂度指标,包括方法大小和控制结构。
find_error_handling_patterns()查找代码库中的错误处理模式和异常使用情况。
reindex_repository()重新索引存储库以获取新更改。
JavaCodeIndexer: 核心索引引擎,采用混合解析方法
ServerConfig: 配置管理系统
FastMCP 工具: 综合工具套件(超过 15 种工具)
输出管理: 智能响应处理
服务器使用 SQLite,主要表如下:
files: 文件元数据和内容classes: 类定义和层次结构methods: 方法签名和实现fields: 字段声明imports: 导入语句和依赖关系“存储库未索引”错误
BALLERINA_REPO_PATH 设置正确索引缓慢
缺少搜索结果
reindex_repository() 重新索引工具输出太长
limit 参数控制结果数量解析错误
服务器使用 Python 的标准日志模块。设置日志级别:
import logging
logging.getLogger("ballerina-mcp").setLevel(logging.DEBUG)
JavaCodeIndexer 类的新方法ServerConfig.supported_extensionsJavaCodeIndexer 中的解析逻辑