{
  "markdown": "# Quarkus Agent MCP\n\n[![MCP Toplist](https://mcptoplist.com/badge/pulsemcp%2Fquarkus-agent-mcp.svg)](https://mcptoplist.com/server/pulsemcp%2Fquarkus-agent-mcp)\n\n<p align=\"center\">\n  <img src=\"logo.png\" width=\"250\" alt=\"Quarkus Agent MCP Logo\">\n</p>\n\nA standalone MCP server that enables AI coding agents to create, manage, and interact with Quarkus applications. It runs as a separate process that survives app crashes, giving agents the ability to create projects, check for updates, read extension skills, control application lifecycle, proxy Dev MCP tools, and search Quarkus documentation.\n\nPart of the [DevStar](https://github.com/quarkusio/quarkus/discussions/53093) working group.\n\n## Prerequisites\n\n- Java 21+\n- Docker or Podman (for documentation search)\n- One of: [Quarkus CLI](https://quarkus.io/guides/cli-tooling), [Maven](https://maven.apache.org), or [JBang](https://www.jbang.dev/download/) (for creating new projects)\n\n## Installation\n\n### Claude Code plugin\n\nAdd the marketplace and install the plugin:\n\n```bash\nclaude plugin marketplace add quarkusio/quarkus-agent-mcp\nclaude plugin install quarkus-agent@quarkus-tools\n```\n\nThis installs the plugin and configures the MCP server automatically. Requires [JBang](https://www.jbang.dev/download/).\n\n### Via JBang (recommended)\n\n[JBang](https://www.jbang.dev/download/) resolves the uber-jar from Maven Central automatically — no build step needed.\n\n#### Claude Code\n\n```bash\nclaude mcp add -s user quarkus-agent -- jbang quarkus-agent-mcp@quarkusio\n```\n\n#### VS Code / GitHub Copilot\n\nAdd to `.vscode/mcp.json` in your workspace:\n\n```json\n{\n  \"servers\": {\n    \"quarkus-agent\": {\n      \"type\": \"stdio\",\n      \"command\": \"jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"]\n    }\n  }\n}\n```\n\n#### IBM Bob\n\nAdd to `.bob/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"command\": \"/home/you/.jbang/bin/jbang\",\n      \"args\": [\n        \"quarkus-agent-mcp@quarkusio\"\n      ],\n      \"env\": {\n        \"JAVA_HOME\": \"/path/to/your/java/home\"\n      },\n      \"disabled\": false\n    }\n  }\n}\n```\n\n> **Why absolute paths?** Bob inherits system PATH, not your shell PATH. See [Troubleshooting](#jbang-or-java-not-found-enoent) below.\n\n#### Cursor\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"command\": \"jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"]\n    }\n  }\n}\n```\n\n#### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"command\": \"jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"]\n    }\n  }\n}\n```\n\n#### JetBrains IDEs (IntelliJ IDEA, WebStorm, etc.)\n\nIn **Settings → Tools → AI Assistant → MCP Servers** (or the GitHub Copilot MCP settings), add a server with an **absolute path** to `jbang`:\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"type\": \"stdio\",\n      \"command\": \"/home/you/.jbang/bin/jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"]\n    }\n  }\n}\n```\n\n> **Why absolute paths?** JetBrains IDEs launched from the desktop inherit the **system PATH**, not your shell PATH (`~/.bashrc` / `~/.zshrc`). Tools installed via SDKMAN!, JBang's default installer, asdf, or mise are typically on the shell PATH only — so the IDE can't find them. See [Troubleshooting](#jbang-or-java-not-found-enoent) below.\n\nAlternatively, use the direct download method with an absolute path to `java`:\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"type\": \"stdio\",\n      \"command\": \"/path/to/java\",\n      \"args\": [\"-jar\", \"/path/to/quarkus-agent-mcp-runner.jar\"]\n    }\n  }\n}\n```\n\n### Via direct download\n\nDownload the uber-jar from the [latest GitHub Release](https://github.com/quarkusio/quarkus-agent-mcp/releases/latest), then:\n\n```bash\nclaude mcp add -s user quarkus-agent -- java -jar /path/to/quarkus-agent-mcp-runner.jar\n```\n\n### Native binary (Linux & macOS)\n\nPre-built native binaries are available on each [GitHub Release](https://github.com/quarkusio/quarkus-agent-mcp/releases/latest). They start instantly and use significantly less memory than the JVM version — ideal for VPS and resource-constrained environments. No JVM or JBang installation required.\n\n> **Note:** Windows is not supported for the native binary. Use the [JBang](#via-jbang-recommended) or [direct download](#via-direct-download) method instead.\n\n#### Quick install (recommended)\n\nDetects your platform, downloads the latest binary to `~/.local/bin/`, and registers it with Claude Code:\n\n```bash\ncurl -sL https://raw.githubusercontent.com/quarkusio/quarkus-agent-mcp/main/install.sh | bash\n```\n\nTo update to a newer version, run the same command again.\n\n#### Manual install\n\n##### Linux (x86_64)\n\n```bash\nVERSION=$(curl -sI https://github.com/quarkusio/quarkus-agent-mcp/releases/latest | grep -i ^location: | sed 's|.*/||' | tr -d '\\r')\nmkdir -p ~/.local/bin\ncurl -L -o ~/.local/bin/quarkus-agent-mcp \\\n  \"https://github.com/quarkusio/quarkus-agent-mcp/releases/download/${VERSION}/quarkus-agent-mcp-${VERSION}-linux-x86_64\"\nchmod +x ~/.local/bin/quarkus-agent-mcp\n\nclaude mcp add -s user quarkus-agent -- ~/.local/bin/quarkus-agent-mcp\n```\n\n##### macOS (Apple Silicon)\n\n```bash\nVERSION=$(curl -sI https://github.com/quarkusio/quarkus-agent-mcp/releases/latest | grep -i ^location: | sed 's|.*/||' | tr -d '\\r')\nmkdir -p ~/.local/bin\ncurl -L -o ~/.local/bin/quarkus-agent-mcp \\\n  \"https://github.com/quarkusio/quarkus-agent-mcp/releases/download/${VERSION}/quarkus-agent-mcp-${VERSION}-macos-aarch64\"\nchmod +x ~/.local/bin/quarkus-agent-mcp\n\nclaude mcp add -s user quarkus-agent -- ~/.local/bin/quarkus-agent-mcp\n```\n\n##### macOS (Intel)\n\n```bash\nVERSION=$(curl -sI https://github.com/quarkusio/quarkus-agent-mcp/releases/latest | grep -i ^location: | sed 's|.*/||' | tr -d '\\r')\nmkdir -p ~/.local/bin\ncurl -L -o ~/.local/bin/quarkus-agent-mcp \\\n  \"https://github.com/quarkusio/quarkus-agent-mcp/releases/download/${VERSION}/quarkus-agent-mcp-${VERSION}-macos-x86_64\"\nchmod +x ~/.local/bin/quarkus-agent-mcp\n\nclaude mcp add -s user quarkus-agent -- ~/.local/bin/quarkus-agent-mcp\n```\n\nTo update to a newer version, re-run the install script above or repeat these commands.\n\n### Build from source\n\n```bash\ngit clone https://github.com/quarkusio/quarkus-agent-mcp.git\ncd quarkus-agent-mcp\n./mvnw package -DskipTests -Dquarkus.package.jar.type=uber-jar\n```\n\nThis produces the uber-jar at `target/quarkus-agent-mcp-1.0.0-SNAPSHOT-runner.jar` (version may vary).\n\n```bash\nclaude mcp add -s user quarkus-agent -- java -jar /path/to/quarkus-agent-mcp/target/quarkus-agent-mcp-1.2.6-runner.jar\n```\n\n#### Verify\n\nAfter registering, ask your agent something like:\n\n> \"Search the Quarkus docs for how to create a REST endpoint\"\n\nIf the MCP server is working, the agent will use `quarkus_searchDocs` and return documentation results.\n\n## Usage\n\n### Creating a new Quarkus app\n\nAsk your agent to build a Quarkus application using natural language. The agent uses the MCP tools automatically.\n\n**Example conversation:**\n\n> **You:** Create a Quarkus REST API with a greeting endpoint and a PostgreSQL database\n>\n> **Agent:** _(uses `quarkus_create` to scaffold the project with `rest-jackson,jdbc-postgresql,hibernate-orm-panache` extensions — the app starts automatically in dev mode and a `CLAUDE.md` is generated with project-specific workflow instructions)_\n>\n> **Agent:** _(calls `quarkus_skills` to learn the correct patterns for Panache, REST, and other extensions before writing any code)_\n>\n> **You:** Add a `Greeting` entity and a REST endpoint that stores and retrieves greetings\n>\n> **Agent:** _(writes the code following patterns from skills, then runs tests using `quarkus_callTool` — via a subagent if supported)_\n\n### Development workflow\n\nThe MCP server guides the agent through the optimal Quarkus development workflow:\n\n```\nNEW PROJECT                           EXISTING PROJECT\n\n1. quarkus_create                     1. quarkus_start\n   → scaffolds + auto-starts             → starts dev mode\n   → generates CLAUDE.md\n                                      2. quarkus_skills\n2. quarkus_skills                        → learn extension patterns\n   → learn extension patterns            → query 'quarkus-update' to check version\n\n3. quarkus_searchDocs                 3. quarkus_searchDocs\n   → look up APIs, config                → look up APIs, config\n\n4. Write code + tests                 4. Write code + tests\n\n5. Run tests                          5. Run tests\n   → quarkus_callTool                    → quarkus_callTool\n   → devui-testing_runTests              → devui-testing_runTests\n\n6. Iterate\n```\n\nIf the app is **already running in your own terminal**, use `quarkus_attach` instead of `quarkus_start` and the rest of the workflow is unchanged.\n\nAttaching requires that the app expose a Dev MCP server. `quarkus_start` passes `-Dquarkus.dev-mcp.enabled=true` itself, so apps it launches always do; an app you started by hand does so only if Dev MCP is enabled for it — commonly `enabled=true` in `~/.quarkus/dev-mcp.properties`, which applies to every project, or `quarkus.dev-mcp.enabled=true` in the project's `application.properties`. `quarkus_attach` calls the server before registering anything and reports what to fix if it gets no answer, rather than attaching to something the proxy tools cannot reach.\n\nSince the process belongs to your terminal, `quarkus_stop` only detaches, and `quarkus_restart` and `quarkus_logs` give way to `devui-logstream_forceRestart` and `devui-logstream_logHistory` through `quarkus_callTool`.\n\n**Key points:**\n\n- **Hot reload** is automatic in Quarkus dev mode — triggered on the next access (HTTP request or test run), not on file save.\n- **Skills before code** — the agent reads extension-specific skills to learn correct patterns, testing approaches, and common pitfalls before writing any code.\n- **Tests via subagents** — if your agent supports subagents, test execution can be dispatched to one so the main conversation stays responsive.\n- **The MCP server survives crashes** — if the app crashes due to a code error, the agent can use `devui-exceptions_getLastException` to get structured exception details (class, message, stack trace, user code location) and fix it. Use `quarkus_logs` for broader context.\n- **CLAUDE.md** — every new project gets a `CLAUDE.md` with Quarkus-specific workflow instructions that guide the agent.\n\n### What the agent can do with a running app\n\nOnce a Quarkus app is running in dev mode, the agent can discover and use all Dev MCP tools via `quarkus_searchTools` and `quarkus_callTool`. The tool list is **dynamic** — it changes when extensions are added or removed, so the agent should re-discover tools after any extension change. Typical tools include:\n\n| Capability | How to discover | Example |\n|-----------|----------------|---------|\n| Testing | `quarkus_searchTools` query: `test` | Run all tests, run a specific test class |\n| Configuration | `quarkus_searchTools` query: `config` | View and change config properties |\n| Extensions | `quarkus_searchTools` query: `extension` | Add or remove extensions at runtime |\n| Endpoints | `quarkus_searchTools` query: `endpoint` | List all REST endpoints and their URLs |\n| Dev Services | `quarkus_searchTools` query: `dev-services` | View database URLs, container info |\n| Log levels | `quarkus_searchTools` query: `log` | Change log levels at runtime |\n| Exceptions | `devui-exceptions_getLastException` | Get last compilation/deployment/runtime exception with stack trace and source location |\n\n### Extension skills\n\nThe agent can read extension-specific coding skills using `quarkus_skills`. Skills contain patterns, testing guidelines, and common pitfalls for each extension — things like \"always use `@Transactional` for write operations with Panache\" or \"don't create REST clients manually, let CDI inject them.\"\n\nWhen called without a query, skills are organized by category (Web, Data, Security, Core, etc.) for easier discovery.\n\nSkills are loaded using a four-layer chain (most specific wins):\n\n1. **Extension skills** — discovered from individual extension deployment JARs (`META-INF/quarkus-skill.md`) in the local Maven repository, composed with extension metadata and available Dev MCP tools. This supports skills from Quarkus core, Quarkiverse, and custom extensions. For older Quarkus versions that don't ship skill files in deployment JARs, the aggregated `quarkus-extension-skills` JAR is used as a fallback.\n2. **Bundled community skills** — shipped in the `io.quarkus:quarkus-skills` JAR on the classpath (`META-INF/skills/<name>/SKILL.md`). These include standalone workflow skills like Spring-to-Quarkus migration and project update checking, and are available immediately without any installation step.\n3. **User-level skills** — from `~/.quarkus/skills/<extension-name>/SKILL.md` (or a directory configured via `agent-mcp.local-skills-dir`). Useful for extension developers testing new or modified skills without rebuilding the aggregated JAR.\n4. **Project-level skills** — from `.agent/skills/<extension-name>/SKILL.md` in the project directory. These are **standalone files** read as-is (no composition with base layers), so any agent can read them directly from the filesystem. Use `quarkus_saveSkill` to materialize a fully composed skill into this directory, then edit the file directly.\n\nLayers 1–3 support **enhance** and **override** composition, controlled by the `mode` field in the SKILL.md frontmatter:\n\n- **`mode: enhance`** (default) — appends content to the base skill. The base content is preserved and the customization is added after a separator. This is ideal for adding personal conventions or standards without losing the built-in guidance.\n- **`mode: override`** — fully replaces the base skill. Use this when you need complete control over a skill's content.\n\nLayer 4 (project) always replaces — the file content is used directly with no composition.\n\nThe agent can create or update **global** skill customizations using `quarkus_updateSkill` (writes to `~/.quarkus/skills/`). For **project-level** customization, use `quarkus_saveSkill` to materialize the full composed skill into `.agent/skills/`, then edit the file directly.\n\n### Documentation search\n\nThe agent can search Quarkus documentation at any time using `quarkus_searchDocs`. This uses semantic search (BGE embeddings + pgvector) over the full Quarkus documentation.\n\nOn first use, a Docker/Podman container with the pre-indexed documentation is started automatically. If a project directory is provided, the documentation version matches the project's Quarkus version.\n\nDocumentation from Quarkiverse and third-party extensions is also indexed automatically when those extensions are project dependencies. Extensions can ship their documentation embeddings either bundled in the deployment JAR or as a separate artifact (recommended for extensions with multiple doc pages — see the [Contributing Extension Documentation](docs/contributing-extension-docs.md) guide).\n\nTo narrow results to a specific extension, use the `extension` parameter:\n\n```\nquarkus_searchDocs query=\"broadcasting messages\" extension=\"quarkus-json-rpc\"\n```\n\n## MCP Tools Reference\n\n### App Creation\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_create` | Create a new Quarkus app, auto-start in dev mode, generate CLAUDE.md | `outputDir` (required), `groupId`, `artifactId`, `extensions`, `buildTool`, `quarkusVersion`, `noCode`, `noWrapper`, `createInCurrentDir` |\n\n### Extension Skills\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_skills` | Get coding patterns, testing guidelines, and pitfalls for project extensions | `projectDir` (required), `query` |\n| `quarkus_updateSkill` | Create or update a global skill customization (enhance or override) in `~/.quarkus/skills/` | `projectDir` (required), `skillName` (required), `content` (required), `description`, `categories`, `mode` |\n| `quarkus_saveSkill` | Materialize a composed skill as a standalone file in `.agent/skills/` for any agent to read | `projectDir` (required), `skillName` (required) |\n\n### Lifecycle Management\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_start` | Start a Quarkus app in dev mode | `projectDir` (required), `buildTool` |\n| `quarkus_attach` | Attach to a Quarkus app already running in dev mode (e.g. started in a terminal). Verifies its Dev MCP server responds before attaching | `projectDir` (required), `httpPort` (read from `application.properties` if omitted) |\n| `quarkus_stop` | Graceful shutdown — only detaches for an attached app | `projectDir` (required) |\n| `quarkus_restart` | Force restart (usually not needed — hot reload is automatic) | `projectDir` (required) |\n| `quarkus_status` | Get app state | `projectDir` (required) |\n| `quarkus_logs` | Get recent log output | `projectDir` (required), `lines` |\n| `quarkus_list` | List all managed instances | _(none)_ |\n| `quarkus_browser` | Open the app or Dev UI in the local browser | `projectDir` (required), `target` (`app` or `devui`) |\n\n### Dev MCP Proxy\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_searchTools` | Discover tools on the running app's Dev MCP server | `projectDir` (required), `query` |\n| `quarkus_callTool` | Invoke a Dev MCP tool by name | `projectDir` (required), `toolName` (required), `toolArguments` |\n\n### Documentation Search\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_searchDocs` | Semantic search over Quarkus documentation | `query` (required), `maxResults`, `projectDir`, `extension` |\n\n### Agent Logging\n\nIn stdio mode, server logs are invisible because stdout/stderr are consumed by the MCP protocol.\n\nFile logging can be enabled permanently by setting `agent-mcp.log.enabled=true`. The easiest way is via an environment variable in your MCP server configuration:\n\n**Claude Code:**\n\n```bash\nclaude mcp add -s user quarkus-agent -e AGENT_MCP_LOG_ENABLED=true -- jbang quarkus-agent-mcp@quarkusio\n```\n\n**VS Code / GitHub Copilot:**\n\n```json\n{\n  \"servers\": {\n    \"quarkus-agent\": {\n      \"type\": \"stdio\",\n      \"command\": \"jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"],\n      \"env\": {\n        \"AGENT_MCP_LOG_ENABLED\": \"true\"\n      }\n    }\n  }\n}\n```\n\n**Cursor / Windsurf / JetBrains (JSON config):**\n\n```json\n{\n  \"mcpServers\": {\n    \"quarkus-agent\": {\n      \"command\": \"jbang\",\n      \"args\": [\"quarkus-agent-mcp@quarkusio\"],\n      \"env\": {\n        \"AGENT_MCP_LOG_ENABLED\": \"true\"\n      }\n    }\n  }\n}\n```\n\nLogs are written to `~/.quarkus/agent-mcp/agent-mcp.log`.\n\nThe agent can also manage file logging on-the-fly:\n\n| Tool | Description | Parameters |\n|------|-------------|------------|\n| `quarkus_agent_log` | Enable, disable, or read the MCP server log file | `action` (`enable`, `disable`, `read`), `lines` |\n| `quarkus_app_log` | Enable, disable, or read a managed app's log file | `projectDir` (required), `action` (`enable`, `disable`, `read`), `lines` |\n\n## Architecture\n\n<p align=\"center\">\n  <img src=\"architecture-diagram.png\" alt=\"Quarkus Agent MCP Architecture\">\n</p>\n\nThe MCP server wraps `quarkus dev` as a child process, so it stays alive when the app crashes. This is the key differentiator from the built-in Dev MCP server.\n\n## Configuration\n\nConfiguration via `application.properties`, system properties (`-D`), or environment variables:\n\n| Property | Default | Description |\n|----------|---------|-------------|\n| `agent-mcp.doc-search.image-prefix` | `ghcr.io/quarkusio/chappie-ingestion-quarkus` | Docker image prefix for pre-indexed docs |\n| `agent-mcp.doc-search.image-tag` | `latest` | Default image tag (overridden by detected Quarkus version) |\n| `agent-mcp.doc-search.pg-user` | `quarkus` | PostgreSQL user |\n| `agent-mcp.doc-search.pg-password` | `quarkus` | PostgreSQL password |\n| `agent-mcp.doc-search.pg-database` | `quarkus` | PostgreSQL database |\n| `agent-mcp.doc-search.min-score` | `0.82` | Minimum similarity score for search results |\n| `agent-mcp.local-skills-dir` | `~/.quarkus/skills` | Directory for user-level skill customizations |\n| `agent-mcp.process.mvn-cmd` | _(auto-detect)_ | Override the Maven command used to start dev mode (e.g. `mvn` to skip wrapper detection) |\n| `agent-mcp.process.gradle-cmd` | _(auto-detect)_ | Override the Gradle command used to start dev mode (e.g. `gradle` to skip wrapper detection) |\n| `agent-mcp.log.enabled` | `false` | Enable file logging on startup — logs are written to `~/.quarkus/agent-mcp/agent-mcp.log` |\n\n## Building a Native Image\n\nFor instant startup (no JVM warmup):\n\n```bash\n./mvnw package -Dnative -DskipTests\n```\n\nThen reference the native binary in your MCP config:\n\n```bash\nclaude mcp add -s user quarkus-agent -- ./target/quarkus-agent-mcp-*-runner\n```\n\n## Presentation\n\nAn HTML slide deck is available in the `presentation/` directory for team demos and talks.\n\n```bash\n# Open directly in a browser\nxdg-open presentation/index.html   # Linux\nopen presentation/index.html        # macOS\n```\n\nPress **F** for fullscreen, arrow keys or space to navigate slides.\n\n## Troubleshooting\n\n### `jbang` or `java` not found (ENOENT)\n\n```\nError: spawn jbang ENOENT\n```\n\nThis happens when the MCP client (IDE, desktop app) cannot find `jbang` or `java` on its PATH. It affects **JetBrains IDEs**, **Claude Desktop**, and other desktop applications that don't inherit your shell environment.\n\n**Why it happens:** Desktop applications launched from a graphical environment inherit the **system PATH** (from `systemd` on Linux, or system environment variables on Windows/macOS), not the **shell PATH** (from `~/.bashrc`, `~/.zshrc`, `~/.profile`). Tools installed via user-local version managers — SDKMAN!, JBang's default installer, asdf, mise — are on the shell PATH but not the system PATH.\n\nThis is different from VS Code, which typically resolves the full shell environment, and from IDE built-in terminals, which start a proper login shell.\n\n**Solutions (pick one):**\n\n1. **Use absolute paths** in your MCP config (recommended):\n   ```json\n   {\n     \"command\": \"/home/you/.jbang/bin/jbang\",\n     \"args\": [\"quarkus-agent-mcp@quarkusio\"]\n   }\n   ```\n   Find the path with `which jbang` or `which java` in a terminal.\n\n2. **Symlink into a system PATH directory:**\n   ```bash\n   sudo ln -s ~/.jbang/bin/jbang /usr/local/bin/jbang\n   ```\n\n3. **Add to the system PATH permanently:**\n   - **Linux (systemd):** Create `/etc/profile.d/jbang.sh` with `export PATH=\"$HOME/.jbang/bin:$PATH\"`, or add the path to `~/.config/environment.d/` for systemd user sessions.\n   - **macOS:** Use `launchctl setenv PATH ...` or add to `/etc/paths.d/`.\n   - **Windows:** Add `%USERPROFILE%\\.jbang\\bin` to the system environment variables (System → Advanced → Environment Variables → System variables → Path).\n\n### `AccessDeniedException: C:\\WINDOWS\\system32\\config` (Windows)\n\n```\njava.nio.file.AccessDeniedException: C:\\WINDOWS\\system32\\config\n```\n\nThis is a [Quarkus core issue](https://github.com/quarkusio/quarkus/issues/53739) that occurs on Windows when the MCP server is launched by an IDE with the working directory set to `system32`. Quarkus scans `{working-dir}/config` for configuration files and hits the protected Windows registry hive directory.\n\n**Workaround:** Set the working directory explicitly in your MCP config, or pass `-Duser.dir` to override it:\n\n```json\n{\n  \"servers\": {\n    \"quarkus-agent\": {\n      \"type\": \"stdio\",\n      \"command\": \"java\",\n      \"args\": [\"-Duser.dir=C:\\\\Users\\\\you\", \"-jar\", \"C:\\\\path\\\\to\\\\quarkus-agent-mcp-runner.jar\"]\n    }\n  }\n}\n```\n\n## Guides\n\n- [Creating Extension Skills](docs/creating-extension-skills.md) - A practical guide for extension developers to discover, write, and test AI skills for their extensions\n- [Contributing Extension Documentation](docs/contributing-extension-docs.md) - How to make your extension's documentation searchable by the AI assistant via RAG\n\n## Related Projects\n\n- [Quarkus Dev MCP](https://github.com/quarkusio/quarkus) — Built-in MCP server inside running Quarkus apps\n- [quarkus-skills](https://github.com/quarkusio/skills) — Community workflow skills for Quarkus (Agent Skills specification)\n- [code-with-quarkus-compare](https://github.com/quarkusio/code-with-quarkus-compare) — Reference projects for build file comparison\n- [chappie-docling-rag](https://github.com/chappie-bot/chappie-docling-rag) — Builds the pgvector Docker images with pre-indexed Quarkus docs\n- [quarkus-mcp-server](https://github.com/quarkiverse/quarkus-mcp-server) — Quarkiverse MCP Server extension used by this project\n\n## Privacy Policy\n\nQuarkus Agent MCP runs entirely on your local machine. It does **not** collect, transmit, or store any personal data, telemetry, or analytics.\n\nThe server makes the following outbound network requests, all in service of its documented features:\n\n| Request | Destination | Purpose |\n|---------|-------------|---------|\n| Skills JAR download | `repo1.maven.org` (or your configured Maven mirror) | Download extension-specific coding patterns for your project's Quarkus version |\n| Version check | `github.com/quarkusio/code-with-quarkus-compare` | Determine the latest Quarkus version and fetch reference build files for update comparison |\n| Documentation container | `ghcr.io/quarkusio/chappie-ingestion-quarkus` | Pull a Docker image with pre-indexed Quarkus documentation for local semantic search |\n| Dev MCP proxy | `localhost` only | Communicate with your running Quarkus application's Dev MCP server |\n\nNo data is sent to Quarkus, Red Hat, or any third party. All downloaded artifacts are cached locally in standard locations (`~/.m2/repository`, Docker image cache). Source code and project files never leave your machine.\n\n## License\n\nApache License 2.0\n",
  "bytes": 25823,
  "sha": "0f2493cf3e04271a45bb00068d1f9561d6249e7db6dc1e79450e514bdf27f650",
  "repo_slug": "quarkusio/quarkus-agent-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_quarkusio_quarkus_agent_mcp_quarkus_agen_545e1d23/readme"
}