Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Lets AI agents read the real source of any Maven dependency, decompiled from ~/.m2 or Central.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
MAVEN_REPOSITORY, MAVEN_REMOTE_REPOS, MAVEN_REMOTE_USERNAME, MAVEN_REMOTE_PASSWORD, MAVEN_OFFLINE, MAVEN_AUTO_DOWNLOAD, MAVEN_DECODER_CACHE_DIRค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"maven-decoder": {
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_REPOS": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_USERNAME": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_PASSWORD": "ใส่ค่าของคุณ",
"MAVEN_OFFLINE": "ใส่ค่าของคุณ",
"MAVEN_AUTO_DOWNLOAD": "ใส่ค่าของคุณ",
"MAVEN_DECODER_CACHE_DIR": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add maven-decoder --env MAVEN_REPOSITORY='ใส่ค่าของคุณ' --env MAVEN_REMOTE_REPOS='ใส่ค่าของคุณ' --env MAVEN_REMOTE_USERNAME='ใส่ค่าของคุณ' --env MAVEN_REMOTE_PASSWORD='ใส่ค่าของคุณ' --env MAVEN_OFFLINE='ใส่ค่าของคุณ' --env MAVEN_AUTO_DOWNLOAD='ใส่ค่าของคุณ' --env MAVEN_DECODER_CACHE_DIR='ใส่ค่าของคุณ' -- npx -y maven-decoder-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"maven-decoder": {
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_REPOS": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_USERNAME": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_PASSWORD": "ใส่ค่าของคุณ",
"MAVEN_OFFLINE": "ใส่ค่าของคุณ",
"MAVEN_AUTO_DOWNLOAD": "ใส่ค่าของคุณ",
"MAVEN_DECODER_CACHE_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"maven-decoder": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_REPOS": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_USERNAME": "ใส่ค่าของคุณ",
"MAVEN_REMOTE_PASSWORD": "ใส่ค่าของคุณ",
"MAVEN_OFFLINE": "ใส่ค่าของคุณ",
"MAVEN_AUTO_DOWNLOAD": "ใส่ค่าของคุณ",
"MAVEN_DECODER_CACHE_DIR": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
MAVEN_REPOSITORY envMAVEN_REMOTE_REPOS envMAVEN_REMOTE_USERNAME envMAVEN_OFFLINE envMAVEN_AUTO_DOWNLOAD envMAVEN_DECODER_CACHE_DIR envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub salitaba ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: MAVEN_REMOTE_PASSWORD
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.3.2) เข้า registry 2 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js, Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, SSTracker free youth training
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Free youth sports drills, practice plans and age-group answers for parents and coaches.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Your agent guesses at library APIs it has never read. This makes it read them.
Lets AI agents read the actual source of any Maven dependency — decompiles jars from ~/.m2 or Maven Central, and diffs versions for breaking changes.
Ask an agent *"I'm upgrading org.jsoup:jsoup from 1.17.2 to 1.23.2 — what breaks?"* and without a way to read the jars it will answer from memory. With this server, compare_versions reads both jars and reports what actually changed:
| 1.17.2 → 1.23.2 | |
|---|---|
| Breaking changes | 45 |
| Members removed | 31 |
| Members added | 150 |
| Classes with API changes | 47 of 115 compared |
Members are compared as declared, so one that moved to a supertype is reported as removed even though it may still be callable. The tool states this in its own output.
It works on artifacts that have no sources jar too: extract_class_info falls back to javap and returns parsed fields, methods, and bytecode version — which is exactly the case for the internal artifacts in a corporate Nexus.
npx skills add https://github.com/salitaba/maven-decoder-mcp --skill maven-code-search
That installs the maven-code-search agent skill, which tells your agent when to reach for these tools. For a raw MCP server setup instead, see Installation.
~/.m2/repository)curl -fsSL https://raw.githubusercontent.com/salitaba/maven-decoder-mcp/main/install.sh | bash
# Install uv (if not installed)
curl -Ls https://astral.sh/uv/install.sh | sh
uvx maven-decoder-mcp
# Install globally
npm install -g maven-decoder-mcp
npm install maven-decoder-mcp
maven-decoder-mcp
# Pull and run
docker run --rm -it \ -v ~/.m2:/home/mcpuser/.m2 \ -v $(pwd):/workspace \ ali79taba/maven-decoder-mcp:latest
# Clone repository
git clone https://github.com/salitaba/maven-decoder-mcp.git cd maven-decoder-mcp
python3 -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt pip install "git+https://github.com/modelcontextprotocol/python-sdk.git" ./setup_decompilers.sh
./setup_decompilers.sh
For a source checkout, use Python 3.10 or newer and a JDK on PATH. From the repository root, create and activate a virtual environment in PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1 python -m pip install -e ".[dev]"
$env:MAVEN_REPOSITORY = 'F:\data\repository' maven-decoder-mcp
In Command Prompt (cmd.exe), activate with .venv\Scripts\activate.bat and set the repository with set "MAVEN_REPOSITORY=F:\data\repository" instead. These environment settings apply to programs launched from that terminal; set them in your MCP client's environment when it launches the server separately.
Remote downloads use a separate cache, resolved in this order (empty values are skipped):
MAVEN_DECODER_CACHE_DIR: the complete cache directory; no subdirectory is appended.XDG_CACHE_HOME: append maven-decoder-mcp\repository.LOCALAPPDATA: append maven-decoder-mcp\repository.~/.cache/maven-decoder-mcp/repository under your home directory.On Windows, this usually means %LOCALAPPDATA%\maven-decoder-mcp\repository; XDG_CACHE_HOME still takes precedence if set. The cache uses Maven's directory layout but stays separate from the real local repository so downloads do not interfere with Maven builds. Setting MAVEN_REPOSITORY does not change the cache location.
Add to your ~/.cursor/mcp_servers.json:
{
"maven-decoder": { "command": "uvx", "args": ["maven-decoder-mcp"] } }
The server runs as a standard MCP server and can be integrated with any MCP-compatible client.
This repository includes a maven-code-search agent skill that tells AI coding agents when and how to use this MCP for searching installed Maven package code.
npx skills add https://github.com/salitaba/maven-decoder-mcp --skill maven-code-search
The skill is located at skills/maven-code-search and is ready for skills.sh indexing after the repository is pushed.
| Tool | Description |
|---|---|
list_artifacts | List artifacts in Maven repository with filtering |
analyze_jar | Analyze jar file structure and contents |
extract_class_info | Get detailed information about Java classes |
get_dependencies | Retrieve Maven dependencies from POM files |
search_classes | Search for classes across all jars, optionally filtered by annotation |
extract_source_code | Decompile and extract Java source code |
extract_jar_resource | Extract text resources such as .proto files, services, and metadata |
compare_versions | Compare two versions, including a public API diff and breaking changes |
find_usage_examples | Find classes that reference a given class or method |
get_dependency_tree | Get complete dependency tree |
find_dependents | Find artifacts that depend on a specific artifact |
get_version_info | Get installed versions of an artifact (set include_remote to add published ones) |
analyze_jar_structure | Analyze overall jar structure and metadata |
extract_method_info | Extract specific method information from Java classes |
| Tool | Description |
|---|---|
search_maven_central | Search Maven Central for artifacts by name, coordinates, or contained class |
get_remote_versions | List every version published remotely, flagging which are installed |
download_artifact | Download an artifact (jar/sources/POM) into the local cache; accepts latest |
| Tool | Parameter | Type | Default | Description |
|---|---|---|---|---|
list_artifacts | group_id | string | — | Filter by group ID (e.g., 'org.springframework') |
list_artifacts | artifact_id | string | — | Filter by artifact ID (e.g., 'spring-core') |
list_artifacts | version | string | — | Filter by version (e.g., '5.3.21') |
list_artifacts | sort_by | string | name | Order results by: 'name' (group/artifact/version ascending, default), 'size' (largest jars first), or 'modified' (most recently modified first). Unknown values fall back to 'name'. |
list_artifacts | limit | integer | 50 | Maximum number of artifacts to return |
list_artifacts | page | integer | 1 | Page number for pagination |
list_artifacts | items_per_page | integer | 20 | Items per page |
analyze_jar | group_id* | string | — | Maven group ID |
analyze_jar | artifact_id* | string | — | Maven artifact ID |
analyze_jar | version* | string | — | Maven version |
analyze_jar | include_bytecode | boolean | False | Include bytecode analysis |
analyze_jar | include_manifest | boolean | True | Include JAR manifest |
analyze_jar | summarize_large_content | boolean | True | Summarize large content automatically |
extract_class_info | group_id* | string | — | Maven group ID |
extract_class_info | artifact_id* | string | — | Maven artifact ID |
extract_class_info | version* | string | — | Maven version |
extract_class_info | class_pattern | string | — | Pattern to match class names (regex supported) |
extract_class_info | include_methods | boolean | True | Include method signatures |
extract_class_info | include_fields | boolean | True | Include field information |
extract_class_info | include_bytecode | boolean | False | Include verbose javap bytecode output for matched classes |
extract_class_info | page | integer | 1 | Page number for pagination |
extract_class_info | items_per_page | integer | 20 | Items per page |
extract_class_info | summarize_large_content | boolean | True | Summarize large content automatically |
get_dependencies | group_id* | string | — | Maven group ID |
get_dependencies | artifact_id* | string | — | Maven artifact ID |
get_dependencies | version* | string | — | Maven version |
get_dependencies | include_transitive | boolean | False | Include transitive dependencies |
get_dependencies | page | integer | 1 | Page number for pagination |
get_dependencies | items_per_page | integer | 20 | Items per page |
search_classes | class_name | string | — | Class name to search for (supports wildcards) |
search_classes | package_pattern | string | — | Package pattern to filter by |
search_classes | annotation | string | — | Search for classes with specific annotation |
search_classes | case_sensitive | boolean | True | Match class_name and package_pattern case-sensitively. Set false for a case-insensitive search (e.g. 'arraylist' matches 'ArrayList'). |
| search_classes | limit | integer | 100 | Maximum
ตัดมาแค่ช่วงต้น อ่านต่อใน repo