Token导航 LogoToken导航

MCP Server · 安全风控

Okta Agent MCP Adapter

一款支持OAuth 2.1认证、多代理支持和跨应用令牌交换的MCP客户端适配器,适用于评估和测试。

stdio官方级别未说明来源级核验工具 0
PythonClaude安全Cursor

快速开始

作者 / 组织
indranilokg
提供方
indranilokg

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Okta Agent MCP Adapter 属于安全风控类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,适配 Claude、Cursor,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

安全风控

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

pip install -r requirements.txt

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

Okta MCP适配器

MCP(模型上下文协议)客户端的非官方原型适配器,具有OAuth 2.1身份验证、多代理支持和跨应用令牌交换。仅用于评估和测试目的。

概述

状态: ✅ 完成(113项测试通过)

Okta MCP适配器提供:

  • ✅ 基于路径路由的多后端MCP代理
  • ✅ Okta OAuth 2.1 JWT验证与JWKS缓存
  • ✅ 符合RFC标准的ID-JAG令牌交换,用于后端访问
  • ✅ 多代理支持(每个客户端授权和凭据)
  • ✅ 3种身份验证方法:Okta跨应用、预共享密钥、服务帐户
  • ✅ 带TTL和自动过期处理的令牌缓存
  • ✅ 全面的审计日志和SQLite持久性
  • ✅ 受保护资源元数据发现(RFC9728)

快速开始

# Setup
cp env.template .env
# Edit .env with Okta credentials

# Install & test
pip install -r requirements.txt
pytest tests/  # 113 tests, all passing

# Start agent adapter
python -m okta_agent_proxy.main http
# or: ./scripts/run_gateway.sh

配置

.env(环境变量)

OKTA_DOMAIN=dev-12345.okta.com
GATEWAY_BASE_URL=http://localhost:8000
GATEWAY_PORT=8000
LOG_LEVEL=INFO
# When true (default), tools/list without auth returns 401 to trigger OAuth. When false, allows unauthenticated tools/list (e.g. for AgentCore gateway target registration).
# PROTECTED_DISCOVERY=true

备注:代理凭据(client_id、private_key)在中配置 config/config.yaml,不在 .env

config/config.yaml(后端和代理)

backends:
  employees:
    url: http://localhost:9001
    paths: [/employees, /hr]
    auth_method: okta-cross-app
    auth_config:
      id_jag_mode: static
      target_authorization_server: https://target-okta.okta.com
      target_token_endpoint: https://target-okta.okta.com/oauth2/v1/token
      target_client_id: 0oa_target_app
      target_client_secret: secret

  partners:
    url: http://localhost:9002
    paths: [/partners]
    auth_method: pre-shared-key
    auth_config:
      key: partner_api_key_123

agents:
  cursor:
    client_id: 0oa_cursor_app
    private_key: |
      -----BEGIN PRIVATE KEY-----
      MIIEvQIBADANBgkqhkiG9w0BAQEFAASCA...
      -----END PRIVATE KEY-----
    scopes: [mcp:read, mcp:write]
    backend_access: [employees, finance]

  claude-code:
    client_id: 0oa_claude_code
    private_key: ...
    scopes: [mcp:read]
    backend_access: [partners]

建筑

请求流

MCP Client (X-Agent-ID: cursor + Bearer Token)
    ↓
MCP Adapter
├─ 1. Validate Okta JWT
├─ 2. Extract Agent ID
├─ 3. Load Agent Config (backend_access)
├─ 4. Route to Backend
├─ 5. Authorize (backend in agent.backend_access?)
├─ 6. Exchange Token (ID-JAG)
├─ 7. Add Auth Headers
└─ 8. Forward Request
    ↓
Target MCP Backend → Response

关键组件

  • 代理处理程序 -请求处理管道
  • 后端路由器 -基于路径的路由
  • OktaTokenValidator -JWT验证
  • 代理提取器 -多代理支持
  • InMemory后端存储 -SQLite+YAML持久化
  • ID-JAG发卡机构/交易所 -两步式代币交换
  • 后端身份验证处理程序 -3种身份验证方法

代币交易所(ID-JAG)

Step 1: Client sends Okta token
Step 2: Gateway issues ID-JAG JWT (using agent credentials)
Step 3: Exchange ID-JAG JWT for backend token (at target auth server)
Step 4: Cache backend token with TTL
Step 5: Use cached token until expiration
Step 6: On 401: Invalidate cache, retry exchange

实施状态

