Token导航 LogoToken导航TokenDH.com
Context Injector logo
安全风控stdio官方级别未说明来源级核验

Context Injector

MCP Server

一个轻量级的MCP演示服务器和客户端,用于测试语义检查引擎的有效性,支持多种攻击场景模拟。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
安全Python模型集成

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

xianclasen

提供方

xianclasen

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv .venv

详细介绍

上下文注入器

用于测试语义检查引擎效能的联合MCP客户端和服务器框架。

目的

作为一名狂热的读者,我想找到一种方法将我的GoodReads数据暴露给法学硕士,以获得符合我口味的书籍推荐。

作为一名安全迷,我希望能够将恶意上下文注入到这些数据中。因此,我构建了这个轻量级的MCP演示服务器和客户端,它公开了Goodreads/RSS数据,并演示了常见的集成和攻击场景(用于学习和测试)。

此设置不需要LLM,也不相关。此设置纯粹用于测试来自互联网上恶意MCP服务器的攻击企图。根据现实世界中LLM和MCP客户端的幼稚程度,这些攻击可能会成功或失败。我只是想知道内联代理/网关是否会使用互联网和MCP客户端之间的语义检查来捕获攻击。

这个项目是一个基于MCP的服务的小型演示,该服务获取和公开与书籍相关的数据(通过RSS/Goodreads集成),包括日志记录,并包含攻击向量的示例。对我来说,主要的驱动力是测试语义检查代理的有效性。

特性

该项目包括客户端和服务器。攻击类型可以在任何一侧选择,在服务器上通过在启动时设置攻击配置文件来选择,和/或在客户端上通过在请求时设置来选择。

服务器上存在用于检索合法数据的工具,也可以用于攻击类型的控制平面配置(如下所列)。

这意味着客户端可以天真地向服务器发送请求,服务器在启动时配置了特定的攻击配置,或者客户端可以在请求中设置/覆盖服务器设置。

元数据用于跟踪双方的请求以及启用了哪些攻击。

提供的 scripts/run_attack_matrix.sh 将运行所有攻击组合,并生成一份关于被阻止或允许的内容的报告。

先决条件

  • Python 3.13或更新版本(参见 pyproject.toml)
  • 推荐:使用 uv 以及虚拟环境

安装

  1. 创建并激活虚拟环境(建议: uv):
uv venv .venv
source .venv/bin/activate
  1. 在可编辑模式下安装项目(从安装依赖项 pyproject.toml):
uv pip install -e .

或者,如果您不使用 uv:

python -m venv .venv
source .venv/bin/activate
python -m pip install -e .

如果您更喜欢手动安装依赖项:

python -m pip install fastmcp feedparser python-dotenv

配置

示例 .env:

# OpenAI / LLM key (optional)
OPENAI_API_KEY=your-openai-api-key

# Goodreads settings
# Optional: if GOODREADS_USER_ID is unset, the server falls back to a built-in default.
GOODREADS_USER_ID=182366515
GOODREADS_USER_AGENT=ContextInjector/1.0
GOODREADS_HTTP_TIMEOUT_SECONDS=10

# MCP server configuration
MCP_HOST=0.0.0.0
MCP_PORT=3333
MCP_HTTP_PATH=/mcp

# Logging
LOG_LEVEL=INFO

用法

  • 运行服务器:
python server.py
  • 运行客户端:
python client.py

探索 attacks/models/ 查看示例组件和演示代码。

攻击概况

配置文件模拟嵌入在工具输出中的真实恶意内容,或者可选地作为工具输出的完全替代品发送回来(attack-only).

  • 按请求配置文件覆盖: fetch_shelf_rss 接受 profile_id (数字)和可选 attack_only (布尔)。

这避免了通过代理发送配置文件名称,这可能会使语义检查引擎跳闸。

  • baseline :正常含量;没有注入攻击文本。
  • prompt_injection :嵌入式系统覆盖摘要中的指令。
  • mixed_content :带有隐藏指令覆盖的合理内容。
  • tool_coercion :试图强迫客户调用危险工具。
  • data_exfiltration :请求机密、内部配置和先前的工具输出。
  • oversized_payload :向油田注入大量有效载荷,以测试尺寸限制和截断。
  • high_entropy :注入高熵base64数据以测试熵或类似二进制的有效载荷处理。
  • schema_confusion :结构化结果中存在错误的类型和意外项,无法测试模式验证。
  • assistant_impersonation :模拟先前助手输出以测试权限混淆的内容。
  • role_confusion :在内容中嵌入SYSTEM/DEVELOPER标头,以测试角色边界强制执行。
  • delayed_instruction :延迟指令意味着在以后的用户查询中触发。
  • obfuscated_injection :用于测试规范化的隐藏/模糊指令(零宽度/HTML注释)。
  • tool_args_smuggling :工具调用JSON嵌入到内容中,以测试工具门控。
  • data_poisoning :微妙的推荐偏差指令,用于测试语义操纵。
  • context_stuffing :重复短语以测试重复的偏见。
  • sampling_override :尝试覆盖客户端采样参数并请求多个候选者。
  • elicitation_probe :旨在引出隐藏提示或凭证的探究性问题。
  • logging_tamper :尝试禁用或编辑客户端日志记录/审计跟踪。

配置文件ID(用于 profile_id 和控制平面工具):

  • 0 :基线
  • 1 :prompt_injection
  • 2 :tool_coercion
  • 3 :data_exfiltering
  • 4 :尺寸过大_有效载荷
  • 5 :高营养
  • 6 :schema_coundation
  • 7 :混合内容
  • 8 :助理_模仿
  • 9 :角色_融合
  • 10 :指令延迟
  • 11 :混淆注入
  • 12 :tool_args_走私
  • 13 :数据中毒
  • 14 :上下文填充
  • 15 :采样_覆盖
  • 16 :启发
  • 17 :记录电流

命令行参数

服务器(server.py):

  • --host :要绑定的主机(默认 0.0.0.0MCP_HOST env)
  • --port :要监听的端口(默认 3333MCP_PORT env)
  • --path :MCP端点的HTTP路径(默认 /mcpMCP_HTTP_PATH env)
  • --profile :攻击配置文件名称(默认 prompt_injectionATTACK_PROFILE env)。仅服务器端。
  • --inject / --no-inject :细粒度启用/禁用注入
  • --inject-max-items :每个响应注入的最大项目数(默认值 2)
  • --single-field :每个输出只注入一个字段(默认值,或 ATTACK_SINGLE_FIELD=1)
  • --multi-field :向每个输出的所有启用字段注入
  • --attack-only :仅返回攻击内容(剥离真实Goodreads数据)。也可以通过以下方式设置 ATTACK_ONLY=1
  • --disable-control-plane-tools :禁用控制平面工具注册

TLS/HTTPS选项(可选):

  • --https :使用提供的证书和密钥启用HTTPS
  • --cert :TLS证书文件(PEM)的路径。也可以通过以下方式设置 TLS_CERT.
  • --key :TLS私钥文件(PEM)的路径。也可以通过以下方式设置 TLS_KEY.
  • --client-ca :用于客户端证书验证的可选CA包(PEM)。也可以通过以下方式设置 TLS_CLIENT_CA.

客户(client.py):

  • --url :MCP端点URL(默认 http://127.0.0.1:3333/mcp)
  • --http2 :启用HTTP/2
  • --timeout :请求超时秒数(默认值 20.0)
  • --insecure :禁用TLS验证
  • --profile-id :作为工具arg传递的数字配置文件id(代理安全)
  • --attack-only :仅请求攻击工具输出(按请求覆盖)
  • --tool :要调用的工具名称(默认 fetch_shelf_rss)
  • --shelf :默认工具参数使用的工具架名称(默认 read)
  • --limit :默认工具参数的限制(默认 20)
  • --tool-args :用作工具参数的原始JSON字符串(重写 --shelf/--limit)

控制平面工具(仅限ID)

控制平面工具I/O使用数字ID来指示攻击配置文件,以避免通过线路发送配置文件名称并触发语义代理引擎:

  • list_attack_profiles 返回配置文件ID和默认ID。
  • get_attack_profile 回报 profile_id.
  • set_attack_profile 接受 profile_id.
  • set_injection_scope 接受 single_field_per_output (布尔)。

注射反应包括 server_note.meta.attack_profile_id (数字)。

项目布局

  • server.py --MCP服务器入口点示例
  • client.py --简单客户端/演示运行器
  • models/ --应用程序模型和客户端
  • attacks/ --攻击模块(例如注入)
  • logutils/ --日志格式化程序
  • tools/ --工具实现

目录标签

目录标签

安全Python模型集成语义检查本地部署安全测试MCP框架攻击模拟LLM集成

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP