Koskamo

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.

Javadocs MCP logo, by javadocs.devCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by javadocs.dev
MCP endpoint (Streamable HTTP)
https://www.javadocs.dev/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 8 of 8 with parameters document them all

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

Community listing

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
Server-advertised capabilities
{
  "tools": {},
  "logging": {},
  "completions": {}
}

Tools

8 advertised

get_latest_version
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_latest_version input schema
{
  "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."
}
get_latest_version output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "string"
    }
  }
}
get_latest_version annotations
{
  "title": "Get latest version",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_javadoc_index
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_javadoc_index input schema
{
  "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."
}
get_javadoc_index annotations
{
  "title": "Get javadoc index page",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_javadoc_symbols
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

list_javadoc_symbols input schema
{
  "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."
}
list_javadoc_symbols output schema
{
  "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"
    }
  }
}
list_javadoc_symbols annotations
{
  "title": "List documented classes",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_javadoc_symbol
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_javadoc_symbol input schema
{
  "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."
}
get_javadoc_symbol annotations
{
  "title": "Read javadoc page",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_source_file
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_source_file input schema
{
  "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."
}
get_source_file annotations
{
  "title": "Read source file",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_source_files
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

list_source_files input schema
{
  "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."
}
list_source_files output schema
{
  "type": "object",
  "required": [
    "result"
  ],
  "properties": {
    "result": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "a set of String"
    }
  }
}
list_source_files annotations
{
  "title": "List source files",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
search_artifacts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

search_artifacts input schema
{
  "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."
}
search_artifacts output schema
{
  "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"
    }
  }
}
search_artifacts annotations
{
  "title": "Search artifacts by name",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
symbol_to_artifact
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

symbol_to_artifact input schema
{
  "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."
}
symbol_to_artifact output schema
{
  "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"
    }
  }
}
symbol_to_artifact annotations
{
  "title": "Find artifact for a class",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http javadocs-mcp https://www.javadocs.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add javadocs-mcp --url https://www.javadocs.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable javadocs-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "javadocs-mcp": {
      "url": "https://www.javadocs.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "javadocs-mcp": {
      "type": "streamableHttp",
      "url": "https://www.javadocs.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start javadocs-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "javadocs-mcp": {
      "type": "http",
      "url": "https://www.javadocs.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http javadocs-mcp https://www.javadocs.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.javadocs.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.