验证MCP服务器

验证MCP服务器是一个AI驱动的工具,用于通过4个智能MCP工具访问210多个IBM Security Verify REST API,适用于身份管理和安全审计场景。

  • by IBM
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 IBM/verify-mcp-server

使用说明

验证MCP服务器

用于IBM安全验证的模型上下文协议(MCP)服务器 --通过4个智能MCP工具,人工智能驱动访问210多个IBM安全验证REST API。

这是V2 --包括提示、资源、完成、可流式HTTP、TLS和工具注释。 看 V1与V2比较 在......下面


这是什么?

验证MCP服务器网桥 大型语言模型(LLMs) 和 **IBM安全验证(IDaaS)**该服务器没有将210个API端点公开为单独的工具(这将淹没任何LLM上下文窗口),而是将它们合并到 4智能工具 --实现a 减少98% 在代币使用方面。

传统方法 验证MCP服务器
210工具定义 4工具定义
约50000个令牌/请求 约500个令牌/请求
上下文溢出风险 适合任何LLM上下文
返回所有结果 分页(25/页),相关性排名

适用于任何兼容MCP的客户端:Claude Desktop、VS Code、BOB或自定义AI代理。


建筑学

概述

flowchart TB
    A(["🤖 AI Assistant"])
    B{{"⚙️ Verify MCP Server"}}
    AUTH["🔐 OAuth2"]
    API["🌐 Verify REST API · 210 endpoints"]
    A -->|"MCP Protocol"| B
    B -->|"OAuth2 client_credentials"| AUTH
    AUTH -.->|"Bearer Token"| B
    B -->|"Authenticated Request"| API
    API -.->|"JSON Response"| B
    B -.->|"AI Response"| A

运作原理

flowchart TB
    subgraph CLIENT["MCP Client (LLM / Claude Desktop / AI Agents)"]
        U([User Prompt])
    end

    subgraph MCP["Verify MCP Server"]
        direction TB
        T{Router}

        subgraph TOOLS["4 MCP Tools"]
            direction LR
            T1["verify_discover\n─────────────\nSearch 210 endpoints\nby keyword/category\nvia hardcoded schema"]
            T2["verify_list_categories\n─────────────\nBrowse all 89 API\ncategories with\nendpoint counts"]
            T3["verify_get_api_details\n─────────────\nFull parameter schema\nfor any endpoint\nbefore execution"]
            T4["verify_execute\n─────────────\nGET/POST/PUT/PATCH/DELETE\nAny Verify API\nendpoint"]
        end

        subgraph AUTH["OAuth2 Token Handling"]
            direction LR
            CC["② client_credentials Grant\n→ /v1.0/endpoint/default/token\n→ Bearer Token"]
            CACHE["② Token Cache\nAuto-refresh before\nexpiry"]
        end

        CC --> CACHE
    end

    subgraph VERIFY["IBM Security Verify (IDaaS)"]
        API["REST API\n210 Endpoints"]
        subgraph CATEGORIES["API Domains"]
            direction LR
            C1["Identity\nUsers · Groups\nSCIM v2.0"]
            C2["Authentication\nMFA · FIDO2\nOTP · QR"]
            C3["Federation\nSAML · OIDC\nWS-Fed"]
            C4["Access & Policy\nPolicies · Entitlements\nApplications"]
            C5["Privacy\nConsent · DPCM\nPurposes"]
            C6["Operations\nEvents · Logs\nReports"]
        end
    end

    U -->|"① HTTP/SSE or stdio"| T
    T -->|"③ dispatch to tool"| T1 & T2 & T3 & T4
    T1 & T2 & T3 & T4 -->|"④ HTTPS + Bearer token"| API
    API --- CATEGORIES

工具工作流程

sequenceDiagram
    actor User as User / LLM
    participant MCP as MCP Server
    participant Verify as IBM Verify API

    rect rgb(240, 248, 255)
        Note over MCP,Verify: Step ①  Auth — OAuth2 client_credentials grant
        MCP->>Verify: POST /v1.0/endpoint/default/token
        Verify-->>MCP: Bearer token (cached, auto-refreshed)
    end

    rect rgb(255, 251, 235)
        Note over User,MCP: Step ②  Discover — find relevant endpoints
        User->>MCP: verify_discover(search="users")
        MCP-->>User: Matching endpoints with schemas
    end

    rect rgb(255, 243, 205)
        Note over User,MCP: Step ③  Inspect — get full parameter schema
        User->>MCP: verify_get_api_details(endpoint_id="getUsers")
        MCP-->>User: Full params: count, startIndex, filter, sortBy...
    end

    rect rgb(209, 250, 229)
        Note over User,Verify: Step ④  Execute — read
        User->>MCP: verify_execute(method="GET", endpoint="/v2.0/Users", params={count: 10})
        MCP->>Verify: GET /v2.0/Users?count=10 [Bearer token]
        Verify-->>MCP: SCIM user list
        MCP-->>User: JSON results
    end

    rect rgb(220, 240, 255)
        Note over User,Verify: Step ⑤  Execute — write
        User->>MCP: verify_execute(method="POST", endpoint="/v2.0/Users", body={...})
        MCP->>Verify: POST /v2.0/Users [Bearer token]
        Verify-->>MCP: Created user
        MCP-->>User: New user details
    end

