功能标记管理服务器

Statsig MCP服务器是一个用于管理功能标记、实验和动态配置的服务,适用于AI助手与Statsig控制台API的交互。

  • by GeLi2001
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 geli2001/statsig-mcp

使用说明

Statsig MCP服务器

模型上下文协议服务器 统计 功能标志和实验平台。

该MCP服务器使人工智能助手能够与Statsig的Console API进行交互,以实现全面的功能管理和实验平台管理。

特性

  • 🚩 功能门管理:创建、读取、更新和删除要素门
  • ⚙️ 动态配置管理:动态配置的完整CRUD操作
  • 🧪 实验管理:创建、读取、更新和删除实验
  • 👥 细分市场管理:创建和管理用户细分
  • 📊 指标访问:查看和分析平台指标
  • 📈 审计日志:跟踪更改并访问审计跟踪
  • 🎯 目标应用程序:管理目标应用程序
  • 🔑 API密钥管理:列出并管理API密钥
  • 👤 团队管理:列出团队用户并通过电子邮件获取用户详细信息
  • 📋 事件查询:列出项目中可用的事件类型

安装

使用紫外线(推荐)

# Clone the repository
git clone https://github.com/GeLi2001/statsig-mcp.git
cd statsig-mcp

# Install dependencies with uv
uv sync

# Install with dev dependencies
uv sync --extra dev

使用pip

# Install from source
pip install -e .

# Or install with dev dependencies
pip install -e ".[dev]"

快速开始

1.获取控制台API密钥

  1. 首选 Statsig控制台
  2. 导航至 项目设置 → 按键和环境
  3. 复制您的 控制台API密钥 (不是客户端或服务器密钥)

2.运行服务器

紫外线(推荐):

# Using command-line arguments (MCP best practice)
uv run -m statsig_mcp --api-key "console-xxx"

# With additional options
uv run -m statsig_mcp \
  --api-key "console-xxx" \
  --environment "production" \
  --api-timeout 5000 \
  --debug

# Or with environment variables
STATSIG_CONSOLE_API_KEY="console-xxx" uv run -m statsig_mcp

使用Python:

# Using flags (recommended)
python -m statsig_mcp --api-key "console-xxx"

# Or environment variables
export STATSIG_CONSOLE_API_KEY="console-xxx"
python -m statsig_mcp

3.配置选项

服务器同时支持这两种功能 命令行参数 (建议用于MCP)和 环境变量:

命令行参数(MCP最佳实践)

uv run -m statsig_mcp --help
参数 类型 默认值 描述
--api-key string None Statsig Console API密钥(必需)
--environment string 开发 环境层
--api-timeout int 3000 API超时(以毫秒为单位)
--disable-logging flag false 禁用Statsig的事件日志记录
--debug flag false 启用调试日志记录

环境变量(回退)

变量 描述
STATSIG_CONSOLE_API_KEY Statsig控制台API密钥
STATSIG_ENVIRONMENT 环境层
STATSIG_API_TIMEOUT API超时(以毫秒为单位)
STATSIG_DISABLE_LOGGING 禁用日志记录(真/假)
STATSIG_DEBUG 启用调试模式(真/假)

4.MCP客户端配置

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "statsig": {
      "command": "uv",
      "args": [
        "run",
        "-m",
        "statsig_mcp",
        "--api-key",
        "console-xxx",
        "--environment",
        "production"
      ]
    }
  }
}

带有环境变量的替代方案

{
  "mcpServers": {
    "statsig": {
      "command": "uv",
      "args": ["run", "-m", "statsig_mcp"],
      "env": {
        "STATSIG_CONSOLE_API_KEY": "console-xxx",
        "STATSIG_ENVIRONMENT": "production"
      }
    }
  }
}

5.使用MCP检查员进行测试

# Test your server with the MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run statsig-mcp --api-key console-xxx

可用工具

服务器提供了27个控制台API工具,这些工具按资源类型组织:

功能门管理

  • list_gates:列出所有特征门
  • get_gate:获取特定功能门的详细信息
  • create_gate:创建新特征门
  • update_gate:更新现有要素门
  • delete_gate:删除特征门

实验管理

  • list_experiments:列出所有实验
  • get_experiment:获取特定实验的详细信息
  • create_experiment:创建新实验
  • update_experiment:更新现有实验
  • delete_experiment:删除实验

动态配置管理

  • list_dynamic_configs:列出所有动态配置
  • get_dynamic_config:获取特定动态配置的详细信息
  • create_dynamic_config:创建新的动态配置
  • update_dynamic_config:更新现有的动态配置
  • delete_dynamic_config:删除动态配置

细分市场管理

  • list_segments:列出所有分段
  • get_segment:获取特定细分市场的详细信息
  • create_segment:创建新分段

分析和监控

  • list_metrics:列出所有指标
  • get_metric:获取特定指标的详细信息
  • list_audit_logs:列出具有可选日期筛选的审核日志

平台管理

  • list_target_apps:列出所有目标应用程序
  • get_target_app:获取特定目标应用程序的详细信息
  • list_api_keys:列出所有API密钥

团队与活动

  • list_team_users:列出所有团队成员
  • get_user_by_email:通过电子邮件获取团队成员信息
  • query_events:查询事件类型和详细信息

示例用法

创建要素门

