### 问题1:

mcp-server 采用 http sse 传递的端点，步及 http 的长链接。集群时，“所有经过”的网关都要采用：`ip_hash` 负载均衡策略。

### 问题2:

mcp sse 使用 nginx 代理时，要添加：`proxy_http_version 1.1;`


### 问题3:

mcp stdio server，不要开启控制台日志。不然协议会串流

### 问题4:

有些 mcp server 能连，有些不能连？有可能与 okhttp 有关，可尝试切换 HttpUtils 的实现层。

```java
public class DemoApp {
    public static void main(String [] args) {
        HttpConfiguration.setFactory(JdkHttpUtilsFactory.getInstance());
        
        //在程序启动前，切换 httputils 的实现层
        Solon.start(DemoApp.class, args);
    }
}
```

提示：目前已知 `mcp.api-inference.modelscope.net` （魔搭社区）的 sse mcp server 必需切换（用 okhttp 适配接收时，会少半条数据）。



### 问题5：

有些服务端可能不会有心跳，或者心跳间隔很大。会造成 sse 长连出现读超时问题。此时，可以把读超时设为 0 秒。目前已知 "mcp.context7.com" 就有这个情况。处理示例：

```java
public class Context7Test {
    @Test
    public void case1() throws Exception {
        McpClientProvider clientProvider = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .httpTimeout(HttpTimeout.of(30, 30, 0)) //0 为 socket 读超时
                .apiUrl("https://mcp.context7.com/mcp")
                .header("CONTEXT7_API_KEY", "xxx")
                .build();

        Collection<FunctionTool> tools = clientProvider.getTools();

        System.out.println("------------------------------------------------");
        System.out.println(tools);

        assert tools != null;
        assert tools.size() > 1;

        Thread.sleep(1000 * 60 * 5);
    }
}

```