代币效率

graph LR
    subgraph NAIVE["❌ Without Verify MCP Server"]
        direction TB
        NA["210 tool definitions"]
        NB["🔴 ~50,000 tokens per request"]
        NC["🔴 Context window overflow"]
        ND["🔴 LLM must choose from 210 tools"]
    end

    subgraph META["✅ With Verify MCP Server"]
        direction TB
        MA["4 tool definitions"]
        MB["🟢 ~2,000 tokens per request"]
        MC["🟢 Fits any LLM context window"]
        MD["🟢 10-turn chat saves ~480,000 tokens"]
    end

    NAIVE -.->|"98% token reduction"| META

安全

两层安全模型——所有流量都经过端到端的身份验证。

%%{init: {'theme': 'default'}}%%
flowchart LR
    subgraph "Layer 1: Client → MCP Server"
        A(["AI Assistant"]) -->|"API Key"| B{{"MCP Server"}}
    end
    subgraph "Layer 2: MCP Server → Verify"
        B -->|"OAuth2"| C[("Verify OAuth")]
        C -.->|"access_token"| B
        B -->|"Bearer token"| D[["Verify REST API"]]
    end
    style A fill:#e1f5fe
    style B fill:#fff3e0
    style C fill:#fce4ec
    style D fill:#e8f5e9

你能做什么

  • 审核整个组织的用户访问权限 --询问“谁有管理员权限?”并获取特权用户、角色和权限的完整清单
  • 执行MFA和身份验证策略 --审查和更新多因素身份验证要求、无密码配置和自适应访问规则
  • 自动化用户生命周期管理 --从单个对话中跨联合身份源提供、取消提供和修改用户帐户
  • 调查身份验证异常 --实时查询登录事件、身份验证失败和可疑活动模式

与兼容

IBM Bob·Claude Desktop·VS Code Copilot·watsonx Orchestrate·任何兼容MCP的AI助手


V1与V2比较

功能 您可以使用MCP+IBM验证做什么 V1 V2
4个MCP工具 要求AI列出用户、重置MFA、创建组、管理策略、查询审核日志或210个简单语言验证API操作中的任何一个-不需要API文档 ✅ ✅
苏格兰和南方能源公司运输 通过HTTP/SSE将任何远程MCP客户端(Claude Desktop、VS Code、BOB)连接到正在运行的服务器,无需本地安装 ✅ ✅
stdio运输 将服务器作为本地子进程运行——无网络端口,单用户桌面使用零配置 ✅ ✅
密钥库认证 使用每个用户的API密钥保护服务器;通过以下方式生成、列出和撤销密钥 /admin/keys 不重新启动 ✅ ✅
Docker/K3s 作为容器发货——在任何服务器、Kubernetes集群或K3s节点上运行;山 /data 密钥持久性卷 ✅ ✅
可流式传输的HTTP 在负载均衡器后面部署无状态实例;每个请求都是自包含的——支持水平扩展和无服务器 -- ✅
6提示模板 要求人工智能“运行过去30天的用户访问审查”或“生成MFA注册报告”,并自动获得一份结构完整、数据驱动的报告 -- ✅
4 MCP资源 将实时验证数据显示为可读资源-AI客户端可以浏览API类别、检查端点架构、检查租户状态或读取服务器信息,而无需调用工具 - ✅
自动完成 在支持客户端(VS Code等)中键入工具参数时,获取端点ID、类别、HTTP方法和合规性框架的提前键入建议 -- ✅
工具注释 人工智能客户端预先知道哪些工具是只读的(可以自由调用),哪些是破坏性的(需要确认)——减少了意外写入 -- ✅
进度通知 在长时间运行的Verify API调用期间查看实时进度更新-AI客户端会收到中间步骤的通知,而不仅仅是最终结果 - ✅
MCP日志记录 服务器端日志事件(信息、警告、错误)实时转发到MCP客户端——在AI工具的实时调试日志窗格中可见 -- ✅
TLS支持 使用自签名或CA签名的证书通过HTTPS提供服务,这是生产部署和零信任网络策略所必需的 -- ✅

