内容
UiPath 工程 MCP
自定义 **.NET 8** 模型上下文协议(MCP,允许客户端(Microsoft 365 Copilot、M、Claude 等)通过 HTTP 分析Path RPA 项目,并通过 **Microsoft Dev Tunnel** 对外公开。
这是 **MVP / POC(v4)** 里程碑。已实现 11 种工具:
| 工具 ||------|--------------|
| `analyze_project 解析 `project.json` 和每个 `.x 工作流(参数、变量、活动、try/catch、调用、日志消息),返回具有风险(循环、孤立工作流)的结构化 JSON。 |
| `validate_project` | 运行 `uip.exe`(`restore` / `analyze`pack`)并返回每步`executed` / `success` / `errors` / `warnings`)以及建议。 |
| `explain_workflow` | 返回单个工作流的结构化分解:参数、变量、活动大纲、异常处理程序、调用工作流消息。 |
generate_documentation` | 返回整个项目的确定性结构化文档数据:元数据、工作流摘要、依赖图(边、循环、孤立节点)、风险。 |
_repository` | 搜索 GitLab已配置的项目(需要 `Git 配置部分;令牌从不返回 `create_work | 从 `{ title, description, labels 列表创建 GitLab 问题/工作项,返回创建的URL 和每个项目的失败情况。 |
| `create_project` | 通过 ` r` 搭建新的 UiPath 项目(需要主机上安装 UiPath CLI RPA 工具)。通过检查创建的文件来的部分成功情况| `add_xaml_workflow`空白 `.xaml` 工作流添加到现有项目,具有正确的 `x:Class` 命名、分隔符 → 下划线)。 |
| `write_workflow_file` | 在或完全xaml` 或` 文件,者提供的 内容(扩展名允许列表径转义| `edit_workflow_activity` |级 XAML中插入活动片段,替换或删除通过 `DisplayName` 定位的活动(可选 `activityType`义)。保留片段理解未 WF 活动和 `ui:` / `x:` 前缀。 `add_c` | 添加 Coded Workflow `.cs继承 ``, `[Workflow]` 入口方法,在 `project.json` `entryPoints` 中注册)或普通编码源文件。 |
---
## 1. 前提条件
- Windows
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
- UiPath CLI(`uip.exe`)在 ` 上(仅 `validate_project` 需要)
- UiPath CLI工具用于 `create_project`:` tools install @uipath/rpa-tool (文件创作工具 `add_xaml`、`write_workflow_file`、`add_coded_workflow`、`edit_workflow 无需任何 CLI 即可工作)
- Dev Tunnel CLI](https://learn.microsoft.com/azure/developer/dev-t-started) (`devtunnel`)
检查您的:
```powershell
dotnet --version # 预期 8.x
uip --version # UiPath CLI
devtunnel --version
```
---
## 2. 配置允许的项目根目录
编辑 `src/UiPath.Engineering.Mcp.Server/appsettings.json` 并Projects:AllowedRoots`
您的 UiPath 项目的文件根目录 **内部** 的路径才能被分析和验证防护)。示例:
"Projects": {
AllowedRoots": [
"C:/Users/viniciusar/Documents/latam_re "C:/Users/viniciusaraujo/Documents/uipath"
]
}
PathCli:Include` 默认情况下为 `(原始 CLI 控制台)。
`appsettings.json` 在本地调试时将其打开。
---
## 3. 在本地构建和运行
最快捷的方式 — 使用帮助恢复、构建、测试并检查 /health):
./scripts/run-local.ps1 # 添加 -SkipTests 以跳过测试运行
```
或手动执行:
```powershell
cd UiPathEngineeringMCP
dotnet restore
dotnet build
dotnet run --project src/UiPath.Engineering.Mcp.Server
```
服务器监听 `http://localhost:5000`。
验证端点:
```powershell
# 健康检查 -> 应返回 200 "Healthy"
Invoke-WebRequestlocalhost:5000/health
# MCP(可流式 HTTP)端点位于 /sse的最快功能测试的 MCP Inspector:
npx @modelcontextprotocol/inspector
# 连接到:http://localhost:5000/sse (传输:流式 HTTP)
# 您应该看到 analyze_project、validate_project、explain_workflow、
# generate_documentation、search_repository 和 create_work_items 已列出。
```
---
## 4. 通过 Microsoft Dev Tunnel 公开
最快捷的方式 — 使用帮助脚本(幂等创建 + 托管,打印公共 URL):
```powershell
./scripts/setup-devtunnel.ps1 -Anonymous # 匿名访问仅适用于本地测试
```
或手动执行:
```powershelltunnel user login
create uipath-mcp
devtunnel port create uipath-mcp --port 5000 --protocol http
devtunnel host uipath-mcp
```
Dev Tunnel 打印一个公共 HTTPS URL,例如 `https://<id>-5000.devtunnels.ms`。
在另一个终端中保持 `dotnet run` 运行,并在另一个终端中运行 `devtunnel host隧道验证:
Invoke-WebRequest https://<id>-5000unnels.ms/health
```
您的客户端端点是https://<id>-5000.devtunnels.ms/sse`
> 对于初始测试,允许 **匿名** 隧道访问。对于生产环境,请在 Copilot 注册之前切换到
> Entra ID 或 Dev Tunnel 访问控制。
---
## 5. 在 Microsoft 365 Copilot 中注册
- **名称:** Ui MCP
- **端点:** `https://<id>-5000.dev.ms/sse`
- **工具:** `analyze_project_project`、`explain_workflow`、`generate_document、`search_repository`、`create_work_items`、`create_project_xaml_workflowwrite_workflow_file`_coded_workflow`、`edit_workflow_activity`
---
## 5b. 运行测试
```powershell
dotnet test
```
`tests/` 文件夹包含三个 xUnit 项目: 项目 | 涵盖内容 |
|---------|--------|
|Path.Engineering.Mcp.Core.Tests` | `project.json、`ProjectModelBuilderXamlWorkflowParser`(参数/变量/try-catch/调用/日志消息,格式aml),`DependencyGraphBuilder`(链、循环、节点),XAML/C# 文件模板(x:Class 命名,命名空间清理)。 |
| `UiPath.Engineering.Mcp.Providers.Tests` | 路径允许列表(根/子允许,兄弟前缀和无关拒绝),文件系统写入保护(写入允许根目录外部会抛出),`.xaml` 发现跳过 `bin` / `obj` / `.git`,`GetDirectoryTree`(深度/忽略/缺少目录),`UiPathCliOutputParser`(分析器/NuGet/回退格式),`UiPathCliProvider` 每步结果和缺少 `uip.exe` 错误,`GitStatusParser`(瓷器/超前-落后/非仓库),`GitLabProvider`(搜索/创建,令牌从不显示)。 |
| `UiPath.Engineering.Mcp.Tools.Tests` | 所有 11 种工具:不允许路径,找不到 `project.json`,正常运行,验证输出形状,每步,工作流未找到,解析错误显示,GitLab 搜索/创建形状,创作保护(路径转义,扩展名允许列表,现有文件),编码工作流入口点注册,`uip rpa init` 参数形状 + 部分成功处理,活动级编辑(插入第一/最后,替换,删除,模糊目标和无效片段错误),以及结构化错误传播(无原始 |
测试使用手工编写造对象(无 Moq),因此没有额外的运行时。
## 6. 项目布局
```
src/
UiPath.Engineering.Mcp.Server/ # ASP.NET 托管:DI、配置、/health、/sse (MapMcp)
UiPath.Engineering.Mcp.Core/ # 模型、配置选项、 XAML 解析、依赖图
UiPath.Mcp.Providers/ 文件系统 + UiPath CLI 提供程序(结构化解析器)
UiPath.Engineering.Mcp.To # [Mcp] 类(分析解释/文档/## 7 / 已知限制()
- 创作工具(`create_project`aml_workflow`_workflow_file` `add_coded_workedit_workflow_activity`)**写入磁盘** — 它们仅限于 `Projects:AllowedRoots拒绝目标项目外部的路径转义,并且只接受
`.xaml`/`.cs` 内容。
`create_project` 将脚手架uip rpa init`(文件从不;
`uip rpa init` 记录通过检查创建的文件来检测。
- `edit` 通过 `DisplayName` 匹配目标活动,区分大小写);
当多个活动时,编辑,并且必须传递 `activityType` 来消除歧义。
插入的片段会以匹配容器;文件的其余部分按字节- `add_coded_workflow` 在 `project.json` `entryPoints` 中使用生成的 GUID 注册编码工作流;
普通源文件则不会注册。
- 发布/部署到 Orchestrator (`uip solution publish/deploy`) 是一个单独的未来阶段。
- `analyze_project` 深度解析 `.xaml` 工作流(参数、变量、活动大纲、
atch、调用、包括项目文件夹结构,并将循环/工作流标记为风险。
项目模型缓存在请求之间(指纹:文件数量 + 最新写入时间)。
- `validate_project` 需要 `uip.exe`;在非 Windows / 缺失 CLI 上,它返回结构化错误而不是崩溃。
- `/sse` 路径提供 **Streamable HTTP** 传输(不是传统 SSE);名称仅保留以匹配 Copilot 注册文档。
- PowerShell 提供程序是一个计划阶段,尚未实现。