27f0f1c0ac
fix: correct DNS sync results and configuration retention ( #739 )
...
* fix: correct DNS sync results and configuration retention
Keep address families independent, reject failed update responses, preserve complete IPv6 addresses, and retain Studio drafts and effective extra settings. Add offline regressions and wire Studio tests into documentation builds.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(provider): make disk cache regressions deterministic
Align the cache fixture wall clock and file mtime so Windows Python 3.12 clock granularity cannot turn a freshly saved cache into a future-dated file. Keep real disk reads, all cache assertions, production expiry policy and CI matrices unchanged.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
---------
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-09-06 12:45:46 +08:00
3c8578e9f4
feat(mcp): add Streamable HTTP transport ( #736 )
...
* feat(mcp): add Streamable HTTP transport
Add a modern MCP 2026-07-28 HTTP endpoint for standalone and Web modes, with shared listener configuration, authentication, schema, tests, and bilingual documentation.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): support Python 2 HTTP assertions
Normalize response header names and call handler methods through their underlying functions so the HTTP tests behave consistently on Python 2.7 and Python 3.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): harden HTTP request handling
Validate mirrored request IDs, align Config Studio listener checks, bound socket reads, and accept the binary wrapper's documented SIGINT exit status.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): align HTTP negotiation validation
Reject unavailable Accept media types by quality and keep schema host validation consistent with runtime listener checks.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): validate host schema behavior
Assert accepted and rejected host samples instead of comparing Unicode escape representations that differ on Python 2.7.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(tests): avoid cross-engine schema regex
Keep the schema pattern contract without executing its ECMA-262 Unicode escape through Python 2's incompatible regex engine.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate HTTP request boundaries
Reject empty tokens and malformed JSON-RPC request shapes, and keep Config Studio bracket validation aligned with runtime listener handling.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): tighten HTTP input validation
Reject legacy notifications, nested host brackets, and document the required JSON content type so validation remains consistent across runtime, schema, and Config Studio.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate Origin before method errors
Apply the existing Origin policy to non-POST MCP requests and return CORS headers for configured allowed origins.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs(mcp): clarify proxy Origin allowlist
Explain that browser clients behind TLS termination must allowlist the public HTTPS origin even when the public page appears same-origin.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* docs(mcp): add standalone server guide
Move MCP client setup, transports, tools, security, and protocol limits into dedicated Chinese and English pages with matching navigation and index links.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): reject duplicate routing headers
Reject repeated MCP protocol, method, and name headers before body consistency checks across Python 2 and Python 3.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(mcp): validate named request headers
Validate Mcp-Name for tools/call, prompts/get, and resources/read before dispatching unsupported methods.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
---------
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
2026-08-23 21:36:26 +08:00