Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

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

GitHubEmbed

Описание

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

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 fastmcp beyond 2.x. fastmcp 3.x dropped the FastMCP server class and is a different product. mcp-atlassian also requires fastmcp<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[].filePath entries inside assets/studio-reference-project/project.json) point at C:\Users\hthotapalli\... — that's the original author's Windows profile, not a placeholder. Anywhere you see hthotapalli or <username> below, replace it with your own Windows username (or better, use the full path to wherever you cloned this repo — see step 2). The project.json sample paths don't need manual fixing: Studio rewrites filePath itself 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 → the pip install above targeted a different Python than command points to; check with python -m pip show fastmcp.
  • Server registers but every tool call errors → args path doesn't match where you actually cloned the repo, or has a typo in the username segment.
  • fastmcp import works but behaves unexpectedly → you're on fastmcp>=3.0; reinstall the pinned 2.14.7 (see Requirements above).
  • This server is fully local and offline — it only ever reads files under this repo's assets/ and references/. It's a different, separate thing from the optional Atlassian MCP (mcp-atlassian) the skill also reaches for live Confluence/Jira grounding (§6 of SKILL.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 InvokeWorkflow references, 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 sourceFiles when 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_RpaDev under Desktop\InforRPA_Projects
  • Clone project.json manifest 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) or validate_xaml_file(path) via MCP
  • Fix every ERROR-level issue; WARNING/STYLE are 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 propertiesInArgument<T> / OutArgument<T> / InOutArgument<T> — these can be bound to a [variable] expression. Covers everything from primitives (String, Int32, Boolean) to iru:ResponseObject (API responses), njl:JObject/JArray/JToken (JSON), scg:Dictionary/IDictionary (config + InvokeWorkflow arguments), List(Of String) (email recipients), and s:String[] (pipe-split values).
  • Plain (non-Argument) properties — a bare Boolean/String/Int32 on 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:

  1. It's 100% local and read-only. Every tool call reads a bundled file under this repo's assets/ or references/activity-types.json for the oracle, api-specs/*.json for endpoints, known-load-errors.md for error lookups. No network call happens inside server.py.
  2. It's a different thing from the Atlassian MCP. The skill separately reaches for a live mcp-atlassian (or claude_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 of infor-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.jsonactivity-types-supplemental.jsonactivity-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:

  1. Call create_project_folder to scaffold the folder
  2. Run the Build Gate — map every workflow on paper before writing XAML
  3. Look up every activity via lookup_activity before using it
  4. Search search_api_endpoint for the right ION API paths
  5. Author XAML grounded in the oracle and golden skeletons
  6. Call validate_rpa_project and 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 properties 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.json is written before requirements are confirmed on paper (happy path + every failure path).
  • Zero ERRORs required: Generated workflows are never presented until validate_rpa_project exits 0.
  • Platform isolation: Strictly Infor RPA Studio 2026.x only — no UiPath, Power Automate, Blue Prism, or Automation Anywhere patterns.
  • Defensive init: All OutArgument variables are initialized to safe defaults before the first TryCatch.
  • Minimal footprint: Edit/Extend mode touches the minimum number of files; never rewrites unrelated workflows.

Contributing

  1. Refresh the activity oracle after a Studio upgrade:
    .\scripts\extract_dll_types.ps1
    
  2. Verify the linter still passes on the reference project:
    python scripts/test_linter_coverage.py
    python scripts/validate_rpa.py assets/studio-reference-project
    
  3. 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

from github.com/raghavenderhariharan/RPA_MCP

Установка Infor Rpa

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/raghavenderhariharan/RPA_MCP

FAQ

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

Compare Infor Rpa with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development