Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7948a9d
initial commit
rakdutta May 6, 2026
f9eaebb
fix
rakdutta May 6, 2026
f3fcea8
down revivion
rakdutta May 7, 2026
9ff3e36
chore: remove review documentation files
rakdutta May 7, 2026
117c8ca
style(migration): remove unused sqlalchemy import in d21698ae4a19
rakdutta May 7, 2026
5cb3f65
add pragma: allowlist secret
rakdutta May 7, 2026
25b287b
test: add coverage for IntegrityError race condition handling in role…
rakdutta May 7, 2026
8b15021
feat: add unique constraints to RBAC models for test database schema
rakdutta May 7, 2026
d2fc1d6
ci: add --with-integration flag to pytest workflows to enable integra…
rakdutta May 7, 2026
b14f3aa
test: add unit tests for role service IntegrityError race condition…
rakdutta May 7, 2026
d9e4be5
revert: remove --with-integration flag from workflow files
rakdutta May 7, 2026
a46a701
fix: update alembic down_revision to w7x8y9z0a1b2 to prevent multiple…
rakdutta May 8, 2026
1a565c6
fix(rbac): exclude expired assignments from unique constraints and us…
rakdutta Jun 29, 2026
4b2aa1e
rebase and down revision fix
rakdutta Jun 29, 2026
16d18f5
soft_delete
rakdutta Jun 29, 2026
9158a69
pylint fix
rakdutta Jun 29, 2026
328f9ab
added try and exception block
rakdutta Jun 30, 2026
ece4603
test coverage
rakdutta Jun 30, 2026
13a3d6b
fix(rbac): remap user_roles before role dedup, prefer unexpired assig…
rakdutta Jul 17, 2026
e59f1c0
fix(rbac): fix stale migration docstring/comments, drop unused pytest…
rakdutta Jul 17, 2026
e2adcdc
fix(rbac): set down_revision to b6c7d8e9f0a1 to resolve duplicate ale…
rakdutta Jul 17, 2026
db9c3e5
chore: fix file headers — add encoding/Location/Copyright/SPDX lines,…
rakdutta Jul 17, 2026
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
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,25 @@

## [Unreleased]

### Added

- New REST API endpoint `POST /v1/tools/generate-schemas-from-openapi` for generating MCP tool schemas from OpenAPI specifications without admin UI dependencies (#5142)

### Fixed

- Fixed RBAC seeder race condition that produced HTTP 500 under concurrent bootstrap: added partial unique indexes on `roles(name, scope) WHERE is_active` and `user_roles` equivalent columns, plus savepoint/retry in `RoleService.create_role()` and `assign_role_to_user()`. The migration (`d21698ae4a19`) now also remaps `user_roles.role_id` from duplicate roles to the kept role before deactivating the duplicates (so `list_user_roles()` joins remain intact), and prefers unexpired / most-recently-granted assignments when deduplicating user-role rows (#4636)
- **Custom Auth Headers on Tools** ([#5314](https://github.com/IBM/mcp-context-forge/pull/5314), [#5201](https://github.com/IBM/mcp-context-forge/issues/5201)) - `POST /tools` and `PUT /tools/{tool_id}` now persist the `auth_headers` array instead of silently storing `auth_value: null`. Invalid header keys/values are rejected with a 422 rather than an unhandled 500.

### Security

- Fixed cross-environment JWT acceptance (GHSA-vgf8-3685-66j9, CVE pending). Gateway-issued tokens
now carry an `env` claim and reject environment mismatches by default (`EMBED_ENVIRONMENT_IN_TOKENS=true`,
`VALIDATE_TOKEN_ENVIRONMENT=true`). Added optional `DERIVE_KEY_PER_ENVIRONMENT` to bind the HS*
signing key (including explicit-secret mints) to the deployment environment, which also closes legacy
tokens lacking an `env` claim. **Upgrade:** use a distinct `JWT_SECRET_KEY` per environment and
rotate long-lived tokens; enabling `DERIVE_KEY_PER_ENVIRONMENT` invalidates tokens issued before it
was turned on. RS*/ES* deployments must use distinct key pairs per environment.

### Changed

- **Stricter `authheaders` Key Validation (Gateways, Tools, A2A Agents)** ([#5314](https://github.com/IBM/mcp-context-forge/pull/5314)) - Header-key validation is now shared across all create/update schemas and the admin form. Keys with embedded whitespace (e.g. `X Api Key`) were previously accepted and stored as invalid HTTP header names that failed at invocation time; they are now rejected with a 422 at config time, and surrounding whitespace is trimmed before storage. Gateway or A2A configs relying on the old behavior will need their header keys corrected on the next update.
Expand Down
Loading
Loading