月微yuewei

Back

前言#

如果嫌前言啰嗦,可以直接跳转到后文 “改用 Powershell” 部分
没有使用 CMD,哪怕我后面发现在 Powershell 中启动 Mcp 服务器,实际上也是在 CMD 中启动的
因为我个人更喜欢更现代的 Powershell 而非 CMD

我一开始是在我的 MacBook 上面使用 Mcp 的,说实话并没有碰到什么奇怪的问题,只需要配置好必要的终端环境,比如 Nodejs 或者 Python 环境什么的,然后找到自己想用的 Mcp,比如我自己常用的是一位佬友写的 Codelf,通过阅读配置说明,我们可以获取到一个类似以下形式的 JSON 内容:

{
  "mcpServers": {
    "codelf": {
      "command": "npx",
      "args": ["codelf"]
    }
  }
}
json

在此引用一下前文提到的 Codelf Mcp 配置文件,仅作为解释使用,如果需要正确使用该 Mcp,请点击前文链接去原帖和项目地址查阅

然后将其中的核心配置文件,也就是:

"codelf": {
    "command": "npx",
    "args": [
        "codelf"
    ]
}
json

部分,然后粘贴到我的 Cursor 或者 Roocode 的 Mcp 配置文件中去。然后稍等片刻(网络通畅情况下),就可以看到工作指示灯变成绿色:

cursor

下方的是 Roocode 的 Mcp 配置界面,可以看到也是生效的(虽然启用的并不是 Codelf 而是 context7):

Roocode 的 Mcp 配置界面图

然后我就可以愉快地在我的 MacBook 上使用 Mcp 给我带来的便利了……

尝试用 CMD 启动 Mcp#

但是有一天,我心血来潮,打算在我的 Windows 电脑上进行 Mcp 的使用。我先在我的 Windows 上配置好了 Nodejs 环境和 Python 环境,然后我按照在 Mac 上的逻辑,直接复制粘贴一气呵成,然后就……失败了

我尝试通过搜索引擎得到解决方案(没有用 AI 搜索是因为我还不太习惯):

搜索结果图

第一个第二个写的文章感觉起来还不错,然后我依葫芦画瓢,都试了一次:

在此之前我已通过

npm install -g codelf
plaintext

命令全局安装了佬友的包(其实可以不用这么做的,当时是因为问了一下 AI)

我的 Windows 电脑上的 Cursor 版本为 0.49.6,Roocode 版本为 v3.15.5,Windows 版本为 11 24H2

Powershell 版本为 v7.5.1(通过 Winget 命令参考官方文档安装的)

Nodejs 通过 Fnm(v1.38.1) 管理,Node 版本为 v20.19.0,npm 版本为 v10.8.2

  1. 第一篇文章的思路:
{
    "mcpServers": {
        "codelf": {
            "command": "cmd /c npx",
            "args": [
                "codelf"
            ]
        }
    }
}
json

嗯…… 失败了:

思路一失败图
  1. 第二篇文章的思路:
{
    "mcpServers": {
        "codelf": {
            "command": "cmd",
            "args": [
                "/c",
                "npx",
                "codelf"
            ]
        }
    }
}
json

还是失败了,报错是一样的,而且说实话,我感觉这两个都是同一个命令(其实还有一个版本,是在第二篇的思路的 “/c” 和 “npx” 中间加上一个 “-y” 但是也不行)

然后我就纳闷了,怎么回事儿。于是我就自己打开一个 cmd 窗口,试了一下:

CMD窗口图

原来是没有设置好 CMD 下的环境变量,怪不得启动不成功

那么到这里其实已经知道了原因了,可是我一般不用 CMD 的啊,我的开发工具也好,终端的默认启动也好都是 Powershell,而且我看站里面有人说,每次启动 Mcp 服务器会出现一个黑框框?好像是 CMD 的那个进程框框,我也不喜欢……

所以……

改用 PowerShell#

Cursor 配置 Mcp#

在此之前我已通过(重声明一次,便于跳看文章的读者理解)

npm install -g codelf
plaintext

命令全局安装了佬友的包(其实可以不用这么做的,当时是因为问了一下 AI)

我的 Windows 电脑上的 Cursor 版本为 0.49.6,Roocode 版本为 v3.15.5,Windows 版本为 11 24H2