{
  "name": "new_checkout_flow",
  "description": "Enable new checkout flow for users",
  "is_enabled": true
}

**Parameters:**

- `user_id` (string): User identifier
- `experiment_name` (string): Name of the experiment
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes

#### 4. `get_layer`

Get layer parameter values for a user.

**Parameters:**

- `user_id` (string): User identifier
- `layer_name` (string): Name of the layer
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes

#### 5. `log_event`

Log a custom event directly to Statsig.

**Parameters:**

- `user_id` (string): User identifier
- `event_name` (string): Name of the event
- `value` (string|number, optional): Event value
- `metadata` (object, optional): Event metadata
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes

### Project Management

#### 6. `query_events`

List all event types configured in your Statsig project.

**Parameters:** None

**Returns:** List of event names and their configurations.

#### 7. `get_user_by_email`

Get team member information by email address.

**Parameters:**

- `email` (string): Email address of the team member

#### 8. `list_team_users`

List all team members in your Statsig project.

**Parameters:** None

**Returns:** List of team members with their roles and permissions.

## Example MCP Client Usage

```python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Create server parameters with flags (recommended)
server_params = StdioServerParameters(
    command="uv",
    args=[
        "run", "-m", "statsig_mcp",
        "--api-key", "console-xxx",
        "--environment", "production",
        "--debug"
    ]
)

async def main():
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # Check a feature gate
            result = await session.call_tool(
                "check_feature_gate",
                arguments={
                    "user_id": "user123",
                    "gate_name": "new_feature",
                    "custom_attributes": {"plan": "premium"}
                }
            )
            print(f"Feature gate result: {result}")

            # Get dynamic config
            config = await session.call_tool(
                "get_dynamic_config",
                arguments={
                    "user_id": "user123",
                    "config_name": "ui_config"
                }
            )
            print(f"Config: {config}")

            # Log an event
            await session.call_tool(
                "log_event",
                arguments={
                    "user_id": "user123",
                    "event_name": "button_click",
                    "metadata": {"button": "checkout"}
                }
            )

            # List available events
            events = await session.call_tool("query_events")
            print(f"Available events: {events}")

            # Get team member info
            user_info = await session.call_tool(
                "get_user_by_email",
                arguments={"email": "teammate@company.com"}
            )
            print(f"Team member: {user_info}")

发展

设置开发环境

使用紫外线(推荐):

# Clone and setup
git clone https://github.com/GeLi2001/statsig-mcp.git
cd statsig-mcp

# Install all dependencies including dev tools
uv sync --extra dev

# Run tests
uv run pytest

# Format code
uv run black .

# Type checking
uv run mypy .

# Linting
uv run ruff check .

使用pip:

# Install in development mode with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black .

# Type checking
mypy .

运行命令

随着 uv,您可以在虚拟环境中运行任何命令:

# Run the server with flags
uv run -m statsig_mcp --api-key "console-xxx" --debug

# Run tests with verbose output
uv run pytest -v

# Run validation script
uv run python validate.py

# Format and lint
uv run black .
uv run ruff check --fix .

项目结构

statsig_mcp/
├── __init__.py
├── __main__.py           # Module entry point
├── server.py             # Main MCP server implementation
├── console_client.py     # Statsig Console API client
└── types.py              # Type definitions

tests/                    # Test suite
├── test_server.py

examples/                 # Usage examples
├── client_example.py

pyproject.toml            # Project configuration
uv.lock                   # Locked dependencies (uv)
.venv/                    # Virtual environment (uv managed)

建筑

此MCP服务器使用具有三个Statsig API的混合方法:

  1. 控制台API (https://statsigapi.net/console/v1/*)-用于项目管理(团队用户、事件类型)
  2. HTTP API (https://api.statsig.com/v1/*)-用于实时特征检查(门、配置、实验、层)
  3. 事件API (https://events.statsigapi.net/v1/*)-用于直接事件记录

这种方法提供了功能和性能的最佳平衡,允许管理操作和实时功能评估。

安全说明

  • 永远不要在客户端代码中暴露Statsig Console API密钥
  • 为API键使用命令行参数或环境变量
  • 控制台API密钥提供对Statsig项目的完全访问
  • 考虑为不同的环境使用单独的API密钥
  • 控制台API密钥与客户端密钥和服务器密钥不同

需求

  • Python 3.10+
  • uv(推荐)或pip用于包装管理

故障排除

常见问题

  1. “找不到API密钥”错误:确保 --api-key 提供或 STATSIG_CONSOLE_API_KEY 已设置
  2. 网络超时:增加超时时间 --api-timeout 5000
  3. 未找到特征门:验证Statsig控制台中是否存在门名称
  4. Python版本错误:此软件包需要Python 3.10+(MCP要求)
  5. API密钥类型错误:请确保使用的是Console API密钥,而不是客户端或服务器密钥

调试模式

启用调试日志以进行故障排除:

# With command-line flag (recommended)
uv run -m statsig_mcp --api-key "console-xxx" --debug

# With environment variable
STATSIG_DEBUG=true uv run -m statsig_mcp --api-key "console-xxx"

帮助

获取命令行选项的帮助:

uv run -m statsig_mcp --help

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 运行测试和梳理: uv run pytest && uv run ruff check
  6. 提交拉取请求

资源