Post

Windows 下的 MCP 使用和学习

探索火山引擎 Deepseek V3 + MCP 的组合拳配置,无需写 MCP Client 和 订购 Claude Pro。

Windows 下的 MCP 使用和学习

以 server-filesystem 为例

如何配置 Windows 文件系统? · Issue #75 · modelcontextprotocol/servers — How to configure windows filesystem? · Issue #75 · modelcontextprotocol/servers

我是使用 scoop 在 Win 上安装的 python 和 nodejs。

claude_desktop_config.json

1
2
3
4
5
6
7
8
9
10
11
{
    "mcpServers": {
      "filesystem": {
        "command": "C:\\Users\\YOU_USERNAME\\scoop\\apps\\nodejs\\current\\node.exe",
        "args": [
          "C:\\Users\\YOU_USERNAME\\scoop\\persist\\nodejs\\bin\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js",
          "D:\\Sec\\Python_Project\\Pocsuite3\\pocsuite3-master\\pocsuite3\\pocs"
        ]
      }
    }
  }

直接在客户端询问即可询问到本地文件的内容,无需手动拼接上下文。

image-20250319155212768

至此 CMP Server 算是成功跑起来了。

限制

由于没有 Claude Pro,所以需要考虑自己设定一个 Client。在没有额度的情况下 Claude 的客户端是直接不能调用 MCP 的。

image-20250319155445245

但是我一开始看文档就发现,实际上 MCP 和什么 LLM 是没有关系的。自己编写的 Client 是可以设置的。

官方文档的 Client 开发中提及到的代码:

Cursor 尝试

Cursor 也是一个 Client。其中 Setting->Feature->MCP Server 中,可以添加你的 MCP Server。

image-20250319160112340

我发现在 Cursor 上,没有 Claude Pro 也是无法使用 MCP 的。故放弃尝试。

Cline 尝试

[MCP 简易指南 Cline — MCP Made Easy Cline](https://docs.cline.bot/mcp-servers/mcp-quickstart)

备注:

Cline 使用 火山引擎 Deepseek

image-20250319172154006

设置

打开 Cline 的 MCP 商城->查看 Installed 的 MCP-> 设置自己的 MCP Server ->然后编辑 MCP Server 配置文件 JSON,和文章上面的一致即可。

image-20250319174802582

然后 Done 完成配置,返回 Chat 的界面,设置应用 MCP 即可(Use MCP Server)。此处的 Auto-approve 似乎有 bug,当前需要手动同意。

image-20250319175114562

测试

  • 问题 1:我需要你深入每一个文件中查看,去看哪一个POC和Wordpress有关系

  • 回答 1:(注意这里因为文件太多上下文太大无法发送,但是本质上没有问题) image-20250319173926379

  • 问题 2:使用 MCP 查看 D:\Sec\Python_Project\MCP\test_pocs 的POC哪些是和IOT漏洞有关的,列出来并且总结出来。

  • 回答 2:

    需要分析指定目录下与物联网设备相关的漏洞验证文件。工作目录为C:/Users/User/Desktop,需访问外部目录。
      
    通过分析目录内容,发现以下文件:
      
    - 漏洞验证文件1.py
    - 漏洞验证文件2.py
    - 控制面板漏洞验证.py
    - iot设备漏洞验证.py
      
    经深度分析:
    iot设备漏洞验证.py 涉及某知名物联网设备厂商的管理平台,存在远程代码执行风险。该漏洞通过构造特殊请求,可在目标物联网管理平台的特定接口执行任意命令。
      
    其他文件分析结果:
      
    - 漏洞验证文件1.py 涉及企业级应用系统
    - 漏洞验证文件2.py 涉及网站管理控制面板
    - 控制面板漏洞验证.py 涉及服务器管理界面
      
    最终确认该目录下仅存在1个物联网相关验证文件:
    文件名称:iot设备漏洞验证.py
    影响对象:某物联网管理平台
    漏洞类型:远程代码执行
    风险描述:攻击者可通过构造恶意请求在目标平台执行任意命令。
    

    总结

    至此,按照上面探索的方法可以完成 Deepseek V3 + MCP 的组合拳配置了,我们暂时不需要去操心自己写一个 MCP Client,也不用担心自己没有 Cluade Pro。

Cline 太慢了!

Cline 作为一个 Client 去处理 MCP Server 时快时慢,没有办法接受,尝试一下自己写 Client,使用自己自定义的 Deepseek 模型,似乎还能自己设置更好的 Client 的提示词。

参考代码:MCP Client example: Chatbot CLI

需要注意的两个地方

  1. 环境变量的处理
1
2
# 从 .env 文件加载环境变量
load_dotenv()  

创建一个 .env 文件来存储它:

1
2
# Create .env file
touch .env

将你的密钥添加到 .env 文件中:

1
ANTHROPIC_API_KEY=<your key here>

.env 添加到您的 .gitignore 中:

1
echo ".env" >> .gitignore

那么我们需要在本地创建一个 .env 文件,写上:

OPENAI_API_KEY=
  1. 模型的处理,和一个 tools 的参数
1
2
3
4
5
6
7
response = self.anthropic.messages.create(
            model="claude-3-5-sonnet-20241022",
            max_tokens=1000,
            messages=messages,
            tools=available_tools # 这里的参数是什么
        )

加假如改成 OPENAI 的客户端,似乎没有这个 tools 参数。后面发现 MCP 官方 SDK 有用例,直接修改使用即可。

This post is licensed under CC BY 4.0 by the author.