Powershell 版本为 v7.5.1(通过 Winget 命令参考官方文档安装的)

Nodejs 通过 Fnm(v1.38.1) 管理,Node 版本为 v20.19.0,npm 版本为 v10.8.2

我们重新审视一下前文最后提及的两个思路的配置文件内容:

// 第一种思路(JSON中不允许有注释,我这里只是方便解释)
{
    "mcpServers": {
        "codelf": {
            "command": "cmd /c npx",
            "args": [
                "codelf"
            ]
        }
    }
}
json
// 第二种思路(JSON中不允许有注释,我这里只是方便解释)
{
    "mcpServers": {
        "codelf": {
            "command": "cmd",
            "args": [
                "/c",
                "npx",
                "codelf"
            ]
        }
    }
}
json

我们可以写出以下配置文件:

{
    "mcpServers": {
        "codelf": {
            "command": "cmd /c pwsh",
            "args": [
                "-c",
                "npx",
                "codelf"
            ]
        }
    }
}
json

或者如下形式

{
    "mcpServers": {
        "codelf": {
            "command": "cmd",
            "args": [
                "/c",
                "pwsh",
                "-c",
                "npx",
                "codelf"
            ]
        }
    }
}
json

任选其一粘贴到 Cursor 的 Mcp 配置文件中后刷新:

启动Mcp成功图

启动成功,检测是否生效:

Cursor生效成功图

成功生效。同时,我并没有弹出什么黑窗口,我不知道是不是我通过 CMD 启动 Powershell 的原因,总之,这很好

Roocode 配置 Mcp#

但是在 Roocode 中需要注意一下,似乎第一种形式的写法是不会生效的,总之我复制到 Roocode 的配置文件中后,等待许久都不见加载成功,也没有看到报错

而采用第二种形式,也就是如下形式,则可以生效:

{
    "mcpServers": {
        "codelf": {
            "command": "cmd",
            "args": [
                "/c",
                "pwsh",
                "-c",
                "npx",
                "codelf"
            ]
        }
    }
}
json
Roocode生效成功图

验证一下:

Roocode使用成功图

至此,便成功使用 Powershell 启动本地 Mcp 服务器

如果没有特殊要求,建议采用第二种写法,无论是 Cursor 还是 Roocode 都可以生效

其他 Mcp 添加尝试#

添加 Context 7#

官方 JSON 配置:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp@latest"]
    }
  }
}
json

修改为:

{
    "mcpServers": {
        "context7": {
            "command": "pwsh",
            "args": [
                "-c",
                "npx",
                "@upstash/context7-mcp@latest"
            ]
        }
    }
}
json

即可在 Cursor 中正常生效:

Cursor生效成功图

Roocode 似乎不可以采用上面的写法,会出现问题:

Roocode失败图

采用如下写法即可:

{
    "mcpServers": {
        "context7": {
            "command": "cmd",
            "args": [
                "/c",
                "pwsh",
                "-c",
                "npx",
                "@upstash/context7-mcp@latest"
            ]
        }
    }
}
json

我猜测是因为我的 Cursor 已经设置好了启动的终端为我的 Powershell:

Cursor配置界面图

所以可以正确识别 pwsh 命令(仅仅个人猜测,没有验证)

但是 Roocode 似乎没有?

总之不是很影响,如果不想出现这样的问题,可以统一采用第二种写法也就是 Roocode 可以识别的写法即可

结语#

以上就是我自己在 Windows 上面配置和使用 Mcp 的经验

限于时间和精力,以及我自己的使用情况,我仅仅粗略地分享了两种 Mcp 服务的配置方式,至于其他的,比如使用 uvx 的,我便没有尝试了,但是我个人觉得,方式应该是差不多的

然后补充一下我启动 Mcp 的时候没有出现黑框框,我不知道是不是个例,但是确实没有任何窗口弹出…… 反而用 CMD 命令的时候确实弹出来了,但是因为加载环境失败直接自己关闭了……总之没有弹出额外的窗口确实挺好的

最后限于个人水平,文章内容如有不妥或者缺漏或者其他问题,欢迎联系我反馈

Windows 下通过 PowerShell 配置 Mcp
https://yueweix.com/post/mcp-powershell-setup
Author yuewei
Published at 2025年5月31日