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

MCP CloudGovernance-agent

MCP Server

提供基于S3存储的AWS/GCP CMDB数据查询服务,通过Streamlit聊天机器人实现交互式查询和数据分析。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude数据可视化Claude DesktopClaude

安装说明

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

作者 / 组织

ar-codelabs

提供方

ar-codelabs

最后核验

2026/5/17 20:19

运行时

Python

快速接入

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

命令预览

python mcp_server.py &

详细介绍

🔍 CMDB MCP服务器&Streamlit聊天机器人

将存储在S3中的AWS/GCP CMDB策略数据作为MCP服务器提供,并通过Streamlit聊天机器人支持交互式查询。

📋 项目概述

🎯 主要功能

  1. MCP服务器:将S3 CMDB数据作为AI可用的“工具”提供
  2. Streamlit聊天机器人:使用Bedrock AI查看交互式CMDB
  3. 仪表板:可视化资源状态
  4. 浏览数据:按类别查询详细数据

💡 MCP(模型上下文协议)란?

MCP是AI模型可以访问外部数据和工具的标准协议。

  • 常规方式:将所有数据以文本形式传递给AI→浪费令牌,速度慢
  • MCP方式:需要AI时调用“工具”查询数据→高效、快速

在此项目中:

  • MCP服务器将S3 CMDB数据作为8个“工具”提供
  • AI分析问题,选择性地调用所需的工具
  • 在其他AI应用程序(Claude Desktop等)中也可以重复使用相同的工具

🏗️ 架构

┌─────────────┐
│   S3 CMDB   │  ← 실제 CMDB 데이터 저장소
│   Bucket    │     (IAM, S3, EC2, RDS 등)
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ MCP Server  │  ← 데이터를 "도구"로 변환
│             │     (get_identity_policies 등)
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  Streamlit  │  ← 사용자 질문 받음
│   챗봇       │     "IAM 정책 현황은?"
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  Bedrock    │  ← AI가 필요한 도구 선택
│  Claude 3   │     → MCP 도구 호출
└─────────────┘     → 데이터 분석 후 답변

数据流:

  1. 用户输入问题
  2. AI分析问题→选择所需的MCP工具
  3. MCP服务器在S3中查询数据
  4. AI在分析数据后用自然语言回答

📊 MCP服务器工具

MCP服务器将S3 CMDB数据作为AI可调用的8个“工具”提供。

1.策略查询工具(按类别查询数据)

  • get_identity_policies:IAM、组织、Cognito정책
  • get_storage_policies:S3、EFS、FSx策略
  • get_compute_policies:EC2、Lambda、ECS策略
  • get_database_policies:RDS,DynamoDB策略
  • get_network_policies:VPC、Cloud、Route 53策略
  • get_security_policies:KMS、Secrets Manager、WAF策略

2.搜索和分析工具

  • search_resources:搜索资源(名称、类型、标记等)
  • get_resource_summary:全部资源摘要统计信息

3.工具使用示例

用户问题:“IAM政策现状如何?”

1. AI 분석: "이 질문에는 get_identity_policies 도구가 필요"
2. MCP 호출: call_mcp_tool("get_identity_policies")
3. S3 조회: aws-policies/20241223/identity_policies.json
4. 데이터 반환: {"123456789012": {"IAM": [...]}}
5. AI 답변: "현재 IAM 사용자는 5명이며..."

主要功能:

  • 自动匿名化:保护账号ID、ARN等敏感信息
  • 保留策略名/角色名:用于了解业务逻辑
  • 实时S3数据联动
  • 可以按日期查看历史记录
  • AI答案匿名化:答案中包含的账号也自动掩蔽(例如7\*\*\*\*\*\*\*\*\*\*)

🤖 AI模型设置

使用Bedrock(基本)

默认情况下,使用AWS Bedrock Claude 3.5 Sonnet。

# .env 파일에서 설정
BEDROCK_REGION=us-east-1
BEDROCK_MODEL_ID=anthropic.claude-3-5-sonnet-20241022-v2:0

使用Local LLM端点

要使用本地LLM,请:

  1. 修改.env文件:
# Bedrock 대신 로컬 LLM 사용
USE_LOCAL_LLM=true
LOCAL_LLM_ENDPOINT=http://localhost:11434/v1/chat/completions
LOCAL_LLM_MODEL=llama3.1:8b
  1. 修改streamlit_app.py:
# query_bedrock 함수를 다음으로 교체:
def query_local_llm(prompt, context=""):
    """로컬 LLM을 사용한 AI 응답 생성"""
    import requests
    import os
    
    endpoint = os.getenv('LOCAL_LLM_ENDPOINT')
    model = os.getenv('LOCAL_LLM_MODEL')
    
    full_prompt = f"""
당신은 AWS CMDB 전문가입니다. 다음 CMDB 데이터를 바탕으로 질문에 답해주세요.

CMDB 데이터:
{context}

질문: {prompt}

답변은 한국어로, 구체적이고 실용적으로 제공해주세요.
"""
    
    try:
        response = requests.post(endpoint, json={
            "model": model,
            "messages": [{"role": "user", "content": full_prompt}],
            "max_tokens": 2000,
            "temperature": 0.7
        })
        return response.json()['choices'][0]['message']['content']
    except Exception as e:
        return f"로컬 LLM 오류: {str(e)}"

