Token导航 LogoToken导航TokenDH.com
MCP Auth Middleware logo
运维云端stdio官方级别未说明来源级核验

MCP Auth Middleware

MCP Server

用于HTTP MCP服务器的JWE认证中间件,提供端到端用户数据加密,仅允许MCP服务器解密。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
HTTP服务器Python云端部署

安装说明

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

作者 / 组织

fhswf

提供方

fhswf

最后核验

2026/5/17 20:22

快速接入

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

命令预览

pip install mcp-auth-middleware

详细介绍

mcp身份验证中间件

用于HTTP MCP服务器的JWE身份验证中间件。对用户数据进行端到端加密,以便只有您的MCP服务器可以读取它。

它做什么

mcp-auth-middleware 为您的MCP服务器提供两件事:

  1. 一种中间件,用于解密JWE承载令牌,强制执行配置的JWT作用域,并通过以下方式公开经过身份验证的用户的声明 get_user().
  2. CLI(mcp-auth-middleware)生成JWKS格式的RSA密钥对,输出Kubernetes Secret YAML,并在完成后安全地删除本地密钥。

中间件还发布:

  • /.well-known/jwks.json 用于公钥发现
  • /.well-known/openid-configuration 用于OpenID发现

安装

pip install mcp-auth-middleware

测试

python -m pip install -r requirements.txt
python -m pip install -e .
pytest --cov=mcp_auth_middleware --cov-report=term-missing --cov-fail-under=80

快速开始

1.生成密钥

mcp-auth-middleware generate

文中写道:

.keys/mcp-private.json
.keys/mcp-public.json

2.配置私钥

MCP_KEY_FILE_PATH=.keys/mcp-private.json

3.添加中间件

import uvicorn
from fastmcp import FastMCP

from mcp_auth_middleware import JWKSAuthMiddleware, get_user

mcp = FastMCP("My Server")

required_scopes = [
    {"scope": "name"},
    {"scope": "email"},
]

@mcp.tool()
def whoami() -> str:
    user = get_user()
    return f"Hello, {user.name}!"

app = mcp.http_app()
app.add_middleware(JWKSAuthMiddleware, scopes=required_scopes)

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

4.OpenID发现

GET /.well-known/openid-configuration 返回颁发者、JWKS URI和配置的作用域:

{
  "issuer": "http://localhost:8000",
  "jwks_uri": "http://localhost:8000/.well-known/jwks.json",
  "scopes_supported": ["name", "email"]
}

端点是公共的,包含许可的CORS标头。

5.缺少范围响应

如果经过验证的令牌缺少一个或多个配置的字段,中间件将拒绝该请求 403 Forbidden:

{
  "error": "missing_scopes",
  "missing": [{ "scope": "email" }]
}

API 参考

JWKSAuthMiddleware

将其连接到任何基于Starlette的MCP服务器应用程序:

app.add_middleware(
    JWKSAuthMiddleware,
    scopes=[
        {"scope": "name"},
    ],
    verifier=None,
    jwks_path="/.well-known/jwks.json",
    openid_configuration_path="/.well-known/openid-configuration",
    issuer=None,
)

规则:

  • scopes 是必需的,并且必须至少包含一个作用域。
  • 每个配置的作用域都是强制性的。
  • 作用域名称必须与JWT字段名称匹配。

get_user() -> AuthUser

返回经过身份验证的用户对当前请求的声明。

user = get_user()
user.email
user["email"]

ScopeDefinition

类型化配置的可选辅助数据类:

from mcp_auth_middleware import ScopeDefinition

scope = ScopeDefinition(
    scope="email",
)

JWETokenVerifier

如果您需要在中间件之外进行令牌验证,请使用较低级别的验证器:

from mcp_auth_middleware import JWETokenVerifier

verifier = JWETokenVerifier()
claims = await verifier.verify_token(token_string)
public_jwks = verifier.get_jwks()

verify_token() 回报 None 当令牌解密失败或解密的有效载荷不是JSON对象时。

浏览器访问

/.well-known/openid-configuration 已经包含CORS标头。

如果浏览器客户端也需要 /.well-known/jwks.json,之后添加CORS中间件 JWKSAuthMiddleware:

from starlette.middleware.cors import CORSMiddleware

app.add_middleware(JWKSAuthMiddleware, scopes=required_scopes)
app.add_middleware(CORSMiddleware, allow_origins=["*"])

Kubernetes部署

生成机密清单:

mcp-auth-middleware k8s | kubectl apply -f -

清理当地关键材料:

mcp-auth-middleware clean

挂载生成的私钥并设置:

MCP_KEY_FILE_PATH=/etc/mcp/secrets/key.json

部署+服务的完整示例在 examples/k8s-deployment.yaml.

环境变量

变量必填描述
MCP_KEY_FILE_PATH私有JWKS JSON文件的路径

许可证

麻省理工学院

目录标签

目录标签

HTTP服务器Python云端部署认证中间件本地部署JWE加密JWT范围验证OpenID发现

接入字段

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

stdio

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP