ModelEngine-Group / ModelEngine-Group/nexent

[Bug] Tenant-scoped OpenAPI refresh mutates global mounted MCP state

Open
#2,798 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5.9k
Forks
731
Avg merge
19h 34m
Merged PRs (30d)
172

Description

Nexent Version

Observed in the current public API-to-MCP refactor branch logic and relevant to the recent API-to-MCP work merged around v2.0.1.

Problem Description

The tenant-scoped refresh logic for imported OpenAPI services currently mutates a global in-process mounted MCP service set.

In local validation against the public refactor logic, refreshing tenant A mounted ['local', 'svc_a'], and then refreshing tenant B replaced that with ['local', 'svc_b'].

That means the refresh behavior is tenant-scoped in input, but global in effect.

Reproduction Steps
  1. Prepare two tenants with different imported OpenAPI services.
  2. Refresh tenant A and observe the mounted service set.
  3. Refresh tenant B in the same process.
  4. Observe that the mounted set is replaced globally instead of being isolated per tenant.
Additional Information

This looks like an isolation / lifecycle problem in the API-to-MCP mounting model.

Before proposing a patch, it would help to confirm the intended model:

  • one global singleton service set for the whole process,
  • per-tenant isolation inside the same process,
  • or per-runtime / per-container isolation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the tenant-scoped refresh logic in the API-to-MCP refactor and the global in-process mounted MCP service set. Reproduce the two-tenant sequence, establish whether isolation is per tenant, process, or runtime, and add coverage showing that refreshing tenant B does not replace tenant A's mounted services under the chosen model.

Written by the indexing model from the issue text.

Assessment

Tech stack
openapi, python
Domain
backend-api-design
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.