minecode-mcp 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/PKG-INFO +75 -18
  2. minecode_mcp-0.2.0/readme.md → minecode_mcp-0.2.1/README.md +74 -17
  3. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/pyproject.toml +9 -3
  4. minecode_mcp-0.2.0/scripts/readme.md +0 -22
  5. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/.gitignore +0 -0
  6. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/LICENSE +0 -0
  7. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/README.md +0 -0
  8. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/dimension/crystal_void.json +0 -0
  9. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/dimension_type/crystal_void.json +0 -0
  10. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/build_tower.mcfunction +0 -0
  11. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/give_kit.mcfunction +0 -0
  12. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/help.mcfunction +0 -0
  13. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/load.mcfunction +0 -0
  14. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/return.mcfunction +0 -0
  15. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/spawn_boss.mcfunction +0 -0
  16. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/teleport.mcfunction +0 -0
  17. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/function/tick.mcfunction +0 -0
  18. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/biome/crystal_plains.json +0 -0
  19. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/configured_feature/amethyst_clusters.json +0 -0
  20. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/configured_feature/crystal_spikes.json +0 -0
  21. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/configured_feature/ore_crystal_diamond.json +0 -0
  22. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/configured_feature/ore_crystal_emerald.json +0 -0
  23. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/noise_settings/crystal_void.json +0 -0
  24. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/placed_feature/amethyst_clusters.json +0 -0
  25. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/placed_feature/crystal_spikes.json +0 -0
  26. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/placed_feature/ore_crystal_diamond.json +0 -0
  27. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/crystal/worldgen/placed_feature/ore_crystal_emerald.json +0 -0
  28. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/minecraft/tags/function/load.json +0 -0
  29. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/data/minecraft/tags/function/tick.json +0 -0
  30. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/example/crystal_dimension/pack.mcmeta +0 -0
  31. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/__init__.py +0 -0
  32. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/brigadier.py +0 -0
  33. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/cache.py +0 -0
  34. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/config/config.json +0 -0
  35. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/config/prompt_config.json +0 -0
  36. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/handlers.py +0 -0
  37. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/knowledge/__init__.py +0 -0
  38. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/knowledge/migrations.json +0 -0
  39. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/packmeta.py +0 -0
  40. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/preprompts/assistant_preprompt.txt +0 -0
  41. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/__init__.py +0 -0
  42. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/minecraft_logs.py +0 -0
  43. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/minecraftwiki.py +0 -0
  44. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/misode.py +0 -0
  45. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/mojira.py +0 -0
  46. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/scrappers/spyglass.py +0 -0
  47. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/server.py +0 -0
  48. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/minecode/tools.py +0 -0
  49. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/tests/test_knowledge.py +0 -0
  50. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/tests/test_live.py +0 -0
  51. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/tests/test_registry.py +0 -0
  52. {minecode_mcp-0.2.0 → minecode_mcp-0.2.1}/tests/test_regressions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: minecode-mcp
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: MCP Server for Minecraft datapack development with wiki, Spyglass, Misode, and Mojira integrations
5
5
  Project-URL: Homepage, https://github.com/AnCarsenat/minecode-mcp
6
6
  Project-URL: Repository, https://github.com/AnCarsenat/minecode-mcp
@@ -27,18 +27,35 @@ Requires-Dist: pytest>=8.0; extra == 'dev'
27
27
  Requires-Dist: twine>=5.0; extra == 'dev'
28
28
  Description-Content-Type: text/markdown
29
29
 
30
- # 🎮 MineCode MCP
30
+ <!--
31
+ Absolute raw URLs, not relative paths: this file is also the PyPI long
32
+ description, and PyPI does not resolve repo-relative image paths.
33
+ Points at the 256x256 export and displays at 128, so the browser scales
34
+ DOWN rather than up. GitHub strips style attributes, so image-rendering
35
+ cannot be set -- downscaling is what keeps the block art from smearing.
36
+ -->
37
+ <div align="center">
31
38
 
32
- **MCP Server for Minecraft Datapack Development**
39
+ <img src="https://github.com/AnCarsenat/minecode-mcp/raw/main/assets/readme/logo_256x256.png" alt="MineCode logo" width="128" height="128">
33
40
 
34
- Written for a hackathon about MCP sponsored by dust, alpic, and others. Please star if you'd like to help out, and open issues for anything broken.
41
+ # MineCode MCP
42
+
43
+ **Version-accurate Minecraft data for AI assistants**
35
44
 
