"""Anthropic MCP connector 示例（需要 ANTHROPIC_API_KEY + 一个可公网访问的 MCP server）。

⚠️ 本文件不做实跑验证（需要 key 与公网 server），仅做 AST 静态校验：
- 密钥一律从环境变量读取，不硬编码
- 用法遵循官方 MCP connector beta 文档（截至 2026-08-30：beta header
  `mcp-client-2025-11-20`，旧版 `mcp-client-2025-04-04` 已弃用）
来源: https://platform.claude.com/docs/en/agents-and-tools/mcp-connector
（访问于 2026-08-30）

运行（需自行提供公网 MCP server URL）：
    先设置环境变量 ANTHROPIC_API_KEY 再运行本脚本
    uv run --with "anthropic[mcp]" python 04_mcp_connector_api.py

架构定位：Messages API 内置 MCP client（server-side），你的应用不需要自建
MCP client 编排层；但只支持远程 HTTP server 的 tool 调用（不支持 stdio、
不支持 resources/prompts）。
"""

import os

from anthropic import Anthropic


def main() -> None:
    api_key = os.getenv("ANTHROPIC_API_KEY")   # 密钥只从环境读取
    server_url = os.environ["MCP_SERVER_URL"]          # 公网 Streamable HTTP 端点
    server_token = os.environ.get("MCP_SERVER_TOKEN")  # 可选 Bearer token

    client = Anthropic(api_key=api_key)

    server_def: dict = {"type": "url", "url": server_url, "name": "remote-tools"}
    if server_token:
        server_def["authorization_token"] = server_token

    response = client.beta.messages.create(
        model="claude-sonnet-4-5",  # 模型名按需替换为当前可用版本
        max_tokens=1024,
        messages=[
            {"role": "user", "content": "What tools do you have available?"}
        ],
        mcp_servers=[server_def],
        # mcp_toolset：启用该 server 的全部工具；也可用 allowlist/denylist 精细控制
        tools=[{"type": "mcp_toolset", "mcp_server_name": "remote-tools"}],
        betas=["mcp-client-2025-11-20"],
    )
    print(response)


if __name__ == "__main__":
    main()
