Java语言智能服务

一个高性能的AI编程代理与Java代码库之间的桥梁,提供专业的Java语言智能支持,包括导航、验证、生命周期管理等功能。

  • by CleverDonaldDuck
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 CleverDonaldDuck/Java-Sentient-MCP

使用说明

Java MCP服务器和Gemini扩展

英语 | 简体中文

该项目是AI编码代理和Java代码库之间的高性能桥梁,包括Gemini CLI、Claude Code、Claude Desktop、Codex和其他MCP兼容工具。它的功能既是 模型上下文协议(MCP)服务器 和一个 Gemini CLI扩展,通过Eclipse JDT提供专业级Java语言智能。LS。

🌟 主要特点

  • 双子座扩展和代理技能:采用结构化预包装 代理技能 对于导航、验证和生命周期管理,确保AI代理遵循最佳工作流程。
  • 原生JDT。LS启动:通过JVM直接生成Java语言服务器,以获得最大的稳定性和性能。
  • 企业级分析:支持加载整个Maven项目,以解决整个代码库中的依赖关系和符号。
  • 诊断支持实时检索编译错误和警告,以帮助AI代理验证其代码更改。
  • 环境和实例隔离:对隔离的数据目录使用工作区路径哈希,并自动清除冲突的环境变量(如 PORT)为了实现可靠的通信。
  • 完整的LSP功能:支持转到定义、查找引用、悬停文档、全局符号搜索和文档符号提取。

🛠️ 先决条件

  • Node.js:v18.0.0或更高版本。
  • Java开发工具包(JDK):Java 17或更高版本(建议使用Java 21+)。
  • Eclipse JDT。LS:安装 Eclipse JDT。LS.

🚀 安装和设置

适用于Gemini CLI(扩展模式)

此项目已针对用作Gemini CLI扩展进行了优化。

# Clone the repository
git clone <repository-url>
cd java-jdtls-mcp-server
npm install && npm run build

# Install as Gemini extension
gemini extensions install .

适用于克劳德编码/食品法典/其他MCP客户

对于Claude Code、Claude Desktop、Codex或其他MCP客户端,您需要将服务器明确配置为MCP工具。

  1. 按照上图所示构建项目。
  2. 编辑客户的配置文件(例如。, claude_desktop_config.json 克劳德桌面)。
  3. 添加服务器配置,并直接在 env 章节:
{
  "mcpServers": {
    "java-mcp-server": {
      "command": "node",
      "args": [
        "/absolute/path/to/java-jdtls-mcp-server/dist/index.js"
      ],
      "env": {
        "JDTLS_HOME": "D:/software/jdt-language-server-latest",
        "JDTLS_JAVA_HOME": "D:/software/java/jdk-23.0.1",
        "JDTLS_JAVA_RUNTIMES": "[{\"name\":\"JavaSE-1.8\",\"path\":\"C:/Program Files/Java/jdk1.8.0_361\"},{\"name\":\"JavaSE-17\",\"path\":\"D:/software/jdk-17.0.7\"}]",
        "JDTLS_MAVEN_USER_SETTINGS": "D:/software/apache-maven-3.9.3/conf/settings.xml",
        "JDTLS_MAVEN_GLOBAL_SETTINGS": "D:/software/apache-maven-3.9.3/conf/settings.xml"
      }
    }
  }
}

注意:当使用Claude Code、Codex或其他MCP客户端时,项目级别 .env 文件逻辑(如 JAVA_PROJECT=true)除非特定的MCP客户端实现支持,否则可能不会以本机方式加载。您可能需要直接在客户端的配置中管理特定于项目的变量。

1.全局设置(用户级 .env)

建议将全局环境变量用于公共路径,以避免在每个项目中重复它们。全局配置文件通常位于: USER_HOME\.gemini\extensions\java-jdtls-mcp-server\.env (其中 USER_HOME 是您的用户目录。, C:\Users\User1).

如何配置:

  1. 安装期间(推荐): 如果您已启用 experimental.extensionConfig 在Gemini CLI中设置时,在初始安装过程中将提示您输入这些环境变量。Gemini CLI将自动生成 .env 文件位于上面的路径。
  2. 手动配置: 或者,您可以手动创建用户级别 .env 在此位置归档并填写推荐信息。

推荐配置示例:

