使用说明
javadocs mcp
基于HTTP的MCP(模型上下文协议)服务器,为JVM依赖关系提供按需文档和源代码。
概述
当使用像Claude Code这样的人工智能编码助手时,访问准确、最新的库文档至关重要。此MCP服务器根据需要获取任何Maven工件的Javadoc/Scaladoc和源文件。
第一阶段完成✅
工作特点:
get_documentation该工具为Java类获取Javadoc HTML- 通过Coursier集成Maven Central
- javadoc JAR的自动下载和缓存
- 内部类支持(例如。,
Logger$Factory→Logger.html) - 类型安全错误处理,消息清晰
快速开始
先决条件
- JVM 21
- 已安装Scala CLI
运行服务器
# Start on default port 8080
scala-cli run .
# Start on custom port
scala-cli run . -- 8888
服务器将启动并监听指定端口上的MCP工具调用。
MCP工具
get_documentation (现在可用)
从Maven工件中获取Java类的Javadoc HTML。
输入:
{
"coordinates": "org.slf4j:slf4j-api:2.0.9",
"className": "org.slf4j.Logger"
}
输出: javadoc JAR中的HTML内容
支持:
- 任何Maven工件
-javadoc.jar分类器 - 内部类(自动剥离
$Factory后缀) - 清除缺失工件/类的错误消息
get_source (即将进入第二阶段)
返回类的源文件内容。
测试
# Run all tests (22 passing)
scala-cli test .
# Run specific test suite
scala-cli test . --test-only javadocsmcp.domain.ArtifactCoordinatesTest
测试覆盖范围:
- ✅ 单元测试:域逻辑(坐标解析、路径映射)
- ✅ 集成测试:真正的Maven Central下载(slf4j,番石榴)
- ✅ 端到端测试:完成服务编排
建筑
遵循DDD和功能核心/强制外壳原则:
Presentation Layer (Chimp/Tapir)
↓
Application Layer (DocumentationService)
↓
Domain Layer (Pure functional logic)
↓
Infrastructure Layer (Coursier, JAR reading)
依赖项
- 黑猩猩 (0.1.6):MCP服务器库
- Tapir Netty (1.11.11):HTTP服务器
- 档案 (2.1.10):Maven工件解析
- 斯卡拉 (3.3):程序设计语言
- 弹药 (1.0.0):测试框架
性能和缓存
第7阶段引入了内存缓存,以显著提高性能:
- 第一个请求:3-5秒(网络+JAR下载)
- 缓存请求:<100ms(通常为10-20ms)
- 内存限制:可通过环境变量进行配置
缓存配置
# Set maximum cache size (default: 100MB)
CACHE_MAX_SIZE_MB=200 scala-cli run .
缓存行为:
- LRU(最近最少使用)驱逐政策
- 并发请求的线程安全
- 文档和源代码的单独缓存
- 成功和错误结果都会被缓存
- 缓存键包括坐标、类名和scalaVersion
性能调优
推荐设置:
- 发展:
CACHE_MAX_SIZE_MB=50(保存内存) - 生产:
CACHE_MAX_SIZE_MB=200(更好的命中率) - 大量使用:
CACHE_MAX_SIZE_MB=500(最大性能)
缓存统计信息:
- 重复查找的命中率通常>80%
- 平均缓存命中开销:<1ms
- 缓存大小通过LRU逐出进行自我调节
路线图
- ✅ 第一阶段:Javadoc HTML获取
- ✅ 第2阶段:获取源代码
- ✅ 第3-4阶段:Scala库支持
- ✅ 第5-6阶段:高级错误处理
- ✅ 第7阶段:内存缓存
许可证
待定
