Oxidaner opened a new issue, #1576:
URL: https://github.com/apache/dubbo-admin/issues/1576
Parent: #1491
Phase 2 — exact operation resolution, schema generation and position-based
parameter binding.
### Scope
- Exact operation resolver over the unified Resource catalog. A method is
uniquely identified by `mesh + serviceName + group + version + methodName +
ordered parameterTypes`.
- `inputSchema` builder driven by parameter types and recursively reachable
type definitions. Java POJOs and Go structs stay JSON objects; real object
realization remains the job of the provider's existing generic filter.
- Input/output contract fingerprints (split by direction).
- Position-based parameter bindings (`MCPParameterBinding{Position, Alias,
Description}`): alias and description are user-editable, position is immutable.
- Recursive argument decoding and validation errors/warnings.
### Acceptance criteria
- Overloaded methods are distinguished precisely by method name plus ordered
parameter types.
- Binding is strictly position-based: at runtime the JSON value is read by
alias and written to `args[position]`. The implementation must not depend on
JSON object traversal order, must not match positions by type, and must not
infer a position back from an `argN` string. The only source of the RPC type is
`parameterTypes[position]`.
- A stable `argN` is generated when Java parameter names are unavailable,
and a user alias restores the correct RPC position.
- Schema generation rejects, before publish: raw collections, open types,
unresolvable type references, non-string map keys, and types without a stable
JSON representation.
- Each published binding keeps an immutable schema snapshot plus
input/output fingerprints.
- Contract drift: an incompatible **input** contract hides and disables only
the affected Tool, without rewriting the published schema and without affecting
other Tools on the same server. A **return value** contract change produces a
warning only and does not affect `tools/list` or `tools/call`.
- Unknown nested fields are rejected before RPC dispatch.
- A 19-digit `long` nested in a POJO or in a `List` is passed as a string
and received by the provider with full precision.
### PR
- PR-2 — resolver, fingerprints, schema builder.
- PR-3 — recursive argument decoding and Tool contract tests (may be
developed in parallel; PR-2 merges first).
Dependency: Phase 1 (PR-1).
Detailed design: [proposal §15 (line
1243)](https://github.com/Oxidaner/dubbo-admin/blob/213bd38dbcfbe0c5bac64c7c8b949651f1633ca9/docs/proposal/mcp-server-proposal.md?plain=1#L1243)
— design PR #1541.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]