Skip to main content
Glama
cmsappian123-bit

Appian MCP Server

Appian MCP Server

A Model Context Protocol (MCP) server for seamless integration with Appian APIs using Node.js.

Overview

This MCP server provides a standardized interface to interact with Appian applications, allowing AI applications to:

  • Query and manage records

  • Create, update, and delete records

  • Execute processes

  • Query reports

Related MCP server: YingDao RPA MCP Server

Features

  • Record Management: Get, create, update, and delete Appian records

  • Process Execution: Execute Appian processes with input parameters

  • Report Querying: Query Appian reports with filters

  • TypeScript Support: Built with TypeScript for type safety

  • Error Handling: Comprehensive error handling and logging

  • Configurable Authentication: Support for API keys and OAuth

Prerequisites

  • Node.js 16 or higher

  • npm or yarn

  • Appian configuration (tenant, credentials)

Installation

  1. Clone or navigate to the project directory

  2. Install dependencies:

npm install
  1. Set up environment variables:

cp .env.example .env
# Edit .env with your Appian credentials

Configuration

Environment Variables

  • APPIAN_TENANT: Your Appian tenant name (e.g., "mycompany")

  • APPIAN_API_KEY: API key for authentication (recommended)

  • APPIAN_CLIENT_ID: OAuth client ID (alternative authentication)

  • APPIAN_CLIENT_SECRET: OAuth client secret (alternative authentication)

  • APPIAN_BASE_URL: Custom Appian API base URL (optional)

MCP Configuration

The .vscode/mcp.json file configures the MCP server for use with LLM applications:

{
  "servers": {
    "appian-mcp-server": {
      "type": "stdio",
      "command": "node",
      "args": ["dist/index.js"]
    }
  }
}

Available Tools

get_records

Retrieve records from an Appian record type.

Parameters:

  • recordType (string, required): The name of the Appian record type

  • limit (integer, optional): Maximum number of records to return (default: 100)

  • offset (integer, optional): Number of records to skip for pagination (default: 0)

create_record

Create a new record in an Appian application.

Parameters:

  • recordType (string, required): The name of the Appian record type

  • data (object, required): The record data to create

update_record

Update an existing record.

Parameters:

  • recordType (string, required): The name of the Appian record type

  • recordId (string, required): The ID of the record to update

  • data (object, required): The fields to update

delete_record

Delete a record from an Appian application.

Parameters:

  • recordType (string, required): The name of the Appian record type

  • recordId (string, required): The ID of the record to delete

execute_process

Execute an Appian process.

Parameters:

  • processName (string, required): The name of the Appian process

  • inputs (object, optional): Input parameters for the process

query_report

Query an Appian report.

Parameters:

  • reportName (string, required): The name of the Appian report

  • filters (object, optional): Filters to apply to the report

Building

Build the TypeScript source to JavaScript:

npm run build

Development

For development with automatic compilation:

npm run watch

Then in another terminal, start the server:

npm start

Running the MCP Server

Direct Execution

npm run dev

In VS Code

  1. Ensure the project is built: npm run build

  2. Use the MCP inspector tool or connect through an LLM application

  3. The server will communicate via stdio

API Integration

The server uses axios for HTTP communication with Appian REST APIs. Update the appian-client.ts file to add additional Appian operations as needed.

Error Handling

The server includes comprehensive error handling for:

  • Network failures

  • Authentication errors

  • Invalid record types or IDs

  • API validation errors

Errors are returned in the MCP response format with detailed error messages.

Extending the Server

To add new Appian operations:

  1. Add a new method to AppianClient in src/appian-client.ts

  2. Add a new tool definition in the ListToolsRequestSchema handler in src/index.ts

  3. Add a new case in the CallToolRequestSchema handler to call your method

  4. Rebuild: npm run build

Security Considerations

  • Store API keys securely (use environment variables or secret management)

  • Never commit .env files to version control

  • Use HTTPS for all Appian API communication

  • Implement proper access controls in your LLM application

Troubleshooting

Connection Issues

  • Verify your APPIAN_TENANT is correct

  • Ensure your API key is valid and has necessary permissions

  • Check that your Appian instance is accessible from your network

Authentication Errors

  • Verify credentials in your .env file

  • Check that the API key hasn't expired

  • Confirm proper authentication method is configured

Build Errors

  • Ensure TypeScript is installed: npm install

  • Check for TypeScript compilation errors: npm run build

License

MIT

Resources

Available Tools

4 tools
create_labelling_requestB

Submits a completely populated multi-step Labelling Design Request payload directly into Appian to trigger validation and trial setup.