36
- [![PyPI](https://img.shields.io/pypi/v/minecode-mcp)](https://pypi.org/project/minecode-mcp/)
37
- [![Python](https://img.shields.io/badge/Python-3.10+-blue)](https://python.org)
45
+ [![PyPI](https://img.shields.io/pypi/v/minecode-mcp?logo=pypi&logoColor=white)](https://pypi.org/project/minecode-mcp/)
46
+ [![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white)](https://python.org)
38
47
  [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)
48
+ [![Tests](https://github.com/AnCarsenat/minecode-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/AnCarsenat/minecode-mcp/actions/workflows/test.yml)
49
+
50
+ [![MseeP.ai Security Assessment](https://mseep.net/pr/ancarsenat-minecode-mcp-badge.png)](https://mseep.ai/app/ancarsenat-minecode-mcp)
51
+ [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/5b3391b1-6799-4fd5-8496-308849e8a8c7)
52
+
53
+ </div>
39
54
 
40
55
  MineCode is a **local** [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that gives AI assistants like **GitHub Copilot** and **Claude** real-time access to version-accurate Minecraft data, documentation, vanilla presets, and your Minecraft logs.
41
56
 
57
+ Written for a hackathon about MCP sponsored by dust, alpic, and others. Please star if you'd like to help out, and open issues for anything broken.
58
+
42
59
  ![example](https://github.com/AnCarsenat/minecode-mcp/raw/main/assets/readme/example6.png)
43
60
 
44
61
  ---
@@ -590,25 +607,65 @@ That's it. No token is generated and nothing is pasted into GitHub.
590
607
 
591
608
  ### Releasing
592
609
 
610
+ > **⚠️ Step 1 is bumping the version in `pyproject.toml`. Do not skip it.**
611
+ >
612
+ > A version number on PyPI is **permanent**. Once `0.2.0` is published, that
613
+ > number can never be reused or overwritten — even if you delete the release.
614
+ > A bad publish can only be followed by a *new* version, never a replacement.
615
+ > Re-tagging an already-published version fails at the upload step.
616
+
617
+ **1. Bump the version.** Edit `version` in `pyproject.toml`:
618
+
619
+ ```toml
620
+ version = "0.2.1" # was 0.2.0
621
+ ```
622
+
623
+ Which digit to move:
624
+
625
+ | Change | Bump | Example |
626
+ |--------|------|---------|
627
+ | Bug fix, docs, internals — nothing user-visible breaks | patch | `0.2.0` → `0.2.1` |
628
+ | New tools, new parameters — existing setups keep working | minor | `0.2.0` → `0.3.0` |
629
+ | Tools removed or renamed, parameters removed — existing configs break | major-ish | `0.2.0` → `0.3.0` before 1.0, `1.x` → `2.0` after |
630
+
631
+ (`0.2.0` was a minor bump because it removed two tools and renamed one.)
632
+
633
+ **2. Commit, tag, and push.** The tag must be `v` + the exact version:
634
+
593
635
  ```bash
594
- # 1. Bump the version in pyproject.toml, e.g. 0.1.9 -> 0.2.0
595
- # 2. Commit, tag, push
596
636
  git add pyproject.toml
597
- git commit -m "Release 0.2.0"
598
- git tag v0.2.0
637
+ git commit -m "Release 0.2.1"
638
+ git tag v0.2.1
599
639
  git push origin main --tags
600
640
  ```
601
641
 
602
- The workflow fires on the tag and will:
642
+ **3. Approve the deployment.** The workflow builds, then pauses. Go to the
643
+ **Actions** tab → the running **Publish to PyPI** run → **Review deployments**
644
+ → tick `pypi` → **Approve and deploy**. GitHub also emails you an approve link.
645
+
646
+ Publishing takes about 30 seconds after approval.
647
+
648
+ #### What the workflow checks before it will publish
649
+
650
+ 1. **The tag matches `pyproject.toml`** — this is the safety net for a forgotten bump. Tagging `v0.2.1` while `pyproject.toml` still says `0.2.0` fails the build with `Tag v0.2.1 does not match pyproject.toml version 0.2.0`, and nothing is published
651
+ 2. Offline test suite passes
652
+ 3. Wheel and sdist build
653
+ 4. `twine check` on the metadata
654
+ 5. The preprompt, config, and migration table are actually inside the wheel
603
655
 
604
- 1. Verify the tag matches `pyproject.toml` (a mismatch fails the build rather than shipping a mislabelled release)
605
- 2. Run the offline test suite
606
- 3. Build the wheel and sdist
607
- 4. Check the metadata with `twine check`
608
- 5. Verify the preprompt, config, and migration table are actually inside the wheel
609
- 6. Publish to PyPI
656
+ If any of these fail, the approval button never appears — there is nothing to approve.
657
+
658
+ #### If you forgot to bump
659
+
660
+ The build fails at step 1 and nothing ships. Recover by deleting the tag, bumping properly, and re-tagging:
661
+
662
+ ```bash
663
+ git tag -d v0.2.1
664
+ git push origin :refs/tags/v0.2.1
665
+ # bump pyproject.toml, commit, then tag again
666
+ ```
610
667
 
611
- If you enabled required reviewers, approve the run in the **Actions** tab.
668
+ This is safe precisely *because* nothing was published.
612
669
 
613
670
  ### Optional: TestPyPI first
614
671
 
@@ -1,15 +1,32 @@
1
- # 🎮 MineCode MCP
1
+ <!--
2
+ Absolute raw URLs, not relative paths: this file is also the PyPI long
3
+ description, and PyPI does not resolve repo-relative image paths.
4
+ Points at the 256x256 export and displays at 128, so the browser scales
5
+ DOWN rather than up. GitHub strips style attributes, so image-rendering
6
+ cannot be set -- downscaling is what keeps the block art from smearing.
7
+ -->
8
+ <div align="center">
2
9
 
3
- **MCP Server for Minecraft Datapack Development**
10
+ <img src="https://github.com/AnCarsenat/minecode-mcp/raw/main/assets/readme/logo_256x256.png" alt="MineCode logo" width="128" height="128">
4
11
 
5
- Written for a hackathon about MCP sponsored by dust, alpic, and others. Please star if you'd like to help out, and open issues for anything broken.
12
+ # MineCode MCP
13
+
14
+ **Version-accurate Minecraft data for AI assistants**
6
15
 
7
- [![PyPI](https://img.shields.io/pypi/v/minecode-mcp)](https://pypi.org/project/minecode-mcp/)
8
- [![Python](https://img.shields.io/badge/Python-3.10+-blue)](https://python.org)
16
+ [![PyPI](https://img.shields.io/pypi/v/minecode-mcp?logo=pypi&logoColor=white)](https://pypi.org/project/minecode-mcp/)
17
+ [![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white)](https://python.org)
9
18
  [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)
19
+ [![Tests](https://github.com/AnCarsenat/minecode-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/AnCarsenat/minecode-mcp/actions/workflows/test.yml)
20
+
21
+ [![MseeP.ai Security Assessment](https://mseep.net/pr/ancarsenat-minecode-mcp-badge.png)](https://mseep.ai/app/ancarsenat-minecode-mcp)
22
+ [![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/5b3391b1-6799-4fd5-8496-308849e8a8c7)
23
+
24
+ </div>
10
25
 
11
26
  MineCode is a **local** [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that gives AI assistants like **GitHub Copilot** and **Claude** real-time access to version-accurate Minecraft data, documentation, vanilla presets, and your Minecraft logs.
12
27
 
28
+ Written for a hackathon about MCP sponsored by dust, alpic, and others. Please star if you'd like to help out, and open issues for anything broken.
29
+
13
30
  ![example](https://github.com/AnCarsenat/minecode-mcp/raw/main/assets/readme/example6.png)
14
31
 
15
32
  ---
@@ -561,25 +578,65 @@ That's it. No token is generated and nothing is pasted into GitHub.
561
578
 
562
579
  ### Releasing
563
580
 
581
+ > **⚠️ Step 1 is bumping the version in `pyproject.toml`. Do not skip it.**
582
+ >
583
+ > A version number on PyPI is **permanent**. Once `0.2.0` is published, that
584
+ > number can never be reused or overwritten — even if you delete the release.
585
+ > A bad publish can only be followed by a *new* version, never a replacement.
586
+ > Re-tagging an already-published version fails at the upload step.
587
+
588
+ **1. Bump the version.** Edit `version` in `pyproject.toml`:
589
+
590
+ ```toml
591
+ version = "0.2.1" # was 0.2.0
592
+ ```
593
+
594
+ Which digit to move:
595
+
596
+ | Change | Bump | Example |
597
+ |--------|------|---------|
598
+ | Bug fix, docs, internals — nothing user-visible breaks | patch | `0.2.0` → `0.2.1` |
599
+ | New tools, new parameters — existing setups keep working | minor | `0.2.0` → `0.3.0` |
600
+ | Tools removed or renamed, parameters removed — existing configs break | major-ish | `0.2.0` → `0.3.0` before 1.0, `1.x` → `2.0` after |
601
+
602
+ (`0.2.0` was a minor bump because it removed two tools and renamed one.)
603
+
604
+ **2. Commit, tag, and push.** The tag must be `v` + the exact version:
605
+
564
606
  ```bash
565
- # 1. Bump the version in pyproject.toml, e.g. 0.1.9 -> 0.2.0
566
- # 2. Commit, tag, push
567
607
  git add pyproject.toml
568
- git commit -m "Release 0.2.0"
569
- git tag v0.2.0
608
+ git commit -m "Release 0.2.1"
609
+ git tag v0.2.1
570
610
  git push origin main --tags
571
611
  ```
572
612
 
573
- The workflow fires on the tag and will:
613
+ **3. Approve the deployment.** The workflow builds, then pauses. Go to the
614
+ **Actions** tab → the running **Publish to PyPI** run → **Review deployments**
615
+ → tick `pypi` → **Approve and deploy**. GitHub also emails you an approve link.
616
+
617
+ Publishing takes about 30 seconds after approval.
618
+
619
+ #### What the workflow checks before it will publish
620
+
621
+ 1. **The tag matches `pyproject.toml`** — this is the safety net for a forgotten bump. Tagging `v0.2.1` while `pyproject.toml` still says `0.2.0` fails the build with `Tag v0.2.1 does not match pyproject.toml version 0.2.0`, and nothing is published
622
+ 2. Offline test suite passes
623
+ 3. Wheel and sdist build
624
+ 4. `twine check` on the metadata
625
+ 5. The preprompt, config, and migration table are actually inside the wheel
574
626
 
575
- 1. Verify the tag matches `pyproject.toml` (a mismatch fails the build rather than shipping a mislabelled release)
576
- 2. Run the offline test suite
577
- 3. Build the wheel and sdist
578
- 4. Check the metadata with `twine check`
579
- 5. Verify the preprompt, config, and migration table are actually inside the wheel
580
- 6. Publish to PyPI
627
+ If any of these fail, the approval button never appears — there is nothing to approve.
628
+
629
+ #### If you forgot to bump
630
+
631
+ The build fails at step 1 and nothing ships. Recover by deleting the tag, bumping properly, and re-tagging:
632
+
633
+ ```bash
634
+ git tag -d v0.2.1
635
+ git push origin :refs/tags/v0.2.1
636
+ # bump pyproject.toml, commit, then tag again
637
+ ```
581
638
 
582
- If you enabled required reviewers, approve the run in the **Actions** tab.
639
+ This is safe precisely *because* nothing was published.
583
640
 
584
641
  ### Optional: TestPyPI first
585
642
 
@@ -4,9 +4,15 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "minecode-mcp"
7
- version = "0.2.0"
7
+ # To release: bump this, commit, then tag with a matching "v" prefix.
8
+ # version = "0.2.1" -> git tag v0.2.1 && git push origin main --tags
9
+ # The publish workflow refuses to build if the tag and this value disagree,
10
+ # so a forgotten bump fails loudly instead of shipping a mislabelled release.
11
+ # PyPI version numbers are permanent -- a published version can never be
12
+ # replaced, only superseded. See "Releasing" in README.md.
13
+ version = "0.2.1"
8
14
  description = "MCP Server for Minecraft datapack development with wiki, Spyglass, Misode, and Mojira integrations"
9
- readme = "readme.md"
15
+ readme = "README.md"
10
16
  license = "MIT"
11
17
  authors = [
12
18
  { name = "AnCarsenat" }
@@ -65,7 +71,7 @@ artifacts = [
65
71
  include = [
66
72
  "minecode/",
67
73
  "tests/",
68
- "readme.md",
74
+ "README.md",
69
75
  "LICENSE",
70
76
  "example/",
71
77
  ]
@@ -1,22 +0,0 @@
1
-
2
- ---
3
-
4
- **Release**
5
- - **Script**: `scripts/release.ps1` — full release workflow (clean, bump, build, push, publish).
6
- - **Token**: `pip_token.txt` or environment variable `PYPI_API_TOKEN` (the script sets `TWINE_USERNAME=__token__` and `TWINE_PASSWORD` from the token).
7
- - **Behavior**: removes `dist/`, `build/` and any `*.egg-info`, bumps the patch number in `pyproject.toml` (when `-Bump`), commits, tags `vX.Y.Z`, pushes, builds sdist/wheel, and uploads the release.
8
- - **Python**: prefers `venv\Scripts\python.exe` if present, otherwise uses `python` on PATH.
9
- - **Examples**:
10
-
11
- ```powershell
12
- # Bump, build, push tag, and publish
13
- .\scripts\release.ps1 -Bump -Publish
14
-
15
- # Build and publish without bump
16
- .\scripts\release.ps1 -Publish
17
-
18
- # Just build (no bump, no publish)
19
- .\scripts\release.ps1
20
- ```
21
-
22
- - **Notes**: the older `scripts/bump_version.*` utilities were consolidated into `release.ps1`; keep your PyPI API token in `pip_token.txt` or set `PYPI_API_TOKEN` for CI.
File without changes
File without changes