{"id":51772707,"url":"https://github.com/siom79/japicmp-mcp-server","last_synced_at":"2026-07-20T03:33:08.789Z","repository":{"id":359657166,"uuid":"1247002192","full_name":"siom79/japicmp-mcp-server","owner":"siom79","description":"A Model Context Protocol (MCP) server that exposes japicmp as an AI tool.","archived":false,"fork":false,"pushed_at":"2026-06-19T20:33:08.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-20T03:33:07.451Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/siom79.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T19:45:45.000Z","updated_at":"2026-06-19T20:33:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/siom79/japicmp-mcp-server","commit_stats":null,"previous_names":["siom79/japicmp-mcp-server"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/siom79/japicmp-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siom79%2Fjapicmp-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siom79%2Fjapicmp-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siom79%2Fjapicmp-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siom79%2Fjapicmp-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/siom79","download_url":"https://codeload.github.com/siom79/japicmp-mcp-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/siom79%2Fjapicmp-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35672442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"ssl_error","status_checked_at":"2026-07-20T02:08:09.736Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-20T03:33:06.012Z","updated_at":"2026-07-20T03:33:08.783Z","avatar_url":"https://github.com/siom79.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# japicmp MCP Server\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that exposes [japicmp](https://github.com/siom79/japicmp) as an AI tool. Connect it to Claude Desktop (or any MCP-compatible client) and ask your AI assistant to compare the APIs of any two Maven artifact versions — directly from Maven Central.\n\n## What it does\n\nThe server provides two tools:\n\n- **`compareJavaApi`** — downloads two JAR versions from Maven Central and compares their APIs\n- **`compareLocalJars`** — compares two local JAR files on disk\n\nBoth run a full japicmp comparison and return a Markdown compatibility report with semver classification, a summary table, and detailed per-class breakdowns.\n\n### Example\n\n\u003e \"Compare `com.github.siom79.japicmp:japicmp` version 0.25.0 with 0.26.0 using japicmp\"\n\n```\nHere are the results of comparing japicmp 0.25.0 → 0.26.0:\n\n  ---\n  Verdict: MAJOR (breaking changes)\n  \n  The release is not binary-compatible due to changes in japicmp.cmp.JApiCmpArchive.\n\n  ---\n  Breaking changes in JApiCmpArchive\n  \n  Three methods changed their return types to Optional\u003cT\u003e:\n\n  ┌────────────┬─────────────────┬──────────────────┐\n  │   Method   │ Old return type │ New return type  │\n  ├────────────┼─────────────────┼──────────────────┤\n  │ getBytes() │ byte[]          │ Optional         │\n  ├────────────┼─────────────────┼──────────────────┤\n  │ getFile()  │ File            │ Optional\u003cFile\u003e   │\n  ├────────────┼─────────────────┼──────────────────┤\n  │ getName()  │ String          │ Optional\u003cString\u003e │\n  └────────────┴─────────────────┴──────────────────┘\n\n  These are binary and source incompatible — any code calling these methods needs to be updated to unwrap the Optional.\n\n  ---\n  Other modified classes (no compatibility changes)\n  \n  The following classes were modified but remain fully binary-, source-, and serialization-compatible:\n\n  - japicmp.config.Options — field N_A modifier changed to public static final\n  - japicmp.model.JApiBehavior\n  - japicmp.model.JApiClass\n  - japicmp.model.JApiField\n\n  ---\n  Summary: The only breaking change is the JApiCmpArchive return type wrapping in Optional. If you use that class directly, update call sites to handle Optional\n  results.                                     |\n```\n\nThe report identifies that `JApiCmpArchive.getFile()`, `getBytes()`, and `getName()` changed their return types to `Optional\u003cT\u003e` — a **binary-incompatible** change requiring a semver MAJOR bump.\n\n## Prerequisites\n\n- Java 25+\n\n## Download\n\nYou can download the latest release [here](https://github.com/siom79/japicmp-mcp-server/releases).\n\n## Build\n\n### Prerequisites:\n\n- Maven 3.9+\n\n### Build command\n\n```bash\nmvn package\n```\n\nThis produces `target/japicmp-mcp-server-0.0.4-SNAPSHOT.jar`.\n\n## Integration with Claude\n\nAdd the server to your `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"japicmp\": {\n      \"command\": \"java\",\n      \"args\": [\"-jar\", \"/path/to/japicmp-mcp-server-0.0.4-SNAPSHOT.jar\"]\n    }\n  }\n}\n```\n\nThen restart your CLI. Both tools will be available automatically.\n\n## Tool reference\n\n### `compareJavaApi`\n\nCompares two Maven artifacts for API compatibility using japicmp. Returns a Markdown report.\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `oldGroupId` | string | GroupId of the old artifact (e.g. `com.example`) |\n| `oldArtifactId` | string | ArtifactId of the old artifact |\n| `oldVersion` | string | Version of the old artifact (e.g. `1.0.0`) |\n| `newGroupId` | string | GroupId of the new artifact |\n| `newArtifactId` | string | ArtifactId of the new artifact |\n| `newVersion` | string | Version of the new artifact |\n| `onlyModified` | boolean | Only include modified API elements in the report |\n| `onlyBinaryIncompatible` | boolean | Only include binary-incompatible changes in the report |\n\nBoth artifacts must be available on Maven Central.\n\n### `compareLocalJars`\n\nCompares two local JAR files for API compatibility using japicmp. Returns a Markdown report.\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `oldJarPath` | string | Absolute path to the old JAR file |\n| `newJarPath` | string | Absolute path to the new JAR file |\n| `onlyModified` | boolean | Only include modified API elements in the report |\n| `onlyBinaryIncompatible` | boolean | Only include binary-incompatible changes in the report |\n\nBoth paths must be absolute and point to readable `.jar` files.\n\n### Example\n\n\u003e \"Compare `/home/user/Downloads/japicmp-0.24.0.jar` with `/home/user/Downloads/japicmp-0.25.0.jar` using japicmp\"\n\n```\n## Compatibility Report: japicmp 0.24.0 → 0.25.0\n\nVerdict: MAJOR (breaking changes)\n\nBreaking change in japicmp.compat.CompatibilityChanges:\n  Removed: CompatibilityChanges(JarArchiveComparator)\n  Added:   CompatibilityChanges(JarArchiveComparator, JarArchiveComparatorOptions)\n\nNew method in japicmp.util.FileHelper (compatible):\n  Added: static public String guessVersion(File)\n```\n\n## Technology stack\n\n| Component | Version |\n|-----------|---------|\n| Java | 25 |\n| Spring Boot | 4.0.6 |\n| Spring AI MCP Server | 1.0.0 |\n| japicmp | 0.26.0 |\n| Transport | stdio |\n\n## License\n\nSame as the parent [japicmpweb](https://github.com/siom79/japicmp) project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiom79%2Fjapicmp-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiom79%2Fjapicmp-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiom79%2Fjapicmp-mcp-server/lists"}