安全模型协议网关

提供安全模型协议(MCP)服务器的代理和脚手架基础,集中处理认证、审计和管理,支持Google Vertex AI、AWS Bedrock和本地Ollama模型。

  • by alinabuzachis
  • 本地部署
  • 更新于
在 GitHub 查看 alinabuzachis/mcp-proxy

使用说明

安全MCP网关和开发人员支架

该存储库为模型上下文协议(MCP)服务器提供了一个“设计安全”的代理和脚手架基础。它公开了一个由LiteLLM支持的OpenAI/Anthopic兼容的API,同时安全地将请求代理到:

  • 谷歌顶点AI(克劳德,双子座)
  • AWS基岩(克劳德)
  • 当地Olama模型

所有的身份验证、审计和治理都集中在代理中——工具永远不需要云凭据。

概述

许多组织需要专有的MCP服务器来保持对数据和逻辑的控制。该项目通过以下方式简化了生命周期:

  1. 隐藏复杂性:将云身份验证(OAuth、ADC、IAM)转换为标准API-key标头。

  2. 安全第一:用于身份验证、访问控制、日志记录和策略执行的单个可审计网关。

  3. 开发者DX:提供“黄金模板”,使开发人员可以专注于构建工具,而不是基础设施。

建筑

┌──────────────┐
│ Tools / CLIs │  (Claude Code, MCP servers, agents)
└──────┬───────┘
       │  Authorization: Bearer PROXY_MASTER_KEY
       ▼
┌──────────────────────┐
│ LiteLLM MCP Gateway  │  (localhost:4000)
│  - Auth enforcement  │
│  - Model routing     │
│  - Audit logging     │
└──────┬───────────────┘
       │
       ├─ Vertex AI (ADC / OAuth)
       ├─ AWS Bedrock (IAM)
       └─ Ollama (local)

先决条件

  • Docker&Docker编写
  • 以下一项或多项:
    • 谷歌云SDK(用于顶点AI)
    • AWS CLI(适用于基岩)
    • Ollama(适用于本地车型)

设置

1.使用谷歌云(Vertex AI)进行身份验证

此设置使用应用程序默认凭据(ADC),而不是管理服务帐户JSON文件:

gcloud auth application-default login

这将在以下位置创建凭据:

~/.config/gcloud/

它们以只读方式安装到容器中。

2.使用AWS(Bedrock)进行身份验证

如果您计划使用基岩模型:

aws sts get-caller-identity

如果尚未配置:

aws configure

所需IAM权限:

bedrock:InvokeModel
bedrock:InvokeModelWithResponseStream

凭据从以下位置读取:

~/.aws/

3.配置环境变量

创建一个 .env 根目录中的文件:

# GCP Configuration
GCP_PROJECT="your-project-id"
GCP_LOCATION="us-east5"

# Security: Generate a Master Key for your local tools
# Run: openssl rand -hex 16
PROXY_MASTER_KEY="sk-your-generated-key-here"

4.启动网关

docker-compose up -d

网关现在正在运行 http://localhost:4000.

如何使用网关

网关使用与OpenAI兼容的API。

1.列出型号

curl http://localhost:4000/v1/models \
  -H "Authorization: Bearer $PROXY_MASTER_KEY"

2.聊天完成(curl)

curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer $PROXY_MASTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama-local",
    "messages": [
      { "role": "user", "content": "What model are you?" }
    ]
  }'

3.使用克劳德代码

将克劳德代码指向代理:

export CLAUDE_CODE_BASE_URL="http://localhost:4000/v1"
export ANTHROPIC_API_KEY="$PROXY_MASTER_KEY"

现在,Claude Code将:

  1. 发送Anthropic风格请求
  2. 使用代理进行身份验证
  3. 顶点/基岩/局部模型的代理路由

不需要云密钥。

4.与OpenAI兼容的SDK一起使用

from openai import OpenAI
import os

client = OpenAI(
    base_url="http://localhost:4000/v1",
    api_key=os.environ["PROXY_MASTER_KEY"]
)

resp = client.chat.completions.create(
    model="llama-local",
    messages=[{"role": "user", "content": "Hello"}]
)

print(resp.choices[0].message.content)

许可证

该项目根据GPL-3.0许可证获得许可。