3、接着获取天气的：开发MCP Server实现获取天气
# Create a new directory for our project
uv init weather
cd weather
# Create virtual environment and activate it
# 备注：如果出现一些奇怪的问题。导致服务失败，则可以尝试完全删除并重建虚拟环境：
# 删除当前虚拟环境（关闭所有终端后执行）
# rd /s /q D:\Python\weather\.venv
uv venv  ##创建虚拟环境
.venv\Scripts\activate
# Install dependencies
uv add mcp[cli] httpx

再打开服务：
D:; cd D:\Python\mcp\weather; uv run main.py
set HTTP_PROXY=http://127.0.0.1:7890 && set HTTPS_PROXY=http://127.0.0.1:7890 && uv run main.py
{"mcp_sse_call_tool": "Tool execution result: [{'type': 'text', 'text': \"Error executing tool get_weather: AsyncClient.__init__() got an unexpected keyword argument 'proxies'\"}]"}
python.exe -m pip install --upgrade pip
http://127.0.0.1:8001



请仿照下面的，帮忙修改为xmcp-server-weather。参数是：
def parse_args():
    parser = argparse.ArgumentParser(description='天气查询MCP服务')
    parser.add_argument('--log-level', type=str, default='ERROR', 
                        choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'],
                        help='日志级别 (默认: ERROR)')
    parser.add_argument('--transport', type=str, default='stdio', 
                        choices=['stdio', 'sse', 'streamable-http'],
                        help='传输方式 (默认: stdio)')
    parser.add_argument('--port', type=int, default=8001, 
                        help='服务器端口 (仅在使用网络传输时有效，默认: 8001)')
    return parser.parse_args()


# 微信消息发送服务器

这是一个基于 MCP (Micro Controller Protocol) 的微信消息发送服务器，通过命令行参数可以灵活配置服务器运行模式和日志级别。

## 快速开始（本地运行）
* 本步骤主要是为了 本地测试 自动操作微信MCP服务。测试环境是Windows系统。
```bash
# 先安装服务
pip install xmcp-server-wxauto

# 以默认配置启动服务
xmcp-server-wxauto

# 指定日志级别和传输方式（sse方式）
xmcp-server-wxauto --log-level=INFO --transport=sse --port=8080
```
* 然后，就可以配置本地服务来调试MCP
```bash
{
  "mcpServers": {
    "wechat": {
      "url": "http://localhost:8080/sse"
    }
  }
}
```
* 接着，将MCP服务配置给你的AI智能体，让AI可以调用这个MCP来自动操作微信。
例如，和智能体说：将“你好”发送到“测试群”。然后，该MCP会自动将对应的消息发到对应的群组。
** 需要注意的是，这个是模拟人工操作微信发消息的，而不是通过微信的API接口发送信息。


## 使用UVX配置MCP服务（推荐）
* 用uvx的方式配置MCP服务是推荐的方式。
* 因为uvx可以在不同的平台上运行，包括Windows、macOS和Linux。
```bash
# 给AI模型提供自动操作微信的MCP服务
{
  "mcpServers": {
    "wechat": {
      "command": "uvx",
      "args": [
        "xmcp-server-wxauto"
      ],
      "env": {}
    }
  }
}
```

## 命令行参数

### 日志级别 (`--log-level`)
设置服务器的日志输出级别，可选值：
- `DEBUG`：详细的调试信息，用于开发和问题排查
- `INFO`：正常运行的信息，显示关键操作
- `WARNING`：警告信息，可能影响功能但不影响运行
- `ERROR`：错误信息，功能无法正常执行
- `CRITICAL`：严重错误，可能导致程序崩溃

**默认值**：`ERROR`

**示例**：
```bash
xmcp-server-wxauto --log-level=DEBUG
```

### 传输方式 (`--transport`)
设置服务器与客户端之间的通信协议，可选值：
- `stdio`：使用标准输入输出进行通信，适用于进程间通信
- `sse`：使用 Server-Sent Events 进行实时通信，适用于网络环境

**默认值**：`stdio`

**注意**：
- `stdio` 模式下日志不会输出到控制台，避免干扰通信
- `sse` 模式需要指定端口参数

**示例**：
```bash
xmcp-server-wxauto --transport=sse
```

### 服务器端口 (`--port`)
当使用 `sse` 传输方式时，指定服务器监听的端口号。

**默认值**：`8000`

**示例**：
```bash
xmcp-server-wxauto --transport=sse --port=8080
```

## 完整示例

启动一个具有详细日志记录的网络服务器：
```bash
xmcp-server-wxauto --log-level=INFO --transport=sse --port=8080
```

启动一个用于进程间通信的服务器（无日志输出）：
```bash
xmcp-server-wxauto --transport=stdio
```

## 常见问题

1. **为什么 `stdio` 模式下看不到日志？**
   - `stdio` 模式使用标准输入输出进行通信，日志输出会干扰通信协议，因此默认禁用控制台日志。

2. **如何在后台运行服务器？**
   - 可以使用 `nohup` 或 `systemd` 等工具将服务器作为守护进程运行。

3. **端口被占用怎么办？**
   - 使用 `--port` 参数指定其他可用端口，或使用 `lsof` 命令查找并关闭占用端口的进程。

```bash
# 查找占用8000端口的进程
lsof -i:8000

# 终止进程（PID为进程ID）
kill -9 <PID>
```