这是一个 MCP (Model-driven Context Protocol) 服务器,它为您的 AI 助手提供本地 Java API 签名,有效防止其"幻觉出"不存在或已过时的 API。
本服务器充当您的语言大模型(如 Claude、Gemini 或 Cursor 中的自定义助手)与本地 Maven (~/.m2) 仓库之间的桥梁。它使用 javap 工具从您机器上的 JAR 文件中提取真实、最新的 API 签名。
在编写 Java 代码时,AI 助手经常会虚构出在您使用的版本中并不存在的方法、类,甚至是整个库。这是因为它们的训练数据是互联网的一个静态快照。mcp-java-context 通过让 AI 直接访问您本地安装的确切库版本,为其提供了坚实的现实基础。
核心功能:
- 扫描您本地的
~/.m2/repository以查找指定的 Maven 构建产物。 - 使用标准的 JDK 工具
javap从.jar文件中反编译并提取公共 API 签名。 - 将这些准确的签名提供给 AI,确保其生成的代码基于事实,而非猜测。
- Python 3.10+
- 已安装 Java 开发工具包 (JDK),并确保
javap命令在系统的 PATH 环境变量中可用。 - 一个预先存在的、包含了您常用库的本地 Maven 仓库 (
~/.m2/repository)。
本指南说明了如何从 GitHub 下载源代码后,直接在本地运行此服务器。
首先,将此仓库克隆到您的本地计算机:
git clone https://github.com/flypig-maker/Local-Java-Context-Server.git
cd Local-Java-Context-Server运行此服务器最简单的方式是使用现代化的 Python 包管理器,如 uv。如果您已安装 uv,在项目的根目录中,只需一个命令即可启动服务器:
# 此命令会自动处理依赖并启动服务器
uv run mcp-java-context服务器启动后将开始等待来自您的 AI 工具的请求。
为了让您的 AI 助手(例如,Cursor 或其他支持的工具)能够使用此服务器,您需要更新其 mcp_servers.json 配置文件。
情况一:您的 Maven 仓库位于默认位置 (~/.m2/repository)
添加以下标准配置:
{
"java-context-local": {
"command": "uv",
"args": ["run", "mcp-java-context"],
"cwd": "/path/to/your/Local-Java-Context-Server"
}
}情况二:您使用了自定义的 Maven 仓库位置
在 args 数组中添加 --m2-repo 标志来指定您的自定义路径。
{
"java-context-local": {
"command": "uv",
"args": [
"run",
"mcp-java-context",
"--m2-repo",
"/path/to/your/custom/maven/repo"
],
"cwd": "/path/to/your/Local-Java-Context-Server"
}
}Important
您必须手动更新 cwd 路径。
在这两种情况下,都需要将 /path/to/your/Local-Java-Context-Server 替换为您在第一步中克隆仓库的绝对路径。
为什么? AI 工具需要读取此配置,并知晓项目在您机器上的确切位置才能启动它。这个路径对于每个用户和每台计算机都是唯一的。
配置完成后,您的 AI 工具就能够启动本地服务器并与之通信,以获取准确的 Java API 签名。
该服务器通过模型驱动上下文协议 (MCP) 暴露了一组工具,您的 AI 可以调用这些工具。主要的工具是 get_java_signature。
AI 交互示例:
- AI 的目标: 使用
spring-ai-client-chat编写代码。 - AI 的行为: 调用
get_java_signature(group_id="org.springframework.ai", artifact_id="spring-ai-client-chat", version="1.1.0", class_name="ChatClient")。 - 服务器的响应: 服务器找到对应的 JAR 文件,运行
javap,并返回ChatClient类的公共构造函数和方法签名,同时附上一个可用内部类(如ChatClient.Builder)的列表,这些内部类可以被单独查询。 - 结果: AI 现在获得了确切的 API 接口信息,可以生成有效的代码。
该项目根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。