<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn" -->

---
title: Using LLMs and MCP to generate static code analysis rules
description: Scribe is an MCP server built with Quarkus that exposes a single tool—executeKantraOperation—to generate YAML-based static analysis rules compatible with...
canonical: https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Using LLMs and MCP to generate static code analysis rules | daily.dev
og:description: Scribe is an MCP server built with Quarkus that exposes a single tool—executeKantraOperation—to generate YAML-based static analysis rules compatible with...
og:url: https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn
og:image: https://api.daily.dev/og/posts/ffIhGe4tN.png
og:image:alt: Using LLMs and MCP to generate static code analysis rules
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Using LLMs and MCP to generate static code analysis rules

**[Shaaf](https://daily.dev/sources/shaaf)** · 7 min read · 2 upvotes · 0 comments

## Summary

Scribe is an MCP server built with Quarkus that exposes a single tool—executeKantraOperation—to generate YAML-based static analysis rules compatible with Konveyor/Kantra. Instead of hand-writing repetitive rule YAML, developers can prompt an LLM agent (Cursor, Claude Desktop, etc.) to produce valid Kantra rules from migration guides, tickets, or ad-hoc descriptions. The post covers Scribe's internal architecture (KantraTool, CommandRegistry, KantraCommand, Rule record, and polymorphic Condition types), provides three concrete rule examples (Java import migration, Go type reference for Kubernetes Ingress→Gateway API, and XML file content matching), explains how to connect it via mcp.json, and lists explicit limitations around rule validation, pattern noise, and JSON escaping.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://shaaf.dev/post/2026-03-29-using-llms-and-mcp-to-generate-static-code-analysis-rules/>

## Similar posts on daily.dev

- [Claude Code SonarQube MCP: A Java Developer’s Workflow](https://daily.dev/posts/claude-code-sonarqube-mcp-a-java-developer-s-workflow-hr86s9tlw) · Foojay.io · 1 upvotes · 0 comments
- [Detect Production-grade Code Quality Issues in Real-time\!](https://daily.dev/posts/detect-production-grade-code-quality-issues-in-real-time--57jqvlxrc) · Daily Dose of Data Science \| Avi Chawla \| Substack · 1 upvotes · 0 comments

---

Tags: [#devtools](https://daily.dev/tags/devtools), [#java](https://daily.dev/tags/java), [#llm](https://daily.dev/tags/llm), [#mcp](https://daily.dev/tags/mcp)

[View this post on daily.dev](https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Using LLMs and MCP to generate static code analysis rules","url":"https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn"},"datePublished":"2026-03-29T20:30:59.272Z","dateModified":"2026-03-29T20:31:29.029Z","description":"Scribe is an MCP server built with Quarkus that exposes a single tool—executeKantraOperation—to generate YAML-based static analysis rules compatible with...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a881d2360ea4bfb526b0a0beba5d7304?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a881d2360ea4bfb526b0a0beba5d7304?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Shaaf","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Shaaf","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/0b296c189bd840d99decdb5078460675","url":"https://daily.dev/sources/shaaf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/using-llms-and-mcp-to-generate-static-code-analysis-rules-ffihge4tn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devtools,java,llm,mcp","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Shaaf","item":"https://daily.dev/sources/shaaf"},{"@type":"ListItem","position":3,"name":"Using LLMs and MCP to generate static code analysis rules"}]}
```

