Appian MCP Server
Allows interaction with Appian applications, providing tools for record management (create, read, update, delete), process execution, and report querying.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Appian MCP ServerShow me the top 10 customer records from the CRM record type."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Clone or navigate to the project directory
Install dependencies:
npm installSet up environment variables:
cp .env.example .env
# Edit .env with your Appian credentialsConfiguration
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 typelimit(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 typedata(object, required): The record data to create
update_record
Update an existing record.
Parameters:
recordType(string, required): The name of the Appian record typerecordId(string, required): The ID of the record to updatedata(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 typerecordId(string, required): The ID of the record to delete
execute_process
Execute an Appian process.
Parameters:
processName(string, required): The name of the Appian processinputs(object, optional): Input parameters for the process
query_report
Query an Appian report.
Parameters:
reportName(string, required): The name of the Appian reportfilters(object, optional): Filters to apply to the report
Building
Build the TypeScript source to JavaScript:
npm run buildDevelopment
For development with automatic compilation:
npm run watchThen in another terminal, start the server:
npm startRunning the MCP Server
Direct Execution
npm run devIn VS Code
Ensure the project is built:
npm run buildUse the MCP inspector tool or connect through an LLM application
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:
Add a new method to
AppianClientinsrc/appian-client.tsAdd a new tool definition in the
ListToolsRequestSchemahandler insrc/index.tsAdd a new case in the
CallToolRequestSchemahandler to call your methodRebuild:
npm run build
Security Considerations
Store API keys securely (use environment variables or secret management)
Never commit
.envfiles to version controlUse HTTPS for all Appian API communication
Implement proper access controls in your LLM application
Troubleshooting
Connection Issues
Verify your
APPIAN_TENANTis correctEnsure 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
.envfileCheck that the API key hasn't expired
Confirm proper authentication method is configured
Build Errors
Ensure TypeScript is installed:
npm installCheck for TypeScript compilation errors:
npm run build
License
MIT
Resources
Available Tools
4 toolscreate_labelling_requestB
Submits a completely populated multi-step Labelling Design Request payload directly into Appian to trigger validation and trial setup.
| Name | Required | Description | Default |
|---|---|---|---|
| labellingRequest | Yes | Comprehensive hierarchical clinical labelling structured data payload. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| procurementRequest | Yes | The complete hierarchical JSON mapping all fields from the procurement form. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | The business category filter. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| recordName | Yes | The name of the Appian record type | |
| pageSize | No | Maximum number of records to return (default: 100) |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.0- First observed
create_labelling_request - First observed
create_procurement_request - First observed
get_appian_suppliers - First observed
get_records
TDQS
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.
All tool names follow a consistent verb_noun pattern: create_labelling_request, create_procurement_request, get_appian_suppliers, get_records. No mixing of conventions.
Four tools is well-scoped for an Appian integration server, covering essential creation and retrieval operations without unnecessary bloat or deficiency.
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
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
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Let AI agents query data and act across all your business apps via MCP.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
List datasets, schemas, run APL queries, and use prompts for exploration, anomalies, and monitoring.
Related MCP Servers
- AlicenseBqualityCmaintenanceTransforms 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.672921Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI to execute RPA applications and workflows through the Model Context Protocol, supporting both local and cloud modes.141MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to access, search, and analyze Spark Desktop meeting transcripts and emails through natural language via the Model Context Protocol.11-
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with Home Assistant for managing entities, automations, services, and dashboards via the Model Context Protocol.237MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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