JDTLS_HOME=D:/software/jdt-language-server-latest
JDTLS_JAVA_HOME=D:/software/java/jdk-23.0.1
JAVA_WORKSPACE_PATH=
JDTLS_JAVA_RUNTIMES=[{"name":"JavaSE-1.8","path":"C:/Program Files/Java/jdk1.8.0_361"},{"name":"JavaSE-17","path":"D:/software/jdk-17.0.7"}]
JDTLS_MAVEN_USER_SETTINGS=D:/software/apache-maven-3.9.3/conf/settings.xml
JDTLS_MAVEN_GLOBAL_SETTINGS=D:/software/apache-maven-3.9.3/conf/settings.xml
变量 描述 必填 默认
JDTLS_HOME 通往JDT的道路。LS安装根目录 是 -
JDTLS_JAVA_HOME JDT的专用JDK路径。LS(覆盖 JAVA_HOME) 否 系统 JAVA_HOME
JAVA_WORKSPACE_PATH Java项目的根路径 否 当前工作目录
JDTLS_JAVA_RUNTIMES 不同项目版本的Java运行时JSON列表 否 -
JDTLS_MAVEN_USER_SETTINGS 自定义Maven用户的路径 settings.xml 否 -
JDTLS_MAVEN_GLOBAL_SETTINGS 自定义Maven全局路径 settings.xml 否 -
JDTLS_MAVEN_OFFLINE 启用Maven脱机模式(true/false) 没有 false

2.项目级激活(项目级 .env)

项目级环境信息由Gemini CLI等代理工具加载和读取。例如,使用Gemini CLI时,项目级环境路径通常为: [Project Root]/.gemini/.env.

为了防止Java语言服务器在非Java项目中不必要地启动,您可以 必须明确启用它 每个项目。请将以下内容添加到您的项目级别 .env 文件:

# REQUIRED: Activates the Java Language Server for this specific workspace
JAVA_PROJECT=true

(可选) 您还可以将任何全局设置放置在此本地 .env 文件以覆盖特定项目的它们。

🧩 专家技能和人工智能规则

该项目提供了一套高级 专业技能 (位于 skills/)指导AI代理以最有效的方式与Java语言服务器交互。这些技能可以防止常见的陷阱(如冗余的服务器重启),并提高代码智能的准确性。

技能 专家指南 主要优势
java-lifecycle 服务器管理 标准化JDT。LS启动、状态检查和错误恢复。
java-navigation 代码智能 优化查找定义、引用和符号。
java-project-load 项目索引 无需手动文件扫描即可加速Maven项目加载。
java-verification 诊断 强制执行实时错误检查和验证。

🚀 Gemini CLI中的用法

Gemini CLI可以将这些技能作为扩展的一部分进行安装。安装后,它们会自动或按需激活:

  • activate_skill java-lifecycle
  • activate_skill java-navigation

🤖 在克劳德代码/法典/其他MCP客户端中的使用

虽然Claude Code和Codex不支持Gemini的扩展打包,但他们仍然可以通过项目规则文件利用这些技能:

  1. 项目级规则:复制内容(或相关部分) SKILL.md 文件来自 skills/ 目录到a .clauderules, CLAUDE.md,或 AGENTS.md Java项目根目录中的文件。
  2. 全球规则:或者,您可以将这些说明添加到您的全局克劳德代码或Codex配置中。

通过将这些规则放置在项目规则文件中,Claude Code或Codex可以在检测到此项目环境中工作时自动采用这些“专家工作流”。


🧰 可用工具

工具名称 描述 关键参数
java_start 初始化JDT。LS。如果已在运行,则重新启动。 jdtlsHome, workspacePath, javaHome
java_restart 迫使JDT重新启动。LS流程。 jdtlsHome, workspacePath, javaHome
java_load_maven_project 新 加载整个Maven项目并索引符号。 projectPath
java_search_symbols 新 在整个工作区中执行全局符号搜索。 query
java_get_file_symbols 新 从文件中提取所有符号(类/方法)。 filePath
java_open_file 通知服务器文件内容(诊断所需)。 filePath, content
java_get_diagnostics 检索特定文件的错误和警告。 filePath
java_get_definition 检索符号的定义位置。 filePath, line, character
java_get_references 查找符号的所有引用。 filePath, line, character
java_get_hover 获取符号的类型信息和文档。 filePath, line, character

🧠 代理技能

文件夹 skills/ 包含专门的Markdown文件,指导AI代理如何有效地使用这些工具:

  • 导航:探索代码库和使用符号搜索的策略。
  • 验证:通过诊断检查代码正确性的工作流。
  • 生命周期:处理服务器初始化和自动启动配置。

📚 设计文件

该项目遵循结构化的设计流程。详细的技术文件可以在 design/ 目录:

  • 高层设计:描述系统架构、核心模块和外部接口。
  • 详细设计:涵盖了类模型、序列图和内部实现细节 JavaLanguageServer.

📄 许可证

该项目根据ISC许可证获得许可。