前言

最近MCP特别火热,笔者自己也根据官方文档尝试了下。

官方文档给的Demo是在本地部署一个weather.py,然后用本地的Claude Desktop去访问该mcp服务器,从而完成工具的调用:

添加图片注释,不超过 140 字(可选)

但是,问题来了,Claude Desktop只能用在Windows和Mac OS平台:
添加图片注释,不超过 140 字(可选)

但我的一些算法(以下简称算法A)都是部署在Linux平台的,那么本地的Claude Desktop和mcp服务器如何访问Linux平台的算法A呢?

你可能会想:“这还不简单,把mcp服务器直接部署在Linux平台上,然后把算法A集成到mcp服务器的tools里,最后让Win10系统下的Claude Desktop去远程访问Linux服务器上的mcp服务器,从而完成工具调用。”

我个人一开始也是这样想的,但后续查资料发现Claude Desktop不支持访问远程服务器,只能访问本地的文件,故该方法行不通。

虽然我们也可以采用将mcp服务器部署在本地Windows系统上,然后让mcp与远程服务器进行通信(ssh,socket)从而完成数据传输,但终究不太方便。

故这里个人提供一个简单的方法:端口转发(端口转发介绍)。

步骤

  1. 下载端口转发工具(Termius或者VSCode都可以)
  2. 将mcp server部署在远程服务器上(比如远程服务器上的127.0.0.1:8080 端口上)
  3. 利用端口转发技术,将远程服务器上的端口映射到你本地的端口(比如将远程服务器上的127.0.0.1:8080 端口映射到你本地的127.0.0.1:8080 上)
  4. 让Claude Desktop访问本地127.0.0.1:8080 端口,这样就相当于在访问远程服务器上的mcp server,从而完成工具的调用。

说白了,端口转发就是做了一次映射,将部署在远程服务器127.0.0.1:8080 端口的mcp server服务,映射到了你本地的127.0.0.1:8080 端口上,让你通过访问本地网址就能达到访问远程网址的效果。

教程

1.Linux环境安装

进入你的Linux服务器,安装MCP所需环境。

conda环境安装mcp指令如下:

conda create -n mcp_demo python=3.10
conda activate mcp_demo 
pip install mcp openai python-dotenv mcp[cli]

2.在Windows用VSCode完成端口转发

假设你在Windows是用VSCode连接的你的服务器,那你可以用VSCode自带的“端口转发”工具来操作。

首先,用windows的vscode远程ssh连接linux服务器,然后在服务器上创建任意一个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调用):
添加图片注释,不超过 140 字(可选)

3.(可选)用Termius进行端口转发

如果你的VSCode没法完成端口转发,你也可以用Termius工具完成转发。
Termius工具下载:https://www.termius.com/
填写你服务器的IP,用户,密码,连接你的服务器:

添加图片注释,不超过 140 字(可选)

连接上服务器后,如何配置mcp环境,如何编写程序就跟上述步骤一样。
重点是下面的操作:点击Termius的Port Forwarding设置转发规则:

添加图片注释,不超过 140 字(可选)

双击规则,启动该规则(图标变蓝色就代表启动成功):

添加图片注释,不超过 140 字(可选)

测试成功:

添加图片注释,不超过 140 字(可选)

总结
本文讲了如何用Claude Desktop访问Linux服务器mcp server的方法,本人也是初学者,如有错误,欢迎指出

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