Back to MCP directory
publicPublicdnsLocal runtime

shieldmcp

Shield MCP是一个为Model Context Protocol (MCP)服务器设计的安全中间件,提供工具访问控制、结果净化、结构化日志记录和速率限制等功能,无需修改官方SDK即可增强安全性和监控能力。

article

README

🚀 MCP安全护盾

MCP安全护盾是一款中间件,它能够增强Model Context Protocol (MCP) 服务器的安全性与监控能力,且无需修改官方SDK。此工具包提供了保护和监控MCP工具调用的实用工具,遵循MCP文档中提及的最佳实践,可在不暴露自身的情况下与MCP开发进行交互。

🚀 快速开始

要使用Shield MCP,首先需要安装库:

pip install shieldmcp

然后按照以下步骤配置和使用:

  1. 初始化ShieldMCP实例:
from shieldmcp import ShieldMCP

shield = ShieldMCP()
  1. 配置访问控制:
shield.set_allowed_tools(["tool1", "tool2"])
  1. 启用结果清理功能:
shield.enable_output_cleaning(patterns=[r"\b信用卡号\b"], max_length=500)
  1. 使用ShieldMCP处理请求:
response = shield.process_request(request_data)

✨ 主要特性

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

📦 安装指南

from shieldmcp import ShieldMCP

📚 详细文档

需求

系统需求

  • Python 3.8 或更高版本
  • pip(Python 包安装程序)
  • virtualenv(开发推荐)

组件

装饰器 (decorators.py)

提供用于保护MCP端点的装饰器:

from shieldmcp.decorators import shield_mcp_endpoint

@shield_mcp_endpoint
def protected_endpoint(data):
    # 处理请求
    return response

日志记录 (logging.py)

集成结构化日志记录到你的应用中:

from shieldmcp.logging import setup_logging

setup_logging("info")
logger.info("处理开始")

最佳实践

工具访问控制

  • 始终定义允许工具的白名单。
  • 定期审查和更新白名单。

结果清理

  • 清理所有文本输出。
  • 定义敏感数据模式。
  • 设置合理的长度限制。

日志记录

  • 在可用时包含用户和会话ID。
  • 记录成功和失败的操作。
  • 使用结构化日志以备更好地分析。

速率限制

  • 根据工具复杂性设置适当的限制。
  • 考虑突发大小以提升用户体验。
  • 监控速率限制触发情况。

开发

设置开发环境

# 克隆仓库
git clone https://github.com/shieldmcp/shieldmcp.git
cd shieldmcp

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # 或 `venv\Scripts\activate` 在 Windows 上

# 安装开发依赖项
pip install -r requirements.txt

运行测试

pytest tests/

路线图

计划功能

  • 支持Clerk MCP 和 Github MCP。
  • 扩展文档。
  • TypeScript 支持。

致谢

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client