仅V2组件

组件 计数 它的作用
提示词 6 预构建报告模板: user_access_review, mfa_enrollment_report, federation_health_report, consent_compliance_report, threat_detection_report, application_onboarding_guide
资源 4 实时数据表面: verify://categories, verify://endpoints/{id}, verify://server/info, verify://tenant
补全 -- 自动完成 endpoint_id, category, method, framework, sso_protocol

可用工具

工具 说明 用途
verify_discover 按关键字或类别搜索终结点 找到正确的API-最多返回25个结果,关联。≤3场比赛自动包含全部细节。
verify_list_categories 列出按域分组的所有89个API类别 按域浏览完整的API表面(标识、MFA、联盟等)
verify_get_api_details 获取特定端点的完整参数架构 在调用之前了解所需的参数
verify_execute 执行任何验证API端点 GET、POST、PUT、PATCH、DELETE任何资源

三步LLM工作流程

① verify_discover("users") → find endpoints
② verify_get_api_details("getUsers") → get parameter schema
③ verify_execute(GET, /v2.0/Users, {count: 10}) → actual data

在第一次发现之后,LLM学习模式并停止调用discover——进一步减少了多回合对话中的令牌。


快速开始

先决条件

  • Python 3.10+ 或 码头工人
  • IBM安全验证租户 具有API访问权限
  • API客户端凭据 (client_id + client_secret)有适当的权利

选项A:Docker(推荐)

docker run -d \
  --name verify-mcp \
  -p 8004:8004 \
  -v verify-mcp-data:/data \
  -e VERIFY_TENANT="https://your-tenant.verify.ibm.com" \
  -e API_CLIENT_ID="your-api-client-id" \
  -e API_CLIENT_SECRET="your-api-client-secret" \
  -e MCP_TRANSPORT=sse \
  verify-mcp-server

选项B:Python

# Clone
git clone https://github.ibm.com/ashrivastava/verify-mcp-server.git
cd verify-mcp-server
git checkout v2  # or main for v1

# Install
pip install -e .

# Configure
cat > .env << 'EOF'
VERIFY_TENANT=https://your-tenant.verify.ibm.com
API_CLIENT_ID=your-api-client-id
API_CLIENT_SECRET=your-api-client-secret
MCP_TRANSPORT=sse
MCP_PORT=8004
EOF

# Run
python -m src

验证它是否正常工作

# Health check
curl http://localhost:8004/health

# Generate an API key (required for MCP client auth)
# Set a strong MCP_ADMIN_TOKEN in the environment first.
export MCP_ADMIN_TOKEN='replace-with-a-long-random-secret'
curl -X POST http://127.0.0.1:8004/admin/keys \
  -H "Authorization: Bearer $MCP_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user": "admin@in.ibm.com"}'

# List keys
curl http://127.0.0.1:8004/admin/keys \
  -H "Authorization: Bearer $MCP_ADMIN_TOKEN"

配置

环境变量

变量 必填 默认 描述
VERIFY_TENANT 是 -- 验证租户URL(例如。, https://mytenant.verify.ibm.com)
API_CLIENT_ID 是的 - neneneba API客户端ID client_credentials 赠款
API_CLIENT_SECRET 是 - neneneba API客户端机密
VERIFY_SSL 没有 true 验证SSL证书
MCP_TRANSPORT 没有 stdio 运输: stdio, sse,或 streamable-http (v2)
MCP_HOST 没有 127.0.0.1 绑定SSE/可流式传输http的地址(使用 0.0.0.0 集装箱内)
MCP_PORT 没有 8004 SSE/可流式传输HTTP的HTTP端口
MCP_ADMIN_TOKEN HTTP管理员为“是” -- 密码为 /admin/keys (持票人或 X-Admin-Token).在您可以铸造API密钥之前需要。
LOG_LEVEL 没有 INFO 日志记录级别
TLS_CERT 否 -- TLS证书(v2)的路径
TLS_KEY 否 -- TLS私钥(v2)路径

运输方式

模式 标志/环境 用例 版本
标准 MCP_TRANSPORT=stdio 克劳德桌面,VS代码(本地) v1,v2
上海证券交易所 MCP_TRANSPORT=sse 通过HTTP/SSE v1、v2远程客户端
可流式传输的HTTP MCP_TRANSPORT=streamable-http 无状态、可扩展的部署 仅限v2

API密钥管理

SSE/HTTP MCP路由为 故障关闭:如果密钥库为空,它们将返回HTTP 503,直到您生成密钥。管理路线需要 MCP_ADMIN_TOKEN (他们确实如此 不 信任客户端IP/lolocalhost检查)。

export MCP_ADMIN_TOKEN='replace-with-a-long-random-secret'

# Generate a new key
curl -X POST http://127.0.0.1:8004/admin/keys \
  -H "Authorization: Bearer $MCP_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user": "bob@in.ibm.com"}'

