mcpField
S
Shield MCP

Shield MCP

本地服务
github.com/modelShield安全382 周前更新

关于 Shield MCP

Shield MCP 是面向 MCP 服务的 Python 安全中间件,适用于开发与监控。它为工具调用提供访问控制、结果清理、结构化审计日志、速率限制和统一错误处理,无需修改官方 SDK。

主要功能

  1. 01基于白名单的工具访问控制
  2. 02可配置的结果清理
  3. 03结构化审计日志
  4. 04令牌桶速率限制
  5. 05统一错误处理
  6. 06兼容 MCP Inspector

适用场景

  1. 01限制可调用的工具
  2. 02从工具结果中移除敏感数据
  3. 03按用户或会话审计工具调用
  4. 04限制工具调用请求速率

MCP 相关

它为 MCP 服务的工具调用增加安全与监控中间件,无需修改官方 SDK,并兼容 MCP Inspector。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Shield MCP

Python Version License MCP Compatible

一款适用于模型上下文协议(MCP)服务的安全中间件,无需修改官方 SDK,即可增强安全性和监控能力。此软件包提供用于保护和监控 MCP 工具调用的工具,并遵循 MCP 文档中列出的最佳实践。在 MCP 开发过程中为你抽象处理这些事务。

目录

功能

  • 工具访问控制:基于白名单控制 MCP 工具的访问
  • 结果清理:可配置的工具输出清理功能
  • 结构化日志:使用 structlog 进行全面的审计日志记录
  • 速率限制:使用令牌桶算法进行速率限制
  • 错误处理:标准化的错误处理和格式化
  • 兼容 MCP Inspector:可与 MCP Inspector 工具无缝配合使用

要求

系统要求
  • Python 3.8 或更高版本
  • pip(Python 软件包安装程序)
  • virtualenv(开发时推荐使用)

快速开始

from shieldmcp import secure_tool
from shieldmcp.sanitizers import ToolSanitizer
from shieldmcp.rate_limit import RateLimitConfig

# Define allowed tools
ALLOWED_TOOLS = {"search", "read_file", "write_file"}

# Create a text sanitizer
text_sanitizer = ToolSanitizer.createTextSanitizer(
    max_length=1000,
    sensitive_patterns=[
        r"\b\d{16}\b",  # Credit card numbers
        r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"  # Email addresses
    ]
)

# Configure rate limiting
rate_limit = RateLimitConfig(
    requests_per_minute=60,  # 1 request per second
    burst_size=10  # Allow bursts of up to 10 requests
)

# Apply the decorator to your MCP tools
@secure_tool(
    allowed_tools=ALLOWED_TOOLS,
    sanitize_fn=text_sanitizer,
    user_id="user123",
    session_id="session456",
    rate_limit=rate_limit
)
def search(query: str):
    # Your tool implementation
    return results

组件

装饰器(decorators.py)

主要的 @secure_tool 装饰器,用于协调所有安全功能:

@secure_tool(
    allowed_tools={"tool1", "tool2"},  # Set of allowed tool names
    sanitize_fn=your_sanitizer,        # Optional result sanitization function
    user_id="user123",                 # Optional user identifier
    session_id="session456",           # Optional session identifier
    rate_limit=RateLimitConfig(        # Optional rate limit configuration
        requests_per_minute=60,
        burst_size=10
    )
)
def your_tool():
    pass
审计日志(audit.py)

使用 structlog 进行结构化日志记录:

from shieldmcp import ToolAudit

audit = ToolAudit()
audit.logToolCallStart(
    tool_name="search",
    args={"query": "test"},
    user_id="user123"
)
访问控制(access.py)

工具访问验证:

from shieldmcp import ToolAccess

access = ToolAccess(allowed_tools={"tool1", "tool2"})
access.validateToolAccess("tool1")  # Raises ValueError if not allowed
清理器(sanitizers.py)

结果清理实用工具:

from shieldmcp import ToolSanitizer

# Create a custom sanitizer
sanitizer = ToolSanitizer.createTextSanitizer(
    max_length=1000,
    sensitive_patterns=[r"\b\d{16}\b"]
)

# Use it directly
clean_text = sanitizer("Your text with sensitive data")
速率限制(rate_limit.py)

令牌桶速率限制:

from shieldmcp import RateLimitConfig

# Configure rate limits
config = RateLimitConfig(
    requests_per_minute=60,
    burst_size=10
)

最佳实践

工具访问控制
  • 始终定义允许使用的工具白名单
  • 尽可能采用限制最严格的工具集合
  • 定期检查并更新白名单
结果清理
  • 清理所有文本输出
  • 为敏感数据定义匹配模式
  • 设置合理的长度限制
日志记录
  • 在可用时包含用户 ID 和会话 ID
  • 记录成功和失败的操作
  • 使用结构化日志以便更好地分析
速率限制
  • 根据工具的复杂程度设置合适的限制
  • 考虑突发请求数量,以改善用户体验
  • 在日志中监控触发速率限制的情况

开发

设置开发环境
# Clone the repository
git clone https://github.com/shieldmcp/shieldmcp.git
cd shieldmcp

# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows

# Install development dependencies
pip install -r requirements.txt
运行测试
pytest tests/

路线图

计划中的功能
  • 支持 Clerk MCP 和 Github MCP
  • 扩展文档
  • 支持 TypeScript

致谢


欢迎随时咨询。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。