Workiva IGAM开发工作区
此工作区包含 GitHub MCP服务器 用于GitHub集成和 Python脚本 用于Workiva身份、治理和访问管理(IGAM)报告。
项目
1.GitHub MCP服务器(TypeScript)
提供全面GitHub集成功能的模型上下文协议(MCP)服务器。该服务器允许AI助手和其他MCP客户端通过标准化的界面与GitHub存储库、问题、拉取请求等进行交互。
2.Workiva IGAM Python脚本
用于检索、处理和报告Workiva用户帐户数据以进行合规性和分析的Python脚本。
______________________________________________________________________
GitHub MCP服务器
提供全面GitHub集成功能的模型上下文协议(MCP)服务器。该服务器允许AI助手和其他MCP客户端通过标准化的界面与GitHub存储库、问题、拉取请求等进行交互。
特性
库管理
- 列出存储库:列出用户或组织的存储库
- 获取存储库:获取特定存储库的详细信息
- 搜索存储库:在GitHub上搜索存储库
问题管理
- 列出问题:使用筛选选项列出存储库的问题
- 创建问题:使用标签和指定人员创建新问题
- 更新问题:更新现有问题(标题、正文、状态、标签、受让人)
- 搜索问题:在GitHub上搜索问题并拉取请求
拉取请求管理
- 列出拉取请求:列出存储库的拉取请求
- 创建pull请求:使用草稿支持创建新的拉取请求
文件操作
- 获取文件内容:从存储库检索文件内容或目录列表
用户信息
- 获取用户:获取GitHub用户的详细信息
先决条件
- Node.js 16或更高版本
- TypeScript
- GitHub个人访问令牌
安装
- 克隆此存储库:
git clone
cd github-mcp-server- 安装依赖项:
npm install- 构建项目:
npm run build配置
GitHub代币
您需要一个GitHub个人访问令牌才能使用此服务器。在以下位置创建一个: https://github.com/settings/tokens
根据您的用例,令牌需要以下作用域:
repo-完全控制私有存储库public_repo-访问公共存储库read:user-读取用户配置文件信息read:org-读取组织信息
环境变量
设置 GITHUB_TOKEN 环境变量:
窗户:
set GITHUB_TOKEN=your_github_token_herePowerShell:
$env:GITHUB_TOKEN="your_github_token_here"macOS/Linux:
export GITHUB_TOKEN=your_github_token_here用法
运行服务器
npm run start或者用于自动重建的开发:
npm run dev与Claude Desktop一起使用
- 更新您的Claude Desktop配置文件:
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
- 添加服务器配置:
{
"mcpServers": {
"github": {
"command": "node",
"args": ["C:\\absolute\\path\\to\\github-mcp-server\\build\\index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}- 重新启动克劳德桌面
与VS代码一起使用
该项目包括 .vscode/mcp.json 配置文件。更新 GITHUB_TOKEN 值,并使用VS Code的MCP扩展。
工具参考
存储库工具
列出存储库
列出用户或组织的存储库。
参数:
owner(string):用户名或组织名称type(可选):存储库类型筛选器(“全部”、“所有者”、“成员”)sort(可选):排序方式(“创建”、“更新”、“推送”、“full_name”)per_page(可选):每页结果数(最多100个)
获取存储库
获取特定存储库的详细信息。
参数:
owner(string):存储库所有者repo(string):存储库名称
搜索存储库
在GitHub上搜索存储库。
参数:
query(string):搜索查询sort(可选):排序字段(“星号”、“叉号”、“需要帮助的问题”、“已更新”)order(可选):排序顺序(“asc”、“desc”)per_page(可选):每页结果数(最多100个)
问题工具
列出问题
列出存储库的问题。
参数:
owner(string):存储库所有者repo(string):存储库名称state(可选):问题状态(“打开”、“关闭”、“全部”)labels(可选):逗号分隔的标签列表assignee(可选):受让人的用户名per_page(可选):每页结果数(最多100个)
创建问题
在存储库中创建新问题。
参数:
owner(string):存储库所有者repo(string):存储库名称title(string):发行标题body(可选):问题正文/描述labels(可选):标签名称数组assignees(可选):要分配的用户名数组
更新问题
更新现有问题。
参数:
owner(string):存储库所有者repo(string):存储库名称issue_number(number):发行号title(可选):新发行标题body(可选):新发行主体state(可选):新问题状态(“打开”、“关闭”)labels(可选):标签名称数组assignees(可选):要分配的用户名数组
拉取请求工具
列出拉取请求
列出存储库的拉取请求。
参数:
owner(string):存储库所有者repo(string):存储库名称state(可选):拉取请求状态(“打开”、“关闭”、“全部”)head(可选):按头部分支过滤base(可选):按基分支筛选per_page(可选):每页结果数(最多100个)
创建pull请求
创建新的pull请求。
参数:
owner(string):存储库所有者repo(string):存储库名称title(string):拉取请求标题head(string):总行名称base(string):基础分支名称body(可选):拉取请求正文/描述draft(可选):创建为草稿拉取请求
文件工具
获取文件内容
从存储库中获取文件的内容。
参数:
owner(string):存储库所有者repo(string):存储库名称path(string):存储库中的文件路径ref(可选):分支、标记或提交SHA
搜索工具
搜索问题
在GitHub上搜索问题并拉取请求。
参数:
query(string):搜索查询sort(可选):排序字段order(可选):排序顺序(“asc”、“desc”)per_page(可选):每页结果数(最多100个)
用户工具
获取用户
获取GitHub用户的信息。
参数:
username(string):GitHub用户名
示例用法
以下是您可以在GitHub MCP服务器上使用的一些示例查询:
- 列出存储库:“显示microsoft组织的存储库”
- 创建问题:“在myrepo中创建一个题为“需要修复Bug”的问题,标签为“Bug””
- 搜索存储库:“查找与机器学习相关的流行Python存储库”
- 获取文件内容:“显示来自microsoft/vcode主分支的README.md文件”
- 列出问题:“显示分配给某人的microsoft/typescript中的所有未解决问题”
错误处理
服务器实现了全面的错误处理:
- 发现GitHub API错误并返回描述性消息
- 速率限制处理得当
- 身份验证错误提供了明确的指导
- 所需参数的验证错误
安全考虑
- 永远不要在日志中公开您的GitHub令牌或将其提交给版本控制
- 使用环境变量进行令牌存储
- 服务器在进行API调用之前验证所有输入
- 设置令牌范围时遵循最小特权原则
发展
项目结构
src/
index.ts # Main MCP server implementation
.github/
copilot-instructions.md # Development guidelines
.vscode/
mcp.json # VS Code MCP configuration
build/ # Compiled JavaScript output
package.json # Project configuration
tsconfig.json # TypeScript configuration贡献
- 遵循中的编码指南
.github/copilot-instructions.md - 对所有代码使用TypeScript
- 对新工具实施适当的错误处理
- 为新功能添加全面的文档
- 使用各种GitHub存储库和场景进行测试
测试
通过运行服务器并使用各种工具对其进行测试:
# Set your GitHub token
export GITHUB_TOKEN=your_token_here
# Start the server
npm run start
# The server will listen on stdio for MCP protocol messages许可证
ISC许可证
______________________________________________________________________
Workiva IGAM Python脚本
这 python/ 该目录包含用于Workiva身份、治理和访问管理(IGAM)报告的Python脚本。
主要特点
- OAuth 2.0身份验证:使用客户端凭据流安全访问API
- 用户数据处理:检索和筛选Workiva用户帐户信息
- CSV报告生成:合规和分析的标准化报告
- 电子邮件通知:带附件的自动报告交付
- 数据可视化:角色分布图和分析
- 综合录井:用于故障排除的详细执行日志
快速开始
- 导航到Python目录:
cd python/- 安装依赖项:
pip install requests configparser- 配置应用程序:
cp config.ini.template config.ini
# Edit config.ini with your Workiva API credentials- 运行主脚本:
python W_IGAM_Request_new.py目录结构
python/
├── W_IGAM_Request_new.py # Main IGAM reporting script
├── config.example.ini # Configuration example template
├── config.ini.template # Configuration template
├── requirements.txt # Python dependencies
├── requirements-azure.txt # Azure-specific dependencies
├── README.md # Python scripts documentation
├── utils/ # Utility modules
│ ├── visualize_roles.py # Advanced role visualization
│ ├── simple_visualize_roles.py # Simple visualization
│ ├── data_validator.py # Data validation utilities
│ └── azure_config_loader.py # Azure configuration loader
└── tests/ # Test files
└── test_workiva_igam_integration.py # Integration tests配置模板
这 config/ 目录包含配置模板:
- MCP服务器配置:Claude Desktop和其他MCP客户端的模板
- Python 配置:IGAM脚本的示例配置文件
配置要求
创建一个 config.ini 使用您的Workiva API证书提交文件:
- API端点(token_url、users_url)
- OAuth客户端凭据(client_id、client_secret)
- 输出设置(目录、文件名)
- 电子邮件通知设置(可选)
安全说明:永远不要承诺实际 config.ini 使用真实凭据进行版本控制的文件。
有关详细文档,请参阅 python/README.md.