ParametersJSON Schema
NameRequiredDescriptionDefault
labellingRequestYesComprehensive hierarchical clinical labelling structured data payload.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions triggering validation and trial setup, indicating side effects, but does not specify if the operation is destructive, what happens on failure, or any required preconditions. Lack of detail on mutation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that effectively communicates the core purpose. It is front-loaded and wastes no words. Could include more detail on usage or outcome without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (nested object, no output schema, no annotations), the description is too minimal. It does not explain return values, error handling, typical usage flow, or integration with other tools. Missing important context for a complex submission tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100% with a single parameter. The schema description 'Comprehensive hierarchical clinical labelling structured data payload' is already provided. The tool description adds no additional semantic insight beyond what the schema offers. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (submits), the resource (Labelling Design Request payload), the destination (Appian), and the outcome (trigger validation and trial setup). It distinguishes from siblings like create_procurement_request which is for procurement, and get_appian_suppliers which is for suppliers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the request is 'completely populated' and 'multi-step,' but does not explicitly state when to use it vs alternatives, nor does it mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_procurement_requestB

Submits a completely structured multi-step procurement form payload directly into Appian to start the workflow process.

ParametersJSON Schema
NameRequiredDescriptionDefault
procurementRequestYesThe complete hierarchical JSON mapping all fields from the procurement form.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It states that the tool starts a workflow, but lacks details on side effects (e.g., whether it is idempotent, permission requirements, or error behavior). This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence that conveys the core action without any redundant words. It is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a nested parameter and no output schema, the description should clarify what the tool returns (e.g., a request ID) or the outcome after submission. It only describes the input and action, leaving the return behavior unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds that the payload is 'completely structured' and 'multi-step', but does not provide further meaning beyond the schema's object definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'submits' and the resource 'a completely structured multi-step procurement form payload', with the target 'into Appian to start the workflow process'. It distinguishes from siblings like create_labelling_request, which likely handles a different form type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a procurement request needs to be created, but provides no explicit guidance on when to use this tool versus alternatives (e.g., create_labelling_request), nor does it mention prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_appian_suppliersA

Fetches a list of active available suppliers from the Appian Data Fabric based on a given domain/category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesThe business category filter.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool performs a read operation (fetch), but lacks details on pagination, authentication, rate limits, or return format. The description is minimally adequate for a simple read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 16 words, front-loaded with the verb and object. Every word is necessary and no extraneous information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature (one required parameter, no output schema), the description covers the core purpose and parameter. It lacks behavioral details and return structure, but remains fairly complete for a straightforward fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with the parameter 'category' described as 'The business category filter.' The description adds 'based on a given domain/category' which is redundant. It does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'fetches', the resource 'suppliers', the source 'Appian Data Fabric', and the condition 'active available'. It also specifies filtering by domain/category, distinguishing it from sibling tools like create_labelling_request or get_records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when needing a list of active available suppliers filtered by category. However, it does not explicitly mention when not to use it or suggest alternative tools, though the context is sufficient for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recordsB

Retrieve records from an Appian application using record type name

ParametersJSON Schema
NameRequiredDescriptionDefault
recordNameYesThe name of the Appian record type
pageSizeNoMaximum number of records to return (default: 100)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral disclosure. However, it only states the basic action without mentioning authentication, rate limits, error handling, or what happens if the record type doesn't exist. The pageSize parameter hints at pagination but behavior is not described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose. It is appropriately sized and front-loaded with the key action and resource. Minor room for improvement by adding a brief note on return format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no output schema), the description is minimally adequate. It tells what the tool does and the key parameter. However, it lacks details about return values, error handling, and recordName format, which are gaps for contextual completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (recordName, pageSize) are documented in the schema. The description adds no additional meaning beyond the schema, which meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve records' with the resource 'records from an Appian application' and the method 'using record type name'. It distinguishes from sibling tools like create_labelling_request and get_appian_suppliers, which focus on creating or getting specific entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. While the purpose implies retrieval, there is no guidance on when not to use it or mention of specific contexts (e.g., filtering). The usage is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • First observedcreate_labelling_request
    • First observedcreate_procurement_request
    • First observedget_appian_suppliers
    • First observedget_records

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct action: two creation operations for different request types and two retrieval operations for different data sources. Descriptions clearly differentiate their purposes, leaving no ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: create_labelling_request, create_procurement_request, get_appian_suppliers, get_records. No mixing of conventions.

Tool Count5/5

Four tools is well-scoped for an Appian integration server, covering essential creation and retrieval operations without unnecessary bloat or deficiency.

Completeness4/5

The tool set covers the primary actions of submitting requests and fetching data, but lacks update/delete capabilities or status tracking for submitted requests, which could be considered minor gaps for full workflow coverage.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Transforms complex Pega Platform interactions into intuitive, conversational experiences by exposing Pega DX APIs through the standardized Model Context Protocol, enabling AI applications to interact with Pega through natural language.
    67
    29
    21
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables users to access, search, and analyze Spark Desktop meeting transcripts and emails through natural language via the Model Context Protocol.
    11
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language interaction with Home Assistant for managing entities, automations, services, and dashboards via the Model Context Protocol.
    237
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cmsappian123-bit/MCP-Appian'

If you have feedback or need assistance with the MCP directory API, please join our Discord server