# List all keys (prefix only)
curl http://127.0.0.1:8004/admin/keys \
  -H "Authorization: Bearer $MCP_ADMIN_TOKEN"

# Revoke a key by prefix
curl -X DELETE http://127.0.0.1:8004/admin/keys/<PREFIX> \
  -H "Authorization: Bearer $MCP_ADMIN_TOKEN"

然后调用MCP路由 Authorization: Bearer <api_key> 从创建响应中。


API覆盖范围

89个类别--210个端点--9个域

域 类别 操作示例
身份管理 用户(SCIM v2.0)、组、动态组、用户自我关怀、身份源 列出/创建/更新/删除用户、管理组成员资格、批量操作
身份验证和MFA OIDC、密码验证、电子邮件OTP、短信OTP、TOTP、语音OTP、FIDO2、QR登录、知识问题、签名验证、身份验证器 注册因素、验证OTP、管理FIDO注册
联邦 SAML 2.0、WS联合、OIDC联合、社交JWT交换 管理联合、别名、IdP属性映射
访问和政策 访问策略v5.0,应用程序访问、权限、访问请求 创建基于风险的策略,管理应用程序访问
隐私与同意 数据隐私管理、同意记录、外部同意提供者 创建/更新同意、管理目的、数据使用批准
配置 API客户端、OIDC客户端、密码策略、租户属性、主题、适配器 管理API客户端、轮换机密、配置策略
MFA配置 电子邮件/短信/TOTP/语音OTP配置、FIDO配置、QR配置、身份验证器客户端 配置MFA方法,设置OTP策略
运营 事件、报告、查询日志、Webhooks、威胁洞察 查询审计日志、导出报告、配置Webhooks
治理 认证活动v2.0 管理访问认证活动

项目结构

verify-mcp-server/
├── src/
│   ├── __init__.py
│   ├── __main__.py          # Entry point (python -m src)
│   ├── server.py            # MCP server, Starlette app, auth middleware
│   ├── tools.py             # 4 MCP tool definitions
│   ├── discovery.py         # API schema index (210 endpoints, 89 categories)
│   ├── client.py            # HTTP client for Verify API calls
│   ├── auth.py              # OAuth2 client_credentials token management
│   ├── config.py            # Environment-based configuration
│   ├── keystore.py          # API key generation, validation, revocation
│   ├── prompts.py           # 6 MCP prompt templates (v2)
│   ├── resources.py         # 4 MCP resources (v2)
│   └── completions.py       # MCP auto-completions (v2)
├── deploy/
│   └── deploy-appserver.sh  # Docker deployment script
├── tests/
│   ├── test_stdio.py        # stdio transport tests
│   └── test_sse_e2e.py      # SSE end-to-end tests
├── Dockerfile
├── pyproject.toml
├── run.py                   # WXO entry point (stdio mode)
├── SOLUTION_GUIDE.md        # Detailed solution walkthrough
├── CONTRIBUTING.md
├── SECURITY.md
└── LICENSE                  # Apache 2.0

版本历史记录

版本 日期 亮点
2.0.0 2026年4月 可流式HTTP、MCP提示(6)、资源(4)、完成、工具注释、TLS、进度通知、MCP日志记录
1.0.0 2026年3月 4个元工具,210个端点,SSE+stdio,密钥库认证,Docker支持

联系

维护人员: Anuj Shrivastava——美国工业市场服务工程人工智能工程师
📧 ashrivastava@in.ibm.com
如需演示、集成帮助或协作,请通过电子邮件联系。


IBM公共存储库披露

此存储库中的所有内容(包括代码)均由IBM根据相关的开源软件许可证提供,IBM没有义务提供增强、更新或支持。IBM开发人员将此代码作为开源项目(而不是IBM产品)生成,IBM对质量和安全级别没有任何断言,也不会继续维护此代码。