Files
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

106 lines
5.6 KiB
Plaintext

# DDNS Documentation - AI/LLM Context
> This file provides structured documentation for AI language models and assistants.
## Project Overview
**Name:** DDNS - Dynamic DNS Client
**Repository:** https://github.com/NewFuture/DDNS
**Documentation:** https://ddns.newfuture.cc
**License:** MIT
## Description
DDNS is a Python-based dynamic DNS client that automatically updates DNS records to match your current IP address. It supports multiple DNS providers including DNSPod, Cloudflare, AliDNS, and many others. The project supports both IPv4 and IPv6, and can be run via command line, Docker, or as a system service.
## Key Features
- Automatic IP detection (IPv4/IPv6)
- Multiple DNS provider support (18 providers)
- Multiple configuration methods (CLI, Environment Variables, JSON)
- Docker support with multi-architecture images
- Python 2.7+ and 3.x compatible
- Standard library only (no external dependencies)
## Documentation Structure
**Note:** Documentation guides are available in both HTML and Markdown formats; interactive tools are HTML-only.
- HTML: For web browsers (e.g., `/install.html`)
- Markdown: For AI/LLM consumption (e.g., `/install.md`)
- English docs mirror the Chinese paths with the `/en/` prefix (e.g., `/en/install.md`, `/en/config/json.md`, `/en/providers/cloudflare.md`).
### Core Documentation
- Homepage: https://ddns.newfuture.cc/ ([.md](https://ddns.newfuture.cc/index.md))
- Installation: https://ddns.newfuture.cc/install ([.md](https://ddns.newfuture.cc/install.md))
- Docker Guide: https://ddns.newfuture.cc/docker ([.md](https://ddns.newfuture.cc/docker.md))
- Release Notes: https://ddns.newfuture.cc/release ([.md](https://ddns.newfuture.cc/release.md))
### Configuration Guides
- CLI Arguments: https://ddns.newfuture.cc/config/cli ([.md](https://ddns.newfuture.cc/config/cli.md))
- MCP Server: https://ddns.newfuture.cc/config/mcp ([.md](https://ddns.newfuture.cc/config/mcp.md))
- Environment Variables: https://ddns.newfuture.cc/config/env ([.md](https://ddns.newfuture.cc/config/env.md))
- JSON Configuration: https://ddns.newfuture.cc/config/json ([.md](https://ddns.newfuture.cc/config/json.md))
- Interactive Config Studio: https://ddns.newfuture.cc/config/studio.html (build and validate DDNS configurations in the browser)
### DNS Provider Guides
- Provider Overview: https://ddns.newfuture.cc/providers/ ([.md](https://ddns.newfuture.cc/providers/README.md))
- DNSPod: https://ddns.newfuture.cc/providers/dnspod ([.md](https://ddns.newfuture.cc/providers/dnspod.md))
- Cloudflare: https://ddns.newfuture.cc/providers/cloudflare ([.md](https://ddns.newfuture.cc/providers/cloudflare.md))
- ClouDNS: https://ddns.newfuture.cc/providers/cloudns ([.md](https://ddns.newfuture.cc/providers/cloudns.md))
- AliDNS (Alibaba): https://ddns.newfuture.cc/providers/alidns ([.md](https://ddns.newfuture.cc/providers/alidns.md))
- Tencent Cloud: https://ddns.newfuture.cc/providers/tencentcloud ([.md](https://ddns.newfuture.cc/providers/tencentcloud.md))
- Huawei Cloud: https://ddns.newfuture.cc/providers/huaweidns ([.md](https://ddns.newfuture.cc/providers/huaweidns.md))
- HE.net: https://ddns.newfuture.cc/providers/he ([.md](https://ddns.newfuture.cc/providers/he.md))
- DNS.COM / 51DNS: https://ddns.newfuture.cc/providers/51dns ([.md](https://ddns.newfuture.cc/providers/51dns.md))
- Aliesa: https://ddns.newfuture.cc/providers/aliesa ([.md](https://ddns.newfuture.cc/providers/aliesa.md))
- Callback: https://ddns.newfuture.cc/providers/callback ([.md](https://ddns.newfuture.cc/providers/callback.md))
- Debug Mode: https://ddns.newfuture.cc/providers/debug ([.md](https://ddns.newfuture.cc/providers/debug.md))
- DNSPod International: https://ddns.newfuture.cc/providers/dnspod_com ([.md](https://ddns.newfuture.cc/providers/dnspod_com.md))
- Tencent EdgeOne: https://ddns.newfuture.cc/providers/edgeone ([.md](https://ddns.newfuture.cc/providers/edgeone.md))
- Tencent EdgeOne DNS: https://ddns.newfuture.cc/providers/edgeone_dns ([.md](https://ddns.newfuture.cc/providers/edgeone_dns.md))
- NameSilo: https://ddns.newfuture.cc/providers/namesilo ([.md](https://ddns.newfuture.cc/providers/namesilo.md))
- No-IP: https://ddns.newfuture.cc/providers/noip ([.md](https://ddns.newfuture.cc/providers/noip.md))
- West.cn: https://ddns.newfuture.cc/providers/west ([.md](https://ddns.newfuture.cc/providers/west.md))
### Developer Documentation
- Configuration Design: https://ddns.newfuture.cc/dev/config ([.md](https://ddns.newfuture.cc/dev/config.md))
- Provider Development Guide: https://ddns.newfuture.cc/dev/provider ([.md](https://ddns.newfuture.cc/dev/provider.md))
### Configuration Schemas
- v4.1 Schema: https://ddns.newfuture.cc/schema/v4.1.json
## Usage Examples
### Docker:
```bash
docker run -it --rm -e DNS=dnspod -e ID=your_id -e TOKEN=your_token newfuture/ddns
```
### Command Line:
```bash
ddns --dns dnspod --id your_id --token your_token
```
## Supported DNS Providers
Canonical provider IDs: `51dns`, `alidns`, `aliesa`, `callback`, `cloudflare`, `cloudns`, `debug`, `dnscom`, `dnspod_com`, `dnspod`, `edgeone`, `edgeone_dns`, `he`, `huaweidns`, `namesilo`, `noip`, `tencentcloud`, and `west`.
## Technical Details
- **Language:** Python 2.7+ and 3.x
- **Dependencies:** Standard library only
- **Platform:** Cross-platform (Windows, Linux, macOS)
- **Docker:** Multi-architecture support (amd64, arm64, arm/v7)
## Links
- GitHub: https://github.com/NewFuture/DDNS
- Documentation: https://ddns.newfuture.cc
- Docker Hub: https://hub.docker.com/r/newfuture/ddns
- PyPI: https://pypi.org/project/ddns/
- Sitemap: https://ddns.newfuture.cc/sitemap.xml
---
*Generated by VitePress documentation builder. Last updated: {{DATE}}*