使用说明
项目简介
SpiceDB MCP Server 是一个实验性的 MCP 服务器,旨在让 LLM 能够利用 SpiceDB 的权限管理能力来回答访问控制和审计相关的问题。它使用 MCP 协议将 SpiceDB 的数据和功能暴露给 LLM 客户端,例如 Claude Desktop。
主要功能点
- 获取 SpiceDB Schema (GetSchema): 查询并返回当前 SpiceDB 实例中使用的 Schema 定义,帮助 LLM 理解数据模型和可用关系。
- 查找资源 (LookupResources): 根据主体(用户或组织等)和权限,查找该主体有权访问的特定类型的资源(如文档、项目等)。回答 "用户 X 对哪些资源 Y 拥有 Z 权限?" 这类问题。
- 查找主体 (LookupSubjects): 根据资源和权限,查找对该资源拥有特定权限的主体。回答 "哪些用户对资源 X 拥有 Y 权限?" 这类问题。
- 读取关系 (ReadRelationships): 读取 SpiceDB 中定义的原始关系数据,用于获取更底层的关联信息,例如 "有哪些用户?" 或 "有哪些文档?"。注意: 此工具返回的是直接关系,而非计算后的权限,通常需要配合 'LookupSubjects' 或 'LookupResources' 使用。
- 批量检查权限 (CheckBulkPermissions): 一次性检查多个权限,提高效率。允许 LLM 客户端批量查询多个主体对多个资源的权限状态。
安装步骤
- 安装 .NET 9 SDK: 请确保您的开发环境已安装 .NET 9 SDK。您可以从 官方 .NET 下载页面 获取并安装。
- 克隆仓库: 使用 'git clone https://github.com/DGuhr/spicedb-mcp' 命令克隆 SpiceDB MCP Server 仓库到本地。
- 启动 SpiceDB 环境: 进入 'SpiceDB-MCP' 目录,使用 Docker Compose 启动 SpiceDB 环境。确保您已安装 Docker 和 Docker Compose。
这将启动一个本地 SpiceDB 实例,并加载预定义的 Schema 和测试数据。cd SpiceDB-MCP docker compose --env-file .env up -d - 运行 MCP 服务器: 在 'SpiceDB-MCP' 目录下,使用 'dotnet run' 命令运行 MCP 服务器。首次运行会进行编译,之后再次运行会更快。
您可以使用 'Ctrl+C' 停止服务器。dotnet run
服务器配置 (Claude Desktop 客户端示例)
要将 SpiceDB MCP Server 集成到 Claude Desktop (或其他 MCP 客户端),您需要配置客户端以连接到该服务器。以下是 Claude Desktop 的配置示例,您需要在 'claude_config.json' 文件中进行配置。
Claude Desktop 客户端配置 (claude_config.json):
在 macOS 系统中,'claude_config.json' 文件通常位于 '~/Library/Application\ Support/Claude/' 目录下。如果文件不存在,请创建它。
将以下 JSON 配置添加到 'claude_config.json' 文件中。请务必将 '/PATH/TO/SOLUTION' 替换为 SpiceDB-MCP 仓库在您本地文件系统中的绝对路径。
{ "mcpServers": { "spicedb": { "command": "dotnet", "args": [ "run", "--project", "/PATH/TO/SOLUTION", // 替换为 SpiceDB-MCP 仓库的绝对路径,例如 "/Users/yourname/git/spicedb-mcp/SpiceDB-MCP" "--no-build" ], "env": { "SPICEDB_PSK": "testkey" // SpiceDB 的 PSK 环境变量,与 .env 文件中配置的 SPICEDB_PSK 一致 } } } }
配置参数说明:
- '"spicedb"': MCP 服务器的名称,您可以自定义。
- '"command": "dotnet"': 启动 MCP 服务器的命令,这里使用 .NET CLI 工具 'dotnet'。
- '"args"': 传递给 'dotnet' 命令的参数列表。
- '"run"': 运行 .NET 项目的命令。
- '"--project", "/PATH/TO/SOLUTION"': 指定要运行的 .NET 项目文件路径。请务必替换为实际路径。
- '"--no-build"': 可选参数,如果代码已编译过,可以添加此参数跳过构建步骤,加快启动速度。
- '"env"': 设置 MCP 服务器运行所需的环境变量。
- '"SPICEDB_PSK": "testkey"': 设置 SpiceDB 的预共享密钥 (PSK) 环境变量,用于服务器连接 SpiceDB 实例进行身份验证。确保与您 SpiceDB 实例的配置一致 ('.env' 文件中的 'SPICEDB_PSK')。
注意: 根据仓库 README 提示,当前项目使用的 MCP C#-SDK 版本可能存在进程未正确终止的问题。使用后可能需要手动结束 'dotnet' 进程。
基本使用方法
- 启动 Claude Desktop (或其他 MCP 客户端)。
- 在 Claude Desktop 中选择已配置的 MCP 服务器 "spicedb" (或您在 'claude_config.json' 中设置的服务器名称)。
- 向 Claude 提问,例如:
- 'who has access to document pay1?' (谁有权访问文档 pay1?)
- 'What documents does the CTO have access to?' (CTO 有权访问哪些文档?)
- 'Who has access to search2?' (谁有权访问 search2?)
- 'Has smallteammember1 read-access to smallprojectdoc3 and smallprojectdoc1?' (smallteammember1 是否拥有对 smallprojectdoc3 和 smallprojectdoc1 的读取权限?)
- 'I wanna know who in my company has what permission to access what and why. Please visualize it as graph and as table.' (我想知道公司中谁对什么拥有什么权限以及原因。请以图形和表格形式可视化。)
LLM 将会调用 SpiceDB MCP Server 提供的工具来获取上下文信息,并根据 SpiceDB 的权限数据生成答案。您可以根据需要修改 'bootstrap' 目录下的 YAML 文件来更改 SpiceDB 的数据模型和关系,以适应您的具体场景。
信息
分类
AI与计算