Skip to content

webforJ MCP Server

by webforj.com · remote · no sign-in to list tools · v1.0.0 · published by com.webforj

WebforJ's MCP server, provides tools, resources, prompts for scaffolding and developing webforJ apps

Changes · 2

9 tools: 2 change things and 7 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http webforj https://mcp.webforj.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "create_project" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project" says "create": a word for a change.

    What this check looks for
  • The server marks "create_theme" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_theme" says "create": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

9 tools

Changes things 2Claude Code: ask
  • create_projectReturns the Maven archetype command that scaffolds a new webforJ project, plus the follow-up commands to change into the generated directory and start the dev server.1 finding

    Why it is in this group

    • The name "create_project" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_project" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_project" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Returns the Maven archetype command that scaffolds a new webforJ project, plus the follow-up commands to change into the generated directory and start the dev server. Relay the Maven command to the user via the host shell tool without modifying its arguments. Set showOptions=true to list available archetypes and the startforJ web generator instead of producing a command.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_themeGenerate a webforJ theme from a primary HSL color.1 finding

    Why it is in this group

    • The name "create_theme" says "create": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "create_theme" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "create_theme" says "create": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a webforJ theme from a primary HSL color. Returns two content blocks: a JSON summary with theme metadata, @AppTheme / @StyleSheet snippets, and recommended file paths, plus a second text block prefixed "CSS_CONTENT:" containing the full stylesheet.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 7Claude Code: allow
  • fqcn_validateValidate fully qualified class names against the catalog of types declared in webforJ source for the target version.No findings

    Why it is in this group

    • The name "fqcn_validate" says "validate": a word for reading.
    Description, as the server wrote it
    Validate fully qualified class names against the catalog of types declared in webforJ source for the target version. Accepts either an explicit list of FQCNs or a Java snippet (the handler extracts its import statements). Returns unknown FQCNs with ranked similar-name suggestions. FQCNs outside the webforJ package family are not validated. Run this on any generated or edited Java before writing it to disk.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_documentReturn the full content of an indexed webforJ documentation or sample file.No findings

    Why it is in this group

    • The name "get_document" says "get": a word for reading.
    Description, as the server wrote it
    Return the full content of an indexed webforJ documentation or sample file. Use this as a follow-up to search_knowledge_base when a search result excerpt is not enough and you need the complete page — migration guides, tutorials, long API docs. Pass the documentId from a search result.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_versionsReport the webforJ versions this server knows about.No findings

    Why it is in this group

    • The name "get_versions" says "get": a word for reading.
    Description, as the server wrote it
    Report the webforJ versions this server knows about. Returns the latest stable release, the current in-development SNAPSHOT (from the main-branch pom.xml), and an array of every major with its highest observed tag plus a `status` flag: "development" (the active SNAPSHOT line — actively changing), "stable" (the latest released major — may still receive minor/patch bugfixes), or "frozen" (older released majors — no new releases will be cut). Each major also carries `dataAvailable` indicating whether the DWC styling tools can answer questions about it. Call this FIRST when you do not know what version the user is on or which version to target — never guess.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_knowledge_baseSearch webforJ documentation, JavaDoc, and code samples for any class, method, annotation, or component, and for CSS styling concepts and rules (palette semantics, seed vs h/s, :no…No findings

    Why it is in this group

    • The name "search_knowledge_base" says "search": a word for reading.
    Description, as the server wrote it
    Search webforJ documentation, JavaDoc, and code samples for any class, method, annotation, or component, and for CSS styling concepts and rules (palette semantics, seed vs h/s, :not([theme]) pattern, dark mode, ::part limits, table styling). Returns matching snippets with titles, categories, and relevance scores. Call this before claiming any webforJ API exists. For exact --dwc-* custom property or ::part() names on a specific component, use styles_get_component instead; to verify tokens in generated CSS, use styles_validate_tokens. Pass category to narrow the search; if the category is unknown the tool errors with a ranked list of similar names plus the full set of valid categories, so you can retry. In a webforJ project the deliverable is Java (or the Kotlin DSL) using webforJ classes; search for the dedicated webforJ component before falling back to React, JSX, or hand-built HTML.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • styles_get_componentReturn the real CSS styling surface of a DWC web component: CSS custom properties, shadow parts, reflected attributes, and slots.No findings

    Why it is in this group

    • The name "styles_get_component" says "get": a word for reading.
    Description, as the server wrote it
    Return the real CSS styling surface of a DWC web component: CSS custom properties, shadow parts, reflected attributes, and slots. Accepts a DWC tag ("dwc-button") or a webforJ Java class name ("Button", "TextField"). Use mode="list" for every valid tag, mode="map" for Java -> tag mappings. Call this before writing CSS for a component so you never guess a var or part name. Prefer a typed Java setter on the component over CSS when both can produce the same result.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • styles_list_tokensReturn the authoritative list of global --dwc-* tokens (palette seeds, color shades, surfaces, spacing, typography, borders, etc.).No findings

    Why it is in this group

    • The name "styles_list_tokens" says "list": a word for reading.
    Description, as the server wrote it
    Return the authoritative list of global --dwc-* tokens (palette seeds, color shades, surfaces, spacing, typography, borders, etc.). Use this for any "which tokens are available for X" question — DO NOT ask the knowledge base to list tokens; it returns prose and the answer will be hallucinated. Filter with "prefix" (e.g. "--dwc-color-primary-") or "contains" (e.g. "seed") to narrow the result. For component-scoped CSS vars like --dwc-button-* use styles_get_component instead. The returned list is verbatim and complete for the filter you passed — do not add, rename, complete, or explain "implied" tokens, and do not reference tokens from other webforJ versions. If a token you expect is missing from the response, it does not exist for that version. Tokens that share a description are returned in a single entry where "names" is the list of every token that has that description; treat each name as a real, independently usable token. When writing CSS, use a token instead of hardcoding colors, spacing, or font sizes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • styles_validate_tokensValidate every --dwc-* reference in CSS, Java, MDX, or Markdown text against the real DWC global tokens and component CSS variables.No findings

    Why it is in this group

    • The name "styles_validate_tokens" says "validate": a word for reading.
    Description, as the server wrote it
    Validate every --dwc-* reference in CSS, Java, MDX, or Markdown text against the real DWC global tokens and component CSS variables. Returns the list of invalid tokens with line numbers and ranked similar-name suggestions. Run this on any generated or edited stylesheet before writing it to disk.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http webforj https://mcp.webforj.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__webforj__get_versions",
      "mcp__webforj__get_document",
      "mcp__webforj__search_knowledge_base",
      "mcp__webforj__styles_get_component",
      "mcp__webforj__styles_list_tokens",
      "mcp__webforj__styles_validate_tokens",
      "mcp__webforj__fqcn_validate"
    ],
    "ask": [
      "mcp__webforj__create_project",
      "mcp__webforj__create_theme"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as webforj. Review it before you use it.