使用说明
项目简介
本项目 'mcp_tool_poisoning_attacks' 主要是一个 MCP 客户端 的实现,它使用 Model Context Protocol (MCP) 协议与 外部的 MCP 服务器 进行通信。该客户端旨在演示如何利用 MCP 客户端与服务器交互,并初步探索针对 MCP 工具的投毒攻击场景。
注意: 本仓库 不包含 MCP 服务器的实现,而是一个 客户端,需要连接到 外部的 MCP 服务器 才能工作。仓库中提供的 'mcpservers.json' 文件用于配置客户端可以连接的 MCP 服务器信息。
主要功能点
- 连接 MCP 服务器: 客户端可以根据 'mcpservers.json' 配置文件中指定的服务器信息,通过 Stdio 协议连接到不同的 MCP 服务器。
- 列出服务器工具: 成功连接到 MCP 服务器后,客户端可以获取并展示服务器注册的工具列表,包括工具名称、描述和输入参数Schema。
- 调用 Anthropic API 并选择工具: 客户端接收用户输入的消息,并将其发送给 Anthropic 的 Claude 模型。Claude 模型可以根据用户消息和可用的工具列表,决定是否需要调用某个 MCP 工具来辅助完成用户请求。
- 执行 MCP 工具: 如果 Claude 模型决定使用某个工具,客户端会根据模型指示调用相应的 MCP 工具,并将工具执行结果返回给模型,以便模型生成最终回复。
- 演示工具投毒攻击 (概念验证): 虽然仓库名称包含 "tool_poisoning_attacks",但从提供的代码和文档来看,当前版本主要侧重于 MCP 客户端的实现和基本交互流程演示,可能尚未完整实现工具投毒攻击的具体功能。 仓库更像是一个 基础框架,未来可能用于扩展和研究工具投毒攻击。
安装步骤
环境准备:
- Node.js v22+ 请确保已安装 Node.js v22 或更高版本。
- VSCode & Docker (可选,用于 Dev Containers): 如果您希望使用 Dev Containers 进行开发,请安装 VSCode 和 Docker,并安装 VSCode 插件 "Dev Containers"。
- Anthropic API Key: 您需要拥有 Anthropic API 的密钥才能使用 Claude 模型。
步骤:
-
克隆仓库:
git clone https://github.com/RyosukeDTomita/mcp_tool_poisoning_attacks.git cd mcp_tool_poisoning_attacks -
配置 Anthropic API Key:
- 在 'mcp_client' 目录下创建 '.env' 文件,并添加您的 Anthropic API Key:
将 'your_anthropic_api_key' 替换为您的实际 API 密钥。cat << EOF > mcp_client/.env ANTHROPIC_API_KEY=your_anthropic_api_key EOF
- 在 'mcp_client' 目录下创建 '.env' 文件,并添加您的 Anthropic API Key:
-
配置 MCP 服务器连接信息 ('mcpservers.json'):
- 在 'mcp_client' 目录下创建 'mcpservers.json' 文件,并配置您要连接的 外部 MCP 服务器 的信息。
- 仓库中提供了 'mcp_client/mcpservers.json' 的示例,您可以参考该示例进行配置。
重要: 'mcpservers.json' 文件 不是 MCP 服务器的配置文件,而是 MCP 客户端的配置文件,用于告知客户端如何连接到 已经运行的 MCP 服务器。 您需要 自行搭建或使用已有的 MCP 服务器,并在 'mcpservers.json' 中配置连接信息。
示例 'mcpservers.json' (客户端配置):
{ "mcpServers": { "github": { // 服务器名称,客户端可以自定义 "command": "/usr/local/bin/npx", // 启动 MCP 服务器的命令,例如 npx, uv 等 "args": ["-y", "@modelcontextprotocol/server-github"], // 启动 MCP 服务器命令的参数 "env": { // 启动 MCP 服务器需要的环境变量 "GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_hogehoge", // GitHub Personal Access Token (如果 MCP 服务器需要) "PATH": "/usr/local/bin:/usr/bin:/bin" // 确保命令执行路径正确 } }, "git": { // 另一个 MCP 服务器配置示例 "command": "uv", "args": [ "--directory", "/<path to mcp-servers>/mcp-servers/src/git", // MCP Server Git 仓库的路径,需要替换为实际路径 "run", "mcp-server-git" ] } } }配置说明:
- '"mcpServers"': JSON 对象的根节点,包含所有 MCP 服务器的配置信息。
- '"github"', '"git"': 服务器名称,您可以自定义,用于在客户端代码中引用不同的服务器配置。
- '"command"': 启动 MCP 服务器的可执行命令。 这通常是 'npx' (如果使用 npm 包) 或 'uv' (如果使用 uv 包) 等命令。 这里配置的是启动 服务器 的命令,而不是客户端的命令。
- '"args"': 启动 MCP 服务器命令的参数数组。 例如,如果 MCP 服务器是一个 npm 包,'args' 可能包含包名和任何启动参数。 同样,这里配置的是 服务器 启动命令的参数。
- '"env"': 启动 MCP 服务器需要的环境变量。 例如,某些 MCP 服务器可能需要 API 密钥或其他身份验证令牌。 这里配置的是 服务器 运行所需的环境变量。
重要提示: 您需要根据您 实际使用的 MCP 服务器 来配置 'command', 'args', 和 'env'。 示例中的配置仅供参考,您可能需要根据 MCP 服务器的文档进行调整。 本仓库不提供 MCP 服务器,您需要自行获取或搭建兼容 MCP 协议的服务器。 例如,可以使用 '@modelcontextprotocol/server-github' 作为 GitHub 相关的 MCP 服务器,并按照其文档配置 'mcpservers.json'。
-
安装依赖并构建客户端:
cd mcp_client yarn install # 或 npm install yarn run bundle # 构建客户端代码
基本使用方法
-
运行客户端:
cd mcp_client node dist/index.js或者,如果您使用 Docker:
docker compose run mcp_client -
客户端启动后,会首先连接到 'mcpservers.json' 中配置的第一个 MCP 服务器 (示例中为 "github"),并输出服务器提供的工具列表。
-
在终端中输入您的消息,例如: 'RyosukeDTomita/memoにhogeというタイトルのissueを立てて' (在 RyosukeDTomita/memo 仓库创建一个标题为 "hoge" 的 issue)
-
客户端会将您的消息发送给 Anthropic Claude 模型,并根据模型返回的指令,可能调用 MCP 服务器提供的工具来完成您的请求。
-
客户端会在终端中输出 Claude 模型的回复,以及工具调用的结果 (如果有)。
总结:
- 本项目是 MCP 客户端,用于连接和使用 外部 MCP 服务器。
- 您需要 自行配置和运行 MCP 服务器,并在 'mcpservers.json' 中配置客户端连接服务器的信息。
- 客户端演示了如何列出服务器工具、调用 Anthropic API、以及根据模型指示执行 MCP 工具的流程。
- 项目可能旨在探索工具投毒攻击,但当前版本更侧重于客户端框架的搭建和基本功能演示。
信息
分类
开发者工具