文档获取服务

一个基于HTTP的MCP服务器,提供按需获取JVM依赖项的文档和源代码服务,适用于AI编码助手和开发工具。

  • by iterative-works
  • Scala
  • 本地部署
  • 更新于
在 GitHub 查看 iterative-works/javadocs-mcp

使用说明

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阶段:内存缓存

许可证

待定