OSIM MCP Server

Python FastMCP

基于 FastMCP 的 Model Context Protocol (MCP) 服务器,提供 OSIM (Open Security Information Model) 数据标准 schema 的查询和访问能力。

🚀 快速开始

使用 uvx(推荐,无需安装)

包已发布到 PyPI,可以直接使用 uvx 运行:

uvx osim-mcp-server

在 MCP 客户端中配置

Claude Desktop

在配置文件(~/Library/Application Support/Claude/claude_desktop_config.json)中添加:

{
  "mcpServers": {
    "osim-mcp-server": {
      "command": "uvx",
      "args": ["osim-mcp-server"]
    }
  }
}

Cursor

在 MCP 设置中添加:

{
  "mcpServers": {
    "osim-mcp-server": {
      "command": "uvx",
      "args": ["osim-mcp-server"]
    }
  }
}

从源码运行

# 克隆仓库
git clone https://github.com/osim-group/osim-mcp-server.git
cd osim-mcp-server

# 首先获取 osim-schema(必需)
# 确保已安装 git
python update_schemas.py

# 安装依赖并运行
uv sync
uv run python server.py

重要:仓库本身不包含 osim-schema 目录,需要先运行 update_schemas.py 获取 osim-schema 仓库内容才能正常运行。

更新 OSIM Schema

项目中的 osim-schema 内容来源于 OSIM Schema 仓库。如果需要获取或更新最新的内容,可以使用项目提供的更新脚本:

# 确保已安装 git
python update_schemas.py

脚本会自动:

  • 从 GitHub 仓库克隆整个 osim-schema 仓库(包括 schemas、faqs、examples 等)
  • 备份现有的 osim-schema 目录(如果存在)
  • 更新本地 osim-schema 目录
  • 验证更新结果

注意:更新脚本需要系统已安装 git 命令。

📚 功能特性

MCP 工具

  1. list_schema_names - 列出所有可用的数据标准 schema 名称

    • 参数:无
    • 返回:List[str] - schema 名称列表,格式为 {group}.{category}.{title}
    • 示例:["log.network_session_audit.http_audit", "alert.network_attack.apt_attack"]
    • 说明:为了避免上下文过长,此工具只返回名称,不包含描述信息
  2. describe_schemas - 获取指定 schema 的描述信息

    • 参数:schema_names (List[str]) - schema 名称列表
    • 返回:Dict[str, str] - 字典,键为 schema 名称,值为描述信息
    • 说明:方便理解应该使用哪个 schema
  3. get_schema - 获取指定 schema 的完整字段定义

    • 参数:schema_path (str) - schema 路径,格式为 {group}.{category}.{title}
    • 返回:Dict[str, Any] - 字段定义字典,包含字段名、标签、类型、要求、描述等信息
    • 说明:可以从 list_schema_names 中获取所有可用的 schema 名称
  4. get_schema_version - 获取当前 schemas 的版本信息

    • 参数:无
    • 返回:Dict[str, Any] - 包含以下字段:
      • version (str) - 本地版本号
      • auto_update_enabled (bool) - 是否启用自动更新
      • update_timeout (float) - 更新检查超时时间(秒)
  5. get_dictionaries - 获取 dictionaries.json 文件内容

    • 参数:无
    • 返回:Dict[str, Any] - OSIM 数据标准中定义的字典项
    • 说明:包含字段名、标签、描述、类型等信息,这些字典项定义了数据标准中使用的通用字段定义

MCP 资源

通过资源 URI 访问 schema 文件内容:

  • URI 格式data-standard://{group}/{category}/{title}
  • 示例
    • data-standard://log/network_session_audit/http_audit
    • data-standard://alert/network_attack/apt_attack
    • data-standard://asset/business_asset/web_application

📊 数据标准分类

项目提供完整的 OSIM 数据标准支持,包括:

  • 告警 (Alert):异常行为、数据安全、恶意软件、网络攻击等
  • 资产 (Asset):业务资产、云资产、数据资产、网络资产等
  • 日志 (Log):账户操作审计、数据安全审计、主机行为审计、网络会话审计等
  • 事件 (Incident):安全事件记录和分类
  • 设备检测 (Device Detection):EDR、防火墙、WAF、IDS/IPS 等各类安全设备

数据来源:所有 schema 文件均来源于 OSIM Schema 仓库

🛠️ 开发

获取/更新 OSIM Schema

项目提供了脚本用于从 GitHub 仓库同步整个 osim-schema 仓库:

python update_schemas.py

注意:构建分发包前需要先获取 osim-schema,因为分发包需要包含 osim-schema 目录。

构建分发包

# 确保已获取 osim-schema
python update_schemas.py

# 构建分发包
uv build

发布到 PyPI

# 安装 twine
uv pip install twine

# 上传到 PyPI
uv run twine upload dist/*

发布后即可通过 uvx osim-mcp-server 使用。

📝 许可证

Apache License 2.0

🙏 致谢