阶段功能状态测试
1基本代理✅17
1BSQLite存储+YAML✅20
2Okta JWT验证✅41
2+多代理支持✅53
3代币交换和代理✅集成
总计✅ 完成113

项目结构

okta_agent_proxy/
├── main.py                    # FastMCP entry point
├── config.py                  # Configuration management
├── auth/
│   ├── okta_validator.py      # JWT validation
│   ├── agent_authz.py         # Multi-agent authorization
│   ├── backend_auth.py        # 3 auth methods
│   ├── id_jag_issuer.py       # ID-JAG JWT issuing
│   └── id_jag_exchanger.py    # Token exchange
├── middleware/
│   ├── auth.py                # Auth utilities
│   └── agent_extractor.py     # Agent extraction
├── backends/
│   └── router.py              # Path-based routing
├── proxy/
│   └── handler.py             # Request proxying
├── storage/
│   ├── base.py                # Abstract interface
│   ├── models.py              # SQLAlchemy ORM
│   └── in_memory.py           # SQLite implementation
└── cache/                     # Token caching

tests/
├── test_basic_gateway.py      # 17 tests
├── test_okta_auth.py          # 41 tests
├── test_in_memory_store.py    # 20 tests
├── test_agent_support.py      # 26 tests
└── test_agent_authz.py        # 27 tests

使用示例

测试

# All tests (113 tests, 0.29s)
pytest tests/ -v

# Specific test file
pytest tests/test_agent_authz.py -v

# With coverage
pytest tests/ --cov=okta_agent_proxy

客户端请求(与代理)

curl -H "Authorization: Bearer " \
     -H "X-Agent-ID: cursor" \
     -H "Accept: application/json, text/event-stream" \
     -d '{"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}}' \
     http://localhost:8000/employees

响应(成功)

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": { "tools": [...] }
}

响应(授权错误)

{
  "error": "authorization_denied",
  "message": "Not authorized to access backend 'finance'",
  "agent_id": "cursor"
}

多代理授权

每个代理人都有:

  • 客户端id:OAuth应用程序ID(适用于ID-JAG)
  • private_key:PKCS8密钥(用于令牌交换)
  • 范围:所需权限(默认值:mcp:read)
  • 后端访问:代理可以访问的后端列表

示例流程:

Client (Cursor agent) 
  + X-Agent-ID: cursor
  + Authorization: Bearer 
  ↓
Gateway checks:
  ✓ Agent 'cursor' exists and enabled
  ✓ User has 'mcp:read' scope
  ✓ Backend 'employees' in agent.backend_access
  ✓ Exchange token for backend
  ↓
Allow → Forward to backend

故障排除

端口已在使用中:更改 GATEWAY_PORT=8001 在 .env

导入错误: pip install -r requirements.txt --force-reinstall

Okta令牌验证失败:验证 OKTA_DOMAIN 在 .env

未找到代理:将代理添加到 config/config.yaml 并确保 X-Agent-ID 标题匹配

后端授权被拒绝:检查代理人的 backend_access 配置中的列表

启用调试日志: LOG_LEVEL=DEBUG python -m okta_agent_proxy.main http

图表和可视化文档

可视化架构和序列图可在 /docs/ 文件夹:

  • 建筑设计_DIAGRAM.md -使用Mermaid图的系统架构

- 完整的组件可视化 - 7层代理架构 - 通过每一层的数据流 - 安全边界 - 多代理配置 - 代币交换流程

  • 序列_图表.md -请求流序列

- 完整流程:Claude Code代理→ 员工MCP通过代理 - 5个阶段:认证→ 发现→ 请求→ TokenEx→ 刷新 - 6种错误情况及其处理 - 4个用例 - 组件交互

查看图表:

参考文献

状态

⚠️ 非官方原型仅供评估 -这是一个用于评估和测试目的的非官方原型。它不应该在生产环境中使用。使用风险自负。

许可证:Apache 2.0

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

OAuth2.1Python本地部署MCP适配器多代理支持令牌交换身份验证

支持客户端

ClaudeCursor

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude、Cursor,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Okta Agent MCP Adapter

MCP World · 本页

0stdio有1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Okta Agent MCP Adapter 怎么安装?

公开资料给出的安装命令是 pip install -r requirements.txt,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Okta Agent MCP Adapter 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Okta Agent MCP Adapter 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Okta Agent MCP Adapter 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Okta Agent MCP Adapter 支持哪些客户端?

公开资料标注支持 Claude、Cursor;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP