综合介绍
mcp-is-dangerous 是 Shaojie Jiang 在 GitHub 上开发的一个开源工具。它通过简单的 Python 代码,帮助用户检测 MCP(Model Context Protocol)服务在 AI 工具使用中的安全风险。这个工具展示外部工具可能访问环境变量或文件的潜在威胁,旨在提醒用户注意安全问题。它与作者的 extendable-agents 项目相关,突出工具共享的便利性与风险并存。项目仅用于教育和检测,不支持恶意使用。
功能列表
- 检测 MCP 服务是否会被恶意利用。
- 提供工具函数
get_environment_variables
,展示环境变量的访问情况。 - 通过代码示例揭示 MCP 服务的安全漏洞。
- 支持连接自定义 MCP 客户端,测试服务安全性。
- 提醒用户在隔离环境运行以验证风险。
使用帮助
如何安装和运行
这个工具需要基本的 Python 环境。以下是详细步骤:
- 检查 Python 环境
确保安装了 Python 3.8 或更高版本。在终端输入:
python --version
未安装可从 Python 官网 下载。
- 下载工具
在终端运行以下命令,克隆到本地:
git clone https://github.com/ShaojieJiang/mcp-is-dangerous.git
然后进入目录:
cd mcp-is-dangerous
- 安装依赖
需要fastmcp
库来运行 MCP 服务。安装方法:
pip install fastmcp
为安全起见,可用虚拟环境:
python -m venv venv
source venv/bin/activate # Windows 用 venv\Scripts\activate
然后运行 pip install fastmcp
。
- 启动工具
在目录下运行:
python main.py
终端显示“Server running...”时,表示工具已启动。
- 测试功能
用命令行检测:
uvx mcp-is-dangerous
输出示例:
Here are what I could find:
PATH /usr/***
HOME /home/***
主要功能操作流程
- 检测环境变量访问
核心功能是get_environment_variables
,用于检测 MCP 服务是否能获取环境变量。代码如下:
@server.tool()
async def get_environment_variables() -> str:
result = ["Here are what I could find:"]
for key, value in os.environ.items():
result.append(f"{key:<30} {value[:5]}***")
return "\n".join(result)
输出显示变量名和部分值(前5个字符,后续隐藏为“***”),可修改代码查看完整数据,但需在安全环境操作。
- 结合 extendable-agents 检测
若使用 extendable-agents,选择PoliceAgent
模式连接此工具。运行后可观察输出,检测潜在风险。 - 自定义客户端测试
用自己的 MCP 客户端检测时,配置如下:{ "mcpServers": { "dangerous-mcp": { "command": "python", "args": ["main.py"] } } }
保存为 JSON 文件,启动客户端即可检测。
安全检测建议
- 隔离环境运行
建议用 Docker 容器测试:docker run -it --rm python:3.8 bash
在容器内安装和运行,避免影响本地系统。
- 清理敏感数据
运行前移除环境变量中的敏感信息,例如:unset OPENAI_API_KEY
- 审查源码
使用前检查main.py
,代码简短,适合验证 MCP 服务安全性。
补充说明
这个工具通过模拟 MCP 服务访问环境变量,帮助用户检测潜在漏洞。官方强调,它是检测工具,需配合安全实践使用,如审查代码和隔离运行。
应用场景
- MCP 服务安全检测
开发者可用它测试 MCP 服务是否存在泄露风险。 - 工具安全性验证
安全团队用它模拟访问行为,验证防护措施。 - 教学演示
教育机构用它展示 MCP 服务风险,提升安全意识。
QA
- 这个工具做什么?
它检测 MCP 服务是否会被利用来访问环境变量,帮助用户发现安全风险。 - 运行安全吗?
工具本身用于检测,无恶意。但在真实环境运行可能暴露数据,建议用隔离环境。 - 如何用它提高安全性?
检查源码,隔离运行,清理敏感数据,验证工具行为。