# main() 함수에서 사용:
if os.getenv('USE_LOCAL_LLM') == 'true':
    response = query_local_llm(prompt, context)
else:
    response = query_bedrock(prompt, context)

🚀 执行方法

1.首选参数

# .env 파일 수정
AWS_ACCESS_KEY_ID=your_key
AWS_SECRET_ACCESS_KEY=your_secret
S3_CMDB_BUCKET=mwaa-cmdb-bucket

2.执行整合(建议)

./run.sh

自动运行:

  • 创建和激活虚拟环境
  • 安装软件包
  • MCP服务器自动启动
  • 启动Streamlit聊天机器人

3.手动运行(用于开发)

# MCP 서버 별도 실행 (선택사항)
python mcp_server.py &

# Streamlit 실행
streamlit run streamlit_app.py --server.port=8503 --server.address=0.0.0.0

连接URL:

  • 本地:http://localhost:8503

💬 聊天机器人使用示例

🔐 IAM政策相关问题

📊 了解现状

  • “IAM政策一共有几个?”
  • “IAM有几个角色?”
  • “告诉我IAM用户情况”
  • “IAM集团是如何组成的?”

🔍 详细分析

  • “受管策略和内联策略的比率是多少?”
  • “AWS托管策略与客户托管策略的现状如何?”
  • “最常用的IAM政策是什么?”
  • “权限最多的角色是?”

🚨 安全相关

  • “让我看看拥有管理员权限的角色”
  • “哪些资源具有PowerUser权限?”
  • “哪些政策拥有S3相关权限?”
  • “哪些角色具有与EC2相关的权限?”

📈 策略分析

  • “每个策略关联的资源数量是多少?”
  • “有没有禁用的策略?”
  • “最复杂的政策是什么?”
  • “特定服务的权限情况如何?”

🔎 搜索问题

  • “帮我找ReadOnly权限相关政策”
  • “有Lambda相关政策吗?”
  • “哪些角色具有CloudWatch权限?”
  • “请按特定策略名搜索”

聊天机器人功能

  1. 自然语言问题:使用日常语言查看CMDB
  2. 上下文感知:自动加载符合问题的数据
  3. 详细分析:Bedrock AI分析和解释数据

📊 仪表板功能

1.资源摘要

  • 类别资源计数图表
  • 资源分布饼图
  • 资源总数度量

2.浏览数据

  • 按类别查询数据
  • 按日期查看历史记录
  • 检查JSON源数据
  • 显示表格格式数据

🔧 MCP服务器集成

Claude桌面设置

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "cmdb-server": {
      "command": "python",
      "args": ["/path/to/cmdb_mcp/mcp_server.py"],
      "env": {
        "AWS_DEFAULT_REGION": "us-east-1"
      }
    }
  }
}

🔐 必需权限

AWS IAM权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::mwaa-cmdb-bucket",
                "arn:aws:s3:::mwaa-cmdb-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": "*"
        }
    ]
}

🔒 安全和匿名

自动匿名功能

这个项目 第2步匿名化使用保护敏感信息:

步骤1:加载数据时匿名

  • 从S3导入数据时自动匿名
  • 帐户ID: 703000000000703*********
  • ARN: arn:aws:iam::703000000000:role/...arn:aws:iam::703*********:role/...
  • 访问密钥: AAABBBCCCDDDEEEAAABBB************
  • IP地址: 10.0.1.10010.0.*.**

第2步:AI答案匿名化

  • 在AI生成的答案中自动掩蔽敏感信息
  • 即使答案中包含账号,也会自动 *** 处理
  • 自动掩蔽电子邮件、IP地址等

保留的信息:

  • IAM角色名,政策名(用于了解业务逻辑)
  • 资源名称(用于分析)
  • 服务名称,区域名称

掩蔽的信息:

  • AWS帐户ID(12位)
  • ❌ 访问密钥/密钥
  • IP地址
  • 电子邮件地址
  • ARN的帐户ID部分

5.如果AI找不到数据

症状:“您有CloudWatch权限的角色是?”回答“没有数据”

原因:

  • AI选择了错误的工具
  • 受数据大小限制,仅传输部分数据(最常见的原因)
  • 搜索关键字与数据不匹配

解决方法:

  1. 更具体地提问

- “CloudWatch权限” - “在IAM角色中查找包含CloudWatch的角色” - “包含cloudwatch或logs的IAM角色”

  1. 指定类别

- “特权角色” - “IAM角色列表中与CloudWatch相关的角色”

  1. 使用数据导航选项卡(最可靠的方法)

- 在“数据导航”选项卡中,而不是聊天机器人 identity_policies 直接查询 - 验证原始的JSON数据 - 使用浏览器搜索(Ctrl+F)搜索“cloudwatch”

📝 使用提示

有效的提问方法

  1. 具体地:“IAM用户策略列表”而不是“IAM策略”
  2. 指定类别:“安全相关资源现状”
  3. 请求比较:“与上周相比,资源发生了变化”

利用仪表板

  1. 首先在仪表板上查看完整的现状
  2. 在数据导航中查看兴趣类别的详细信息
  3. 聊天机器人的具体问题

目录标签

目录标签

PythonClaude数据可视化CMDB查询本地部署AI聊天机器人AWS/GCP管理交互式分析

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP