最近在折腾MCP(Model Context Protocol),按教程把服务器跑在了自己电脑上(Python + FastMCP),本机通过Claude Desktop调用一切正常。但我想让办公室另一台电脑也连过来用,直接填我电脑的局域网IP+端口好像不行,报连接拒绝。查了半天看到说要配SSE或者streamable HTTP,但官方文档例子都默认localhost,没太看懂怎么改host和端口。另外是不是还要处理防火墙和CORS?有没有大佬实际部署过局域网可用的MCP服务,能给个大概思路或者踩坑提醒?先谢过了,卡在这两天了有点自闭。
MCP服务器部署在本地,怎么让局域网内其他电脑也能调用?
全部回复
共 29 条我之前也卡这,把host改成0.0.0.0再放行防火墙端口基本就能通,CORS一般不用管。
大概率是host绑定了127.0.0.1,改成0.0.0.0再放行防火墙端口就行,SSE那段最后再搞。
我之前搞的时候也卡在这一步,关键是把FastMCP的host设成0.0.0.0而不是默认的localhost,这样才会监听所有网卡。然后端口记得在系统防火墙里加个入站规则放行,CORS那个主要是浏览器场景,Claude Desktop这种客户端一般不用管。另外如果你是Windows,还得确认一下局域网发现和文件共享那个网络配置文件是不是专用,公用网络会拦得比较死。我后来直接换成了streamable HTTP模式才彻底通,建议你先用浏览器从另一台机器访问一下http://你的IP:端口,看返回啥再对症下药。
我之前也卡在这过,问题基本就出在绑定地址上,FastMCP默认监听127.0.0.1,你得改成0.0.0.0才行,不然局域网根本访问不到。然后防火墙入站规则记得放行那个端口,Windows一般会弹提示,别手滑点了取消。CORS倒是没那么关键,除非你打算从浏览器里直接调,不然Claude Desktop这种客户端不太会触发跨域限制。还有个小坑就是如果你电脑开了VPN或者虚拟网卡,客户端那边填的IP得是实际局域网那个,别用错网段了。
大概率是监听地址的问题,FastMCP默认绑127.0.0.1只接受本机回环,你试试把host改成0.0.0.0再跑,这样才会真正监听所有网卡。防火墙确实要放行对应端口,Windows的话记得入站规则加一下,CORS倒不是必须的,除非你打算用浏览器直接调。
另外客户端那边URL别用localhost,得填你电脑的实际局域网IP,而且确认两台机器能不能互相ping通。我之前踩过坑是公司路由开了AP隔离,设备间压根不通,查了半天才发现是网络策略问题。
我之前也卡在这过,问题八成出在FastMCP默认绑了127.0.0.1,你得在启动时候显式指定host为0.0.0.0,比如uvicorn那层要传--host 0.0.0.0,光改代码里的端口没用。防火墙确实要放行那个TCP端口,Windows的话入站规则加一下,但CORS浏览器端才需要,Claude Desktop这类客户端通常不校验,可以先跳过。另外你客户端填的URL记得是http://你电脑的局域网IP:端口/sse,不是根路径,路径错了也会报连接拒绝。如果还不行就先用curl在另一台机器上测试一下端点通不通,能快速定位是网络问题还是服务配置问题。
我之前也踩过这坑,FastMCP默认只绑127.0.0.1,得改成0.0.0.0才能被局域网访问,光填IP没用。另外Claude Desktop那边要配mcp-remote或者支持SSE的客户端,普通stdio方式跨机器肯定连不上。防火墙记得放行对应端口,Windows的话入站规则别漏了。CORS一般SSE场景才需要管,先把host和端口跑通再说。
我之前也卡过这个,FastMCP默认只绑127.0.0.1,得在启动参数里显式指定host为0.0.0.0才行,光填局域网IP客户端那边是连不上的。另外Windows防火墙会默默拦掉入站连接,记得手动放行那个端口,我当时就是被这个坑了半天。SSE和streamable HTTP的区别主要看客户端支持哪种,Claude Desktop那边配置里url填http://你的IP:端口/sse这样。CORS一般浏览器端调用才需要管,桌面客户端基本不用操心。
这个问题我之前也踩过坑,核心就在于FastMCP默认只监听127.0.0.1,你填局域网IP当然会被拒。得在启动的时候显式指定host为0.0.0.0,端口自己定一个没被占用的,这样它才会接受来自其他机器的连接。SSE和streamable HTTP的区别主要是传输方式,局域网场景下SSE更成熟些,但两者配置思路差不多,关键是host和端口要改对。防火墙这块别忽略,Windows的话要手动给那个端口加一条入站规则,不然就算服务起来了外面照样连不上。CORS的问题主要看你的客户端是不是浏览器环境,Claude Desktop这种本地客户端一般不太受CORS限制,但如果你后面打算用网页端调就得配一下allowed origins。还有个容易忽略的点是,如果办公室网络有AP隔离或者VLAN划分,跨机器访问可能直接被网络层拦掉,先ping一下确认能通再折腾代码。实在搞不定可以先在另一台机器上用curl测一下SSE端点,能返回event流就说明服务端没问题了。