Infor Rpa
БесплатноНе проверенEnables Claude Code to understand, debug, edit, and build Infor RPA Studio 2026.x workflows and project manifests using a reflected activity oracle and validati
Описание
Enables Claude Code to understand, debug, edit, and build Infor RPA Studio 2026.x workflows and project manifests using a reflected activity oracle and validation engine.
README
Infor Claude Code Platform Python FastMCP License Status
A production-grade Claude Code skill for the full Infor RPA Studio 2026.x development lifecycle — understand, debug, edit, and build .xaml workflows and project.json manifests, grounded in a real installed Studio instance and a reflected 182-activity oracle.
Table of Contents
- Overview
- Requirements
- MCP Local Setup
- Skills & Capabilities
- What This Skill Covers
- MCP Server Capabilities
- Project Structure
- Getting Started
- Validation Engine
- Guardrails
- Contributing
Overview
infor-rpa-dev consolidates three sources into a single authoritative skill:
| Source | Contribution |
|---|---|
infor-rpa-codegen (Claude skill) |
Generation patterns, Build Gate loop |
Kiro-Infor-RPA-Kit |
Validation linter, reference project |
| Live Studio 2026.04.1 install | DLL-reflected activity oracle, manifest boilerplate |
All activity names, namespaces, property types, API endpoints, and XAML patterns are looked up — never guessed. The linter enforces 25+ load traps and is calibrated to zero ERRORs on the bundled reference project.
Requirements
- OS: Windows 10/11
- Infor RPA Studio: 2026.x installed under
C:\Program Files\Infor\RPA - Claude Code: Latest CLI version
- Python: 3.8+ on
PATH - fastmcp:
==2.14.7(pinned — 3.x is a breaking rewrite)
pip install "fastmcp==2.14.7"
Version lock: Do not upgrade
fastmcpbeyond2.x.fastmcp 3.xdropped theFastMCPserver class and is a different product.mcp-atlassianalso requiresfastmcp<2.15.0.
MCP Local Setup
⚠️ This repo ships with one developer's machine baked into it. The registration examples in earlier versions of this README (and the
sourceFiles[].filePathentries insideassets/studio-reference-project/project.json) point atC:\Users\hthotapalli\...— that's the original author's Windows profile, not a placeholder. Anywhere you seehthotapallior<username>below, replace it with your own Windows username (or better, use the full path to wherever you cloned this repo — see step 2). Theproject.jsonsample paths don't need manual fixing: Studio rewritesfilePathitself the next time it saves that project, and the skill only ever reads that file for its namespace/assembly boilerplate, never for a literal path.
1. Clone this repo somewhere stable. Any folder works — the server resolves its own asset paths
relative to mcp-server/server.py (SKILL_DIR = Path(__file__).resolve().parent.parent), so nothing is
hardcoded to .kiro\skills\infor-rpa-dev. That's just the conventional install location Kiro's skill
loader expects; a plain clone anywhere is fine as long as the args path below matches it.
git clone <this-repo-url> C:\Users\<your-username>\.kiro\skills\infor-rpa-dev
2. Install the pinned MCP dependency (system Python is fine — no venv required):
pip install "fastmcp==2.14.7"
3. Register the server in ~/.kiro/settings/mcp.json (create the file if it doesn't exist yet).
Point command at your Python interpreter and args at the absolute path to server.py inside
your clone from step 1:
{
"infor-rpa-mcp": {
"command": "C:\\Users\\<your-username>\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"args": ["C:\\Users\\<your-username>\\.kiro\\skills\\infor-rpa-dev\\mcp-server\\server.py"]
}
}
command can also just be "python" if it's already on PATH — use the full python.exe path only if
you have multiple Python installs and need to pin one.
4. Verify it starts clean. Run the server directly once to catch import/path errors before Kiro does:
python C:\Users\<your-username>\.kiro\skills\infor-rpa-dev\mcp-server\server.py
It will sit idle waiting for a stdio client (that's expected for an MCP server) — no traceback means the
oracle/asset paths resolved correctly. Ctrl+C to exit, then restart Kiro / Claude Code so it picks up
the new mcp.json entry.
5. Smoke-test from a chat session. Once registered, ask the assistant something that forces a tool call, e.g. "use infor-rpa-mcp to search_activities for 'send email'" — a JSON result back means the tools, the oracle, and the API-spec index are all wired correctly.
Troubleshooting:
ModuleNotFoundError: fastmcp→ thepip installabove targeted a different Python thancommandpoints to; check withpython -m pip show fastmcp.- Server registers but every tool call errors →
argspath doesn't match where you actually cloned the repo, or has a typo in the username segment. fastmcpimport works but behaves unexpectedly → you're onfastmcp>=3.0; reinstall the pinned2.14.7(see Requirements above).- This server is fully local and offline — it only ever reads files under this repo's
assets/andreferences/. It's a different, separate thing from the optional Atlassian MCP (mcp-atlassian) the skill also reaches for live Confluence/Jira grounding (§6 ofSKILL.md) — that one talks to your Atlassian tenant over the network and is registered independently.
Skills & Capabilities
The skill operates in five distinct modes, each with its own scope and safety gate.
Mode 1 — UNDERSTAND / REVIEW (read-only)
Trace an existing RPA project without writing anything:
- Map
project.json → "main"entry workflow → all invoked sub-workflows - Audit argument/data flow, integration boundaries, serverless agent contracts
- Detect broken
InvokeWorkflowreferences, type mismatches, serverless violations - Report structure, naming, and logging standard gaps
No Build Gate required. No XAML is written.
Mode 2 — DEBUG (read-only analysis)
Diagnose Studio load errors, runtime failures, and behavioral bugs:
- Match the symptom (Studio error text, log line, wrong output) to the root cause
- Cross-reference
references/known-load-errors.md(18 KB, 25+ categorized load traps) - Identify: namespace mismatch,
Nothing/empty expression, wrong VB.NET API, bad property type - Propose the minimal fix and validate it via the linter before presenting
No Build Gate required. Analysis only.
Mode 3 — EDIT / EXTEND / CUSTOMIZE (writes XAML)
Modify existing workflows to meet new requirements:
- Add/remove activities, adjust logic, refactor, optimize, rename arguments
- Preserve the namespace block, naming conventions, and logging standard
- Touch the minimum number of files; append to
sourceFileswhen adding workflows - Validate every touched file to zero ERRORs before presenting
Build Gate required — requirements confirmed on paper before XAML is written.
Mode 4 — BUILD / SCAFFOLD (full project generation)
Create a new RPA project from scratch:
- Scaffold the project folder:
{Name}_DDMMYYYY_RpaDevunderDesktop\InforRPA_Projects - Clone
project.jsonmanifest from the golden reference (2026.04.1 canonical) - Author entry workflow + sub-workflows using the activity oracle and XAML patterns
- Every activity property confirmed via MCP before use; every OutArgument defensively initialized
Build Gate required — happy path + every failure path mapped on paper first.
Mode 5 — VERIFY (Generate → Validate → Fix loop)
Mandatory post-generation quality gate:
- Run
validate_rpa_project(path)orvalidate_xaml_file(path)via MCP - Fix every
ERROR-level issue;WARNING/STYLEare advisory - Re-run until the linter exits
0 - Only files that pass may be presented to the user
All previous modes feed into Verify. No generated workflow ships without a clean linter pass.
Knowledge Base (24 Reference Files, ~250 KB)
| Reference File | Contents |
|---|---|
activity-catalogue.md |
45 KB — every activity + exact property signatures |
ionapi-endpoint-guide.md |
47 KB — 466 ION API endpoints indexed by intent |
xaml-structure.md |
23 KB — namespace block, assemblies, ViewState, root boilerplate |
best-practices.md |
25 KB — error handling, scoping, defensive init patterns |
known-load-errors.md |
18 KB — load trap symptom → cause → fix |
rpa-xaml-authoring-patterns.md |
17 KB — manifest/namespace block, ION API patterns |
studio-golden-skeletons.md |
17 KB — ground truth from real Studio output |
activity-signatures.md |
24 KB — per-property .NET types across all activities |
rpa-xaml-type-validation.md |
15 KB — WF4 type system, per-property validation rules |
lnip-patterns.md |
14 KB — LN Invoice Processing domain patterns |
project-structure.md |
14 KB — multi-file layout, dependencies, argumentsMap |
project-json-template.md |
11 KB — failproof manifest creation (Method A & B) |
naming-conventions.md |
11 KB — file/arg/var/DisplayName standards |
ion-api-patterns.md |
12 KB — .ReadAsJson chains, IDM, Review Center, IDP |
expression-patterns.md |
9.8 KB — VB.NET idioms, LINQ, JSON, OData |
assembly-prefix-map.md |
6.3 KB — full namespace/prefix/assembly binding surface |
rpa-graph-azure-oauth.md |
8.2 KB — Microsoft Graph email/file auth |
rpa-bot-review-center.md |
11 KB — Review Center lifecycle |
log-format-standard.md |
7.8 KB — standard log line/section formatting |
rpa-studio-activities-2026.md |
19 KB — broad activity reference + serverless matrix |
data-flow-patterns.md |
6.2 KB — InvokeWorkflow data flow |
mcp-knowledge-sourcing.md |
5.3 KB — live Confluence/Jira sourcing guardrails |
docs-index.md |
2.3 KB — pointers to official Infor 2026 PDFs |
What This Skill Covers
High-level summary only — every claim below is backed by a generated/verified reference file, linked inline, so this README doesn't drift out of sync with the actual oracle.
Activity coverage
The oracle (assets/activity-types.json, reflected off the installed DLLs) currently covers 182
activities across 22 DLLs, spanning every Infor.Activities.* pack plus the standard WF4 control-flow
set (Sequence, If, ForEach, TryCatch, While, DoWhile, Switch, Flowchart, StateMachine, …):
| Pack | ~# activities | Serverless-safe? | Covers |
|---|---|---|---|
Infor.Activities.Sys |
48 | ✅ | Logging, file/JSON/string utils, dialogs |
Infor.Activities.Web |
34 | ❌ (UI automation) | Browser automation, selectors |
Infor.Activities.Email |
23 | ✅ Graph variants only | Read/send/move/download Outlook mail |
Infor.Activities.Desktop |
13 | ❌ (UI automation) | Desktop/UI automation |
Infor.Activities.Excel |
13 | ❌ (local COM) | Local .xlsx read/write |
Infor.Activities.ExcelOnline |
13 | ✅ | Excel via Graph/OneDrive |
Infor.Activities.OneDrive |
11 | ✅ | OneDrive/SharePoint files |
Infor.Activities.SharePointList |
6 | ✅ | SharePoint list CRUD |
Infor.Activities.Datatable |
5 | ✅ | DataTable build/filter/iterate |
Infor.Activities.Cloud |
4 | ✅ | Cloud storage/object ops |
Infor.Activities.Workflow, .IONAPI, .HTTPRequests, .OCR, .Debug, .AI |
1–few each | mostly ✅ | InvokeWorkflow, IONAPIRequestWizard, HTTPRequestWizard, OCR/IDP, debug helpers, GenAI (runtime-only) |
Infor.RPA.* support packs (Utilities, OCR, Security, Commons, Forms, Utility.Editor) |
— | referenced, not dropped | ResponseObject/.ReadAsJson(), credential vault, shared runtime types |
Full pack → namespace → prefix → serverless-safety matrix: references/assembly-prefix-map.md. Full
per-activity prose + usage patterns: references/activity-catalogue.md (1200+ lines, includes the
standard WF4 activities). Custom/tenant activity packs (e.g. a bespoke Infor.Activities.QueueAPI) are
not catalogued — the skill confirms those from the installed DLL or its source instead of guessing.
Property/type coverage
Every activity property in the oracle carries its exact reflected .NET type, not a guess. The two categories that matter for whether a XAML file loads in Studio at all:
- Argument-wrapped properties —
InArgument<T>/OutArgument<T>/InOutArgument<T>— these can be bound to a[variable]expression. Covers everything from primitives (String,Int32,Boolean) toiru:ResponseObject(API responses),njl:JObject/JArray/JToken(JSON),scg:Dictionary/IDictionary(config +InvokeWorkflowarguments),List(Of String)(email recipients), ands:String[](pipe-split values). - Plain (non-Argument) properties — a bare
Boolean/String/Int32on the activity itself (e.g.MarkAsRead,ContinueOnError) — these accept a literal only (True,"text",42); binding one to[variable]is a guaranteed Studio load failure, and the linter (below) catches it for every property in the oracle, not just a hand-picked list.
Full per-property type tables and the WF4 type-system rules (array syntax, IDictionary vs Dictionary,
etc.): references/rpa-xaml-type-validation.md. Exact signatures for every reflected class:
references/activity-signatures.md and assets/activity-types.json directly.
How MCP works
The MCP server (mcp-server/server.py) is a FastMCP 2.14.7 stdio server. Kiro (or Claude Code)
launches it as a subprocess per the config in MCP Local Setup; the assistant then
calls its tools mid-conversation instead of trusting its own memory of an activity name or endpoint. Two
things worth being explicit about:
- It's 100% local and read-only. Every tool call reads a bundled file under this repo's
assets/orreferences/—activity-types.jsonfor the oracle,api-specs/*.jsonfor endpoints,known-load-errors.mdfor error lookups. No network call happens insideserver.py. - It's a different thing from the Atlassian MCP. The skill separately reaches for a live
mcp-atlassian(orclaude_ai_Atlassian) server for tenant-specific Confluence/Jira grounding (references/mcp-knowledge-sourcing.md) — that one does talk to your Atlassian instance over the network and is registered independently ofinfor-rpa-mcp. Don't confuse the two when troubleshooting connectivity.
The full tool list with signatures and example calls is next, in MCP Server Capabilities.
MCP Server Capabilities
The MCP server (mcp-server/server.py) is a FastMCP 2.14.7 instance registered in Kiro as
infor-rpa-mcp. It exposes 11 tools — 3 activity-oracle lookups, 3 validation wrappers, 3 project
utilities, an API-endpoint search, and an error-symptom lookup. All reads are from bundled assets — no
network calls. See MCP Local Setup for how to register it.
Tools
lookup_activity(class_name: str) → dict
Returns exact property signatures for one Infor activity class from the 182-activity DLL-reflected oracle. Accepts fully-qualified or short class name. Falls back across activity-types.json → activity-types-supplemental.json → activity-type-overrides.json. Returns a xamlPattern field with a minimal valid XAML skeleton.
lookup_activity("IONAPIRequestWizard")
# → { "class": "Infor.Activities.IONAPI.IONAPIRequestWizard",
# "properties": { "ServiceName": "InArgument<String>", ... },
# "xamlPattern": "<ionapi:IONAPIRequestWizard ...>" }
lookup_activities(class_names: list[str]) → list[dict]
Batch variant of lookup_activity. Resolves multiple activity classes in one call.
search_activities(query: str, limit: int = 20) → list[dict]
Keyword search across the full 182-activity registry. Returns matching activities with class name and property signatures.
search_activities("send email outlook", limit=5)
validate_xaml_file(file_path: str) → dict
Validates a single .xaml workflow or project.json against all 25+ linter rules. Returns:
{
"passed": true,
"errors": [],
"warnings": ["..."],
"style": ["..."]
}
validate_rpa_project(project_path: str) → dict
Validates every .xaml file and project.json in a project directory. Returns per-file results and an aggregate passed boolean.
validate_xaml_batch(file_paths: list[str]) → list[dict]
Validates an explicit list of .xaml / project.json files in one MCP call.
search_api_endpoint(query: str, limit: int = 10) → list[dict]
Searches 466 Infor ION API endpoints across 25 bundled OpenAPI specs. Returns matching endpoints with service, HTTP method, path, and summary.
search_api_endpoint("purchase order approve", limit=5)
# → [{ "service": "LN", "method": "POST", "path": "/PurchaseOrders/{id}/approve", ... }]
Covered Services (25 OpenAPI specs):
AIDataModeling · ColemanAIPlatform · DataLake · IDM_Api · InfoRpa · ION_Pulse · LN_OData · RPAReviewCenter · SessionService · and 16 more.
lookup_error(error_text: str) → dict
Searches the known-load-errors catalogue for matching symptoms and returns up to 3 sections with cause and fix.
lookup_error("The type 'Infor.Activities.Sys.Activities.LogExecutionMessage' was not found")
get_studio_version() → dict
Detects the installed Infor RPA Studio version by reading the newest project.json under %LOCALAPPDATA%\InforRPA. Used only to clone the studioVersion value into new manifests.
create_project_folder(project_name: str, base_path: str = "") → dict
Creates a new RPA project folder following the standard naming convention:
{project_name}_DDMMYYYY_RpaDev
# e.g. ION_PO_Fetch_30062026_RpaDev
Defaults to Desktop\InforRPA_Projects when base_path is not provided.
read_rpa_project(project_path: str) → dict
Reads and parses project.json from a project directory. Extracts studioVersion, dependencies, packages, and sourceFiles for manifest cloning.
Project Structure
infor-rpa-dev/
├── SKILL.md # 33 KB — skill definition, guardrails, reference map
├── mcp-server/
│ └── server.py # 13 KB — FastMCP server (11 tools + 5 resources)
├── assets/
│ ├── activity-types.json # 163 KB — 182 activities, DLL-reflected oracle
│ ├── activity-types-supplemental.json
│ ├── activity-type-overrides.json
│ ├── api-specs/ # 25 OpenAPI specs (~466 ION API endpoints)
│ ├── studio-reference-project/ # Real loadable Studio 2026.04.1 project (11 .xaml + manifest)
│ ├── studio-templates/ # Empty workflow shells (Sequence, Flowchart, StateMachine)
│ └── lnip/ # LN Invoice Processing domain patterns
├── references/ # 24 markdown files, ~250 KB
│ └── ...
├── scripts/
│ ├── validate_rpa.py # 30 KB — heuristic linter (25+ load trap rules)
│ ├── extract_signatures.py # Regenerate activity-signatures.md from reference project
│ ├── extract_dll_types.ps1 # Refresh oracle from installed DLLs (post Studio upgrade)
│ ├── extract_api_index.py # Regenerate ionapi-endpoint-guide.md
│ └── test_linter_coverage.py # Verify linter correctness
└── .claude/
└── settings.local.json # Claude Code permission config
Getting Started
1. Register the MCP Server
Follow MCP Local Setup above — clone the repo, pip install "fastmcp==2.14.7", and
add an infor-rpa-mcp entry to ~/.kiro/settings/mcp.json pointing at your clone (not
hthotapalli's).
2. Open a Project in Claude Code
> Understand this RPA project: C:\InforRPA_Projects\MyBot_30062026_RpaDev
3. Build a New Bot
> Build an RPA bot that fetches open POs from ION API and logs them to IDM
The skill will:
- Call
create_project_folderto scaffold the folder - Run the Build Gate — map every workflow on paper before writing XAML
- Look up every activity via
lookup_activitybefore using it - Search
search_api_endpointfor the right ION API paths - Author XAML grounded in the oracle and golden skeletons
- Call
validate_rpa_projectand fix all ERRORs before presenting
Validation Engine
scripts/validate_rpa.py is a 30 KB heuristic linter calibrated to zero ERRORs on the bundled reference project. It enforces:
| Category | Rules |
|---|---|
| Root structure | x:Class must be RehostedWorkflowDesigner.Workflow; root must be Activity |
| Namespace integrity | All used prefixes declared; no hallucinated assemblies (Infor.RPA.IONAPI, etc.) |
| IdRef / ViewState | No duplicate IdRefs; no orphaned ViewStateData entries |
| VisualBasicSettings | Rejects the fatal <mva:VisualBasicSettings> block form |
| ActivityAction wrappers | DelegateInArgument must be inside ActivityAction.Argument on TryCatch/ForEach |
| Bare List |
Uninitialized List properties flagged via type metadata |
| LogExecutionMessage | Rejects IsError= attribute and expression-based LogType |
| InvokeWorkflow | Rejects nested <iaw:InvokeWorkflow.Arguments> form; OutputArguments must bind IDictionary |
| Type traps | Paren array syntax x:String(); .Get(Nothing) C# API in VB; vbCrLf without import |
| Assign activity | Rejects empty Value="" and empty <InArgument/> bodies |
| project.json | Schema, core keys, name field (no brackets), studioVersion format, dependency whitelist |
Exit codes: 0 = clean (no ERRORs); 1 = ERRORs present. WARNINGs and STYLE findings never fail the build.
Guardrails
- No hallucination: Every activity class, namespace, property, and endpoint is looked up via MCP or a reference file — never generated from memory.
- Build Gate mandatory: No XAML or
project.jsonis written before requirements are confirmed on paper (happy path + every failure path). - Zero ERRORs required: Generated workflows are never presented until
validate_rpa_projectexits0. - Platform isolation: Strictly Infor RPA Studio 2026.x only — no UiPath, Power Automate, Blue Prism, or Automation Anywhere patterns.
- Defensive init: All
OutArgumentvariables are initialized to safe defaults before the firstTryCatch. - Minimal footprint: Edit/Extend mode touches the minimum number of files; never rewrites unrelated workflows.
Contributing
- Refresh the activity oracle after a Studio upgrade:
.\scripts\extract_dll_types.ps1 - Verify the linter still passes on the reference project:
python scripts/test_linter_coverage.py python scripts/validate_rpa.py assets/studio-reference-project - Add new API specs to
assets/api-specs/and regenerate the endpoint guide:python scripts/extract_api_index.py
Author
Harshavardhan Reddy Thotapalli
[email protected]
Infor — RPA Platform Engineering
Grounded in Infor RPA Studio 2026.04.1 · Validated against production serverless agents · fastmcp 2.14.7
Установка Infor Rpa
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/raghavenderhariharan/RPA_MCPFAQ
Infor Rpa MCP бесплатный?
Да, Infor Rpa MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Infor Rpa?
Нет, Infor Rpa работает без API-ключей и переменных окружения.
Infor Rpa — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Infor Rpa в Claude Desktop, Claude Code или Cursor?
Открой Infor Rpa на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Infor Rpa with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
