前言
最近MCP特别火热,笔者自己也根据官方文档尝试了下。
官方文档给的Demo是在本地部署一个weather.py,然后用本地的Claude Desktop去访问该mcp服务器,从而完成工具的调用:
但是,问题来了,Claude Desktop只能用在Windows和Mac OS平台:
但我的一些算法(以下简称算法A)都是部署在Linux平台的,那么本地的Claude Desktop和mcp服务器如何访问Linux平台的算法A呢?
你可能会想:“这还不简单,把mcp服务器直接部署在Linux平台上,然后把算法A集成到mcp服务器的tools里,最后让Win10系统下的Claude Desktop去远程访问Linux服务器上的mcp服务器,从而完成工具调用。”
我个人一开始也是这样想的,但后续查资料发现Claude Desktop不支持访问远程服务器,只能访问本地的文件,故该方法行不通。
虽然我们也可以采用将mcp服务器部署在本地Windows系统上,然后让mcp与远程服务器进行通信(ssh,socket)从而完成数据传输,但终究不太方便。
故这里个人提供一个简单的方法:端口转发(端口转发介绍)。
步骤:
说白了,端口转发就是做了一次映射,将部署在远程服务器127.0.0.1:8080 端口的mcp server服务,映射到了你本地的127.0.0.1:8080 端口上,让你通过访问本地网址就能达到访问远程网址的效果。
教程
1.环境安装
进入你的服务器,安装MCP所需环境。
conda环境安装mcp指令如下:
conda create -n mcp_demo python=3.10
conda activate mcp_demo
pip install mcp openai python-dotenv mcp[cli]
2.用VSCode完成端口转发
假设你是用VSCode连接的你的服务器,那你可以用VSCode自带的“端口转发”工具来操作。
首先,创建任意一个py文件(本文以weatherSSE.py为例),在红框内输入以下Mcp server的代码:
from typing import Any, Dict
import httpx
from mcp.server.fastmcp import FastMCP
# 初始化FastMCP服务器
# mcp = FastMCP("weather")
mcp = FastMCP(
name="weather",
host="127.0.0.1",
port=8000,
description="Linux的mcp服务器用于完成加法运算",
sse_path='/sse'
)
#这里的port只要不与其他程序的端口冲突都可以
@mcp.tool()
def add(a: int, b: int) –> int:
"""Add remote two numbers"""
return a + b
if __name__ == "__main__":
# 初始化并运行服务器
try:
print("Starting server…")
mcp.run(transport='sse')
except Exception as e:
print(f"Error: {e}")
然后在命令行里输入(这里的weatherSSE是你刚刚创建的py文件):
python weatherSSE.py
运行程序后,正常而言,你应该能看到如下提示(mcp server运行在了127.0.0.1:8000):
更具体来说,你应该还能看到右下角有个关于port的提示:
点击PORTS,可以看到VSCode自动把远程服务器127.0.0.1:8000映射到了本地服务器上的127.0.0.1:8001
进入Claude Desktop->File->Setting->Developer->Edit Config
打开Config文件,输入以下指令:
"math": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:8001/sse"]
}
询问Claude Desktop问题,可以看到正常调用了add函数(这里显示local是因为我们把server服务映射到了local,自然就相当于从local调用):
3.(可选)用Termius进行端口转发
如果你的VSCode没法完成端口转发,你也可以用Termius工具完成转发。 Termius工具下载:https://www.termius.com/ 填写你服务器的IP,用户,密码,连接你的服务器:
连接上服务器后,如何配置mcp环境,如何编写程序就跟上述步骤一样。 重点是下面的操作:点击Termius的Port Forwarding设置转发规则:
双击规则,启动该规则(图标变蓝色就代表启动成功):
测试成功:
总结 本文讲了如何用Claude Desktop访问Linux服务器mcp server的方法,本人也是初学者,如有错误,欢迎指出
评论前必须登录!
注册