Javadocs MCP
Provides an MCP server for accessing Java, Kotlin, and Scala library documentation from Maven Central artifacts. It allows agents to browse artifacts, list versions, view symbols and classes, and search for specific symbols across indexed libraries using Streamable HTTP transport.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.javadocs.dev/mcpWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Browse Java library artifacts by Maven Central coordinates
- View Javadoc documentation for specific classes and methods
- Search for symbols across indexed artifacts
- List available versions for a specific artifact
Source and maintenance
Protocol and capabilities
- Server
- javadocs.dev 0.0.2
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {},
"logging": {},
"completions": {}
}Tools
8 advertised
get_latest_version
Resolves the latest published version of a Maven Central artifact (any groupId:artifactId — Java, Kotlin, or Scala library). Call this first when you only know the artifact but not the version: the version it returns feeds into every other tool here that takes a concrete version. By default it returns the latest release, sorted by Maven version order and skipping pre-releases; set `includePreReleases` to true to get the newest version of any kind (milestone, RC, beta...), e.g. when a class or method you are looking for is missing from the latest release. Works against the live Maven Central catalog — no local install, build tool, or repository checkout required.
{
"type": "object",
"required": [
"groupId",
"artifactId"
],
"properties": {
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
},
"includePreReleases": {
"type": "boolean",
"description": "Optional, default false. When true, also consider pre-releases (milestones, RCs, betas, alphas, snapshots), e.g. to find a new API that only exists in a milestone. When false, returns the latest release (or the newest pre-release if the artifact has no release at all)."
}
},
"description": "A Maven Central artifact (groupId and artifactId) whose latest version to resolve."
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"type": "string"
}
}
}{
"title": "Get latest version",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_javadoc_index
Fetches the rendered Javadoc/Scaladoc index page for a specific Maven Central artifact version, converted to plain text/markdown. Useful for orienting yourself in an unfamiliar library: it lists the top-level packages, modules, and (for Scaladoc) often a curated overview. Use this before drilling into specific symbols. Works against the live Maven Central catalog — you do not need to download the javadoc jar.
{
"type": "object",
"required": [
"groupId",
"artifactId",
"version"
],
"properties": {
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"version": {
"type": "string",
"description": "The artifact version, e.g. \"2.1.9\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A fully-qualified Maven Central artifact coordinate: groupId, artifactId, and version."
}{
"title": "Get javadoc index page",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}list_javadoc_symbols
Enumerates the public API a library documents — classes, interfaces, traits, objects, enums, and annotations — for a Maven Central artifact version. Each entry includes the fully-qualified class name (`fqn`) and a `link` that can be passed to get_javadoc_symbol to read the rendered API documentation. Use this to answer 'which classes/types does library X have?' or 'find classes related to <topic>' — it is the fastest way to list the API by name without reading code. Prefer this over list_source_files whenever you only need class/type names. Pass `filter` (e.g. a class name) to get only the matching entries: large libraries list hundreds of symbols, so filtering saves a lot of context when you are looking for one type. Only if this returns NotFoundError because no javadoc jar was published, fall back to list_source_files. Works against the live Maven Central catalog with no local install, build, or checkout required.
{
"type": "object",
"required": [
"groupId",
"artifactId",
"version"
],
"properties": {
"filter": {
"type": "string",
"description": "Optional. Only return symbols whose fully-qualified name contains this text (case-insensitive; several space-separated terms must all match), e.g. \"PolymorphicTypeValidator\" or \"judge Builder\". Omit to list every symbol."
},
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"version": {
"type": "string",
"description": "The artifact version, e.g. \"2.1.9\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A Maven Central artifact version whose documented symbols to list, optionally narrowed by name."
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"required": [
"link",
"external",
"fqn",
"type",
"kind",
"extra"
],
"properties": {
"fqn": {
"type": "string",
"description": "Fully-qualified name of the documented symbol."
},
"kind": {
"type": "string",
"description": "The kind of symbol, e.g. \"class\", \"object\", \"def\"; may be empty."
},
"link": {
"type": "string",
"description": "Path/link of this entry within the javadoc jar. Pass it as `link` to get_javadoc_symbol to read the rendered page."
},
"type": {
"type": "string",
"description": "The symbol's declared type/signature when the doc format provides one; may be empty."
},
"extra": {
"type": "string",
"description": "Extra doc-format-specific metadata; may be empty."
},
"external": {
"type": "boolean",
"description": "True if the entry links to an external site rather than a page inside this jar."
}
},
"description": "One documented entry (class, object, method, package, or resource) from a library's Javadoc/Scaladoc jar."
},
"description": "a set of Content"
}
}
}{
"title": "List documented classes",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_javadoc_symbol
Reads one Javadoc/Scaladoc page from a Maven Central artifact, already converted to plain text/markdown so you don't have to parse HTML. Pass the `link` value returned by list_javadoc_symbols. Navigation and links to external sites are stripped; the links that remain point at other pages of the same jar and can be passed back as `link` to follow them. Use this when you need to know what a class, method, or field does and what its parameters mean for any library on Maven Central — without downloading or unzipping the javadoc jar yourself.
{
"type": "object",
"required": [
"groupId",
"artifactId",
"version",
"link"
],
"properties": {
"link": {
"type": "string",
"description": "The relative path/link within the jar, as returned by list_javadoc_symbols or list_source_files."
},
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"version": {
"type": "string",
"description": "The artifact version, e.g. \"2.1.9\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A pointer to one documented page or source file inside an artifact's jar."
}{
"title": "Read javadoc page",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_source_file
Reads one source file from a Maven Central library's sources jar (the `-sources.jar` artifact). Pass the `link` value returned by list_source_files. Use this whenever you need the exact source text of a JVM library — tracing behavior into a dependency, confirming a public API's implementation, finding a definition, or comparing two library versions. Strongly preferred over locating the jar in a local build cache and unzipping it: it works for any Maven Central artifact, no local checkout or build needed.
{
"type": "object",
"required": [
"groupId",
"artifactId",
"version",
"link"
],
"properties": {
"link": {
"type": "string",
"description": "The relative path/link within the jar, as returned by list_javadoc_symbols or list_source_files."
},
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"version": {
"type": "string",
"description": "The artifact version, e.g. \"2.1.9\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A pointer to one documented page or source file inside an artifact's jar."
}{
"title": "Read source file",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}list_source_files
Lists the raw source files (`.java`, `.kt`, and `.scala`) in a Maven Central artifact version's `-sources.jar`. Each returned path can be passed to get_source_file to read the actual source code. Use this only when you need the implementation — for example, to trace behavior or see how something is wired. To discover which classes exist, or to find classes by topic or name, use list_javadoc_symbols instead; do not use this tool just to enumerate classes. Works against the live Maven Central catalog with no local install, build, or checkout required.
{
"type": "object",
"required": [
"groupId",
"artifactId",
"version"
],
"properties": {
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"version": {
"type": "string",
"description": "The artifact version, e.g. \"2.1.9\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A fully-qualified Maven Central artifact coordinate: groupId, artifactId, and version."
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "string"
},
"description": "a set of String"
}
}
}{
"title": "List source files",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_artifacts
Finds Maven coordinates from part of a library name: searches the javadocs.dev index of Maven Central artifacts for groupId:artifactId values containing every word of the query (case-insensitive). Use this when you know part of a library name (e.g. "jackson", "zio-http", "netty-codec") and need the exact groupId:artifactId coordinates to feed into the other tools. Query with name fragments only — versions are not part of the match. The same artifactId can be published under several groupIds (e.g. jackson-databind: com.fasterxml.jackson.core for 2.x, tools.jackson.core for 3.x), so check each candidate with get_latest_version. To find the library that contains a class, use symbol_to_artifact instead.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "The text to search for — e.g. a class/type name, a package, or part of a groupId/artifactId."
}
},
"description": "A search query."
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"required": [
"groupId",
"artifactId"
],
"properties": {
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A Maven Central artifact coordinate: a groupId and artifactId, without a version."
},
"description": "a set of GroupArtifact"
}
}
}{
"title": "Search artifacts by name",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}symbol_to_artifact
Finds which Maven artifact contains a given Java/Kotlin/Scala class: resolves a class name, nested type (e.g. Outer.Builder), fully-qualified type, or package name to the Maven Central artifacts (groupId, artifactId) that publish it. Exact case is preferred; a case-insensitive match is tried if that finds nothing. Several artifacts can contain the same simple name (e.g. a Java and a Scala library): check each result rather than assuming the first. Use this when you have a symbol from a stack trace, an import line, or an error message and you need to know which library to look in. From there, chain into get_latest_version, then list_source_files / list_javadoc_symbols to read the code or docs.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "The text to search for — e.g. a class/type name, a package, or part of a groupId/artifactId."
}
},
"description": "A search query."
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"required": [
"groupId",
"artifactId"
],
"properties": {
"groupId": {
"type": "string",
"description": "The Maven groupId, e.g. \"dev.zio\"."
},
"artifactId": {
"type": "string",
"description": "The Maven artifactId, e.g. \"zio_3\"."
}
},
"description": "A Maven Central artifact coordinate: a groupId and artifactId, without a version."
},
"description": "a set of GroupArtifact"
}
}
}{
"title": "Find artifact for a class",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 436 ms
- 95th percentile latency
- 436 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 436 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http javadocs-mcp https://www.javadocs.dev/mcpCodex
codex mcp add javadocs-mcp --url https://www.javadocs.dev/mcpCursor
{
"mcpServers": {
"javadocs-mcp": {
"url": "https://www.javadocs.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"javadocs-mcp": {
"type": "streamableHttp",
"url": "https://www.javadocs.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"javadocs-mcp": {
"type": "http",
"url": "https://www.javadocs.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http javadocs-mcp https://www.javadocs.dev/mcpClaude Desktop
https://www.javadocs.dev/mcpWindsurf
{
"mcpServers": {
"javadocs-mcp": {
"serverUrl": "https://www.javadocs.dev/mcp"
}
}
}Let your agent find its tools
Find servers like Javadocs MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.