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密钥
- 首选 Statsig控制台
- 导航至 项目设置 → 按键和环境
- 复制您的 控制台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_mcp3.配置选项
服务器同时支持这两种功能 命令行参数 (建议用于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
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/*`)-用于项目管理(团队用户、事件类型)
1. **HTTP API** (`https://api.statsig.com/v1/*`)-用于实时特征检查(门、配置、实验、层)
1. **事件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` 已设置
1. **网络超时**:增加超时时间 `--api-timeout 5000`
1. **未找到特征门**:验证Statsig控制台中是否存在门名称
1. **Python版本错误**:此软件包需要Python 3.10+(MCP要求)
1. **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. 复刻仓库
1. 创建要素分支
1. 进行更改
1. 如果适用,添加测试
1. 运行测试和梳理: `uv run pytest && uv run ruff check`
1. 提交拉取请求
## 资源
- [Statsig文档](https://docs.statsig.com)
- [Statsig控制台API](https://docs.statsig.com/console-api/all-endpoints-generated)
- [模型上下文协议](https://github.com/modelcontextprotocol/python-sdk)
- [紫外线文件](https://docs.astral.sh/uv/)