Maven索引器MCP服务器
](https://www.npmjs.com/package/maven-indexer-mcp) 
为本地Maven存储库建立索引的模型上下文协议(MCP)服务器(~/.m2/repository)和Gradle缓存( ~/.gradle/caches/modules-2/files-2.1)为AI代理提供工具来搜索Java类、方法签名等, 以及源代码。
关键用例:虽然人工智能模型精通流行的公共库(如Spring、Apache Commons、Guava),但它们 经常与以下问题作斗争:
- 公司内部套餐:非公共的私人图书馆。
- 非知名公共套餐:小众或不太受欢迎的开源库。
该服务器通过允许人工智能“读取”您的本地依赖关系,有效地为其提供以下知识,从而弥合了这一差距 你的私人和默默无闻的图书馆。
特性
- 语义类搜索:按名称或目的搜索类。
- 继承搜索:查找接口或类的子类的所有实现。
- 按需分析:直接从JAR中提取方法签名和Javadoc。
- 源代码检索:提供完整的源代码(如果可用)。
- 实时监控:存储库更改时自动更新索引。
Maven索引器MCP与Maven索引器CLI
此包为Maven/Gradle索引提供了一个MCP接口。如果您正在使用 编程代理 在终端中,使用 CLI+技能 相反。
- 命令行界面:现代 编码剂 越来越青睐基于CLI的工作流,这些工作流以SKILL的形式公开,而不是MCP,因为CLI调用更具令牌效率:它们避免将大型工具模式加载到模型上下文中,允许代理通过简洁、专门构建的命令进行操作。这使得CLI+SKILL更适合高通量编码代理,这些代理必须在有限的上下文窗口内平衡依赖关系查找与大型代码库和推理。
更多了解 带技巧的Maven索引器CLI.
- 主控程序:MCP仍然是IDE集成代理(Cursor、Kiro、Windsurf等)的更好选择,这些代理受益于持久的后台索引、自动存储库监视和无缝的工具调用,无需任何CLI设置。MCP服务器在后台为您的存储库建立索引,并自动保持索引最新。
入门指南
将以下配置添加到MCP客户端:
{
"mcpServers": {
"maven-indexer": {
"command": "npx",
"args": [
"-y",
"maven-indexer-mcp@latest"
]
}
}
}这将自动下载并运行服务器的最新版本。它将自动检测您的Maven存储库 位置(通常 ~/.m2/repository)以及Gradle缓存。
MCP客户端配置
Cline
跟随 Cline的MCP指南 并使用提供的配置 上面。
Codex
遵循 配置MCP 引导 使用上面的标准配置。
Cursor
单击按钮安装:

或手动安装:
首选 Cursor Settings -> MCP -> New MCP Server.使用上面提供的配置。
JetBrains AI Assistant & Junie
首选 Settings | Tools | AI Assistant | Model Context Protocol (MCP) -> Add.使用上面提供的配置。 同样的方式 maven-indexer 可以在中为JetBrains Junie配置 Settings | Tools | Junie | MCP Settings ->Add. 使用上面提供的配置。
Kiro
在 Kiro设置首选 Configure MCP > Open Workspace or User MCP Config >使用配置代码段 如上所述。
或者,从IDE 活动栏 > Kiro > MCP Servers > Click Open MCP Config。使用配置代码段 如上所述。
Qoder
在 Qoder设置首选 MCP Server > + Add >使用上面提供的配置代码段。
或者,遵循 MCP指南 和使用 上面的标准配置。
Trae
首选 Settings -> MCP -> + Add -> Add Manually 添加MCP服务器。使用上面提供的配置。
Windsurf
遵循 配置MCP指南 使用上面的标准配置。
您的第一个提示
在MCP客户端中输入以下提示,检查是否一切正常:
Find the class `StringUtils` in my local maven repository and show me its methods.您的MCP客户端应该阅读该类 StringUtils 从您的本地Maven存储库中,展示其方法。
配置(可选)
如果自动检测失败,或者您想过滤哪些包被索引,您可以将环境变量添加到 配置:
MAVEN_REPO:指向本地Maven存储库的绝对路径(例如。,/Users/yourname/.m2/repository).如果使用此
您的存储库位于非标准位置。
GRADLE_REPO_PATH:Gradle缓存的绝对路径(例如。,
/Users/yourname/.gradle/caches/modules-2/files-2.1).
INCLUDED_PACKAGES:逗号分隔的要索引的包装模式列表(例如。,com.mycompany.*,org.example.*).
默认值为 * (索引所有内容)。
MAVEN_INDEXER_CFR_PATH:(可选)特定CFR反编译器JAR的绝对路径。如果没有提供,服务器
将尝试使用其捆绑的CFR版本。
VERSION_RESOLUTION_STRATEGY:(可选)当发现工件的多个版本并且没有提供特定坐标时选择版本的策略。
- semver:(默认)首选最高语义版本(例如1.2.0>1.1.9)。 - latest-published:首选发布时间最新的版本(检查 *.pom.lastUpdated 首先,然后是文件修改时间)。 - latest-used:首选用户最近导入/使用的版本(基于文件创建时间)。
可选配置示例:
{
"mcpServers": {
"maven-indexer": {
"command": "npx",
"args": [
"-y",
"maven-indexer-mcp@latest"
],
"env": {
"MAVEN_REPO": "/Users/yourname/.m2/repository",
"GRADLE_REPO_PATH": "/Users/yourname/.gradle/caches/modules-2/files-2.1",
"INCLUDED_PACKAGES": "com.mycompany.*",
"MAVEN_INDEXER_CFR_PATH": "/path/to/cfr-0.152.jar",
"VERSION_RESOLUTION_STRATEGY": "semver"
}
}
}
}本地开发
如果您更喜欢从源代码运行:
- 克隆存储库:
git clone https://github.com/tangcent/maven-indexer-mcp.git
cd maven-indexer-mcp- 安装依赖项并构建:
npm install
npm run build- 在配置中使用绝对路径:
{
"mcpServers": {
"maven-indexer": {
"command": "node",
"args": ["/absolute/path/to/maven-indexer-mcp/build/index.js"]
}
}
}可用工具
search_classes:在本地Maven存储库和Gradle缓存中搜索Java类。
- 何时使用: 1\. 内部/私人代码:你需要从公司内部库中找到一个类。 2\. 模糊的图书馆:你正在使用一个人工智能不太熟悉的不太常见的公共图书馆。 3\. 版本验证:您需要检查本地存在的类的确切版本。
- *备注*:对于众所周知的库(例如标准Java库、Spring),AI可能知道类结构 已经,所以这个工具不那么重要了。
- 例子:“显示StringUtils的源代码”,“DateTimeUtils上有哪些可用方法?”,“这在哪里?” 类进口自?".
- 输入: className (例如,“StringUtils”、“Jsonparser”)
- 输出:匹配类及其工件的列表。
get_class_details:解压缩并读取外部库/依赖项的源代码。 **请改用此项
对于导入但在JAR文件中定义的类,使用“SearchCodebase”。 - 键值:“不要猜测内部库的功能——阅读代码。” - 小贴士:对于文档稀缺或不存在的内部/专有代码至关重要。 - 输入: className (必填), artifactId (可选), type (“签名”、“文档”、“来源”) - 输出:方法签名、Javadoc或完整源代码。 - 备注**:如果 artifactId 如果省略,该工具会自动选择最佳可用工件(首选那些 附源代码)。
search_artifacts:按坐标(groupId、artifactId)在Maven/Gradle缓存中搜索工件。search_implementations:搜索实现特定接口或扩展特定类的类。
可用于在外部库中查找SPI实现。 - 输入: className (例如“java.util.List”) - 输出:实现/子类名称及其工件的列表。
refresh_index:触发Maven存储库的重新扫描。
发展
- 运行测试:
npm test - 观看模式:
npm run watch
