Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion CHANGELOG.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@

## [Unreleased]

## [0.0.2] — 2026-08-29

**セキュリティ修正の版。** ドキュメントどおりに使っているクライアントには何も変わらない。
変わるのは、探しに行ったときに届く先である。このうち1件は実際に成立していた——
`download_file` は、中身が URL のファイルを上げるだけで SSRF にできた。残りは、
開いてはいたがまだ露出していなかった構造を閉じたものである。

### Security

- **`TOOL_SCOPES` に書き忘れたツールが未認証で開かなくなった。** `TOOL_SCOPES.get()` は
Expand Down Expand Up @@ -112,6 +119,7 @@
- **TLS 検証は既定で有効。** 切るには `MCP_TLS_INSECURE=1` が要る。
- デモ利用者は `MCP_DEMO_USERS=yes` を付けない限り作らない(パスワードが弱いため)。

[Unreleased]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.1...HEAD
[Unreleased]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.2...HEAD
[0.0.2]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.1...v0.0.2
[0.0.1]: https://github.com/RCOSDP/invenio-mcp/releases/tag/v0.0.1
<!-- --8<-- [end:body] -->
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ as breaking when the consumer is a language model rather than a compiler.

## [Unreleased]

## [0.0.2] — 2026-08-29

**A security release.** Nothing changes for a client that was using the servers as
documented; what changes is what a client could reach if it went looking. One of these
was reachable in practice — `download_file` could be turned into an SSRF by uploading a
file whose contents are a URL. The rest closed structures that were open but not yet
exposed.

### Security

- **A tool missing from `TOOL_SCOPES` no longer defaults to public.** `TOOL_SCOPES.get()`
Expand Down Expand Up @@ -125,6 +133,7 @@ REST API — no extension to install on the repository side.
- **TLS verification is on by default.** Turning it off takes `MCP_TLS_INSECURE=1`.
- Demo users are not created unless `MCP_DEMO_USERS=yes`; their passwords are weak.

[Unreleased]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.1...HEAD
[Unreleased]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.2...HEAD
[0.0.2]: https://github.com/RCOSDP/invenio-mcp/compare/v0.0.1...v0.0.2
[0.0.1]: https://github.com/RCOSDP/invenio-mcp/releases/tag/v0.0.1
<!-- --8<-- [end:body] -->
6 changes: 3 additions & 3 deletions docs/project/versioning.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ invenio-mcp は[セマンティックバージョニング 2.0.0](https://semver
出すたびに古くなるからで、[変更履歴](changelog.md)にある。

```bash
python3 stdio/server.py --version # invenio-mcp stdio server 0.0.1
python3 stdio/server.py --version # invenio-mcp stdio server <version>
# HTTP 版は起動時の表示に出る
```

Expand Down Expand Up @@ -83,15 +83,15 @@ python3 stdio/server.py --version # invenio-mcp stdio server 0.0.1
## 出し方

```bash
# 1. 両方のサーバの版を上げ、変更履歴を両言語で書く
# 1. 両方のサーバの版を上げ、[Unreleased] を新しい版へ移す(両言語とも)
vim http/mcp_server.py stdio/server.py CHANGELOG.md CHANGELOG.ja.md

# 2. CI が見るものを先に見る
python3 tools/gen_tool_reference.py --check
mkdocs build --strict

# 3. タグを打つ
git tag -a v0.0.2 -m "v0.0.2" && git push origin v0.0.2
git tag -a v0.0.3 -m "v0.0.3" && git push origin v0.0.3
```

リリースのワークフローは、タグが**両方**のサーバの `__version__` と一致すること、
Expand Down
6 changes: 3 additions & 3 deletions docs/project/versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ written on this page**, because it would go stale at every release; it is in the
[changelog](changelog.md).

```bash
python3 stdio/server.py --version # invenio-mcp stdio server 0.0.1
python3 stdio/server.py --version # invenio-mcp stdio server <version>
# the HTTP server prints it in the startup banner
```

Expand Down Expand Up @@ -88,15 +88,15 @@ Until then, pin an exact version.
## Releasing

```bash
# 1. Bump both servers and write the changelog in both languages
# 1. Bump both servers and move [Unreleased] into the new version, in both languages
vim http/mcp_server.py stdio/server.py CHANGELOG.md CHANGELOG.ja.md

# 2. Check what CI will check
python3 tools/gen_tool_reference.py --check
mkdocs build --strict

# 3. Tag
git tag -a v0.0.2 -m "v0.0.2" && git push origin v0.0.2
git tag -a v0.0.3 -m "v0.0.3" && git push origin v0.0.3
```

The release workflow verifies that the tag matches `__version__` in **both** servers and
Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ docker compose up -d --build

```
MCP リソースサーバ: http://0.0.0.0:9100/mcp
版 : 0.0.1
版 : 0.0.2
canonical URI (RFC 8707 resource) : http://127.0.0.1:9100/mcp
認証方式 (MCP_AUTH_MODE) : invenio
言語 (MCP_LANG) : ja(利用可能: en ja)
Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ The banner tells you what it decided:

```
MCP resource server: http://0.0.0.0:9100/mcp
version : 0.0.1
version : 0.0.2
canonical URI (RFC 8707 resource) : http://127.0.0.1:9100/mcp
auth mode (MCP_AUTH_MODE) : invenio
language (MCP_LANG) : en (available: en ja)
Expand Down
2 changes: 1 addition & 1 deletion http/mcp_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
# セマンティックバージョニング(https://semver.org/lang/ja/)。
# 何を破壊的変更とみなすかは docs/about/versioning.md に書いてある。
# stdio/server.py の __version__ と揃える(CI が一致を検査する)。
__version__ = "0.0.1"
__version__ = "0.0.2"

# ------------------------------------------------------------------ i18n
# 利用者(と LLM)に見える文字列は locales/<lang>.json に置く。ツールの説明・
Expand Down
2 changes: 1 addition & 1 deletion stdio/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# セマンティックバージョニング(https://semver.org/lang/ja/)。
# 何を破壊的変更とみなすかは docs/about/versioning.md に書いてある。
# http/mcp_server.py の __version__ と揃える(CI が一致を検査する)。
__version__ = "0.0.1"
__version__ = "0.0.2"

# ---- 設定 ----
_HERE = os.path.dirname(os.path.abspath(__file__))
Expand Down
Loading