Rundeck MCP Server
Provides tools to interact with a Rundeck instance, including listing and retrieving job details, running jobs with options, and managing executions (listing, retrieving status, and viewing log output).
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., "@Rundeck MCP Serverrun the nightly backup job for production"
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.
Rundeck MCP Server
Rundeck's local MCP (Model Context Protocol) server which provides tools to interact with your Rundeck instance, allowing you to list jobs, run jobs with options, and retrieve execution status and logs directly from your MCP-enabled client.
Prerequisites
asdf-vm installed.
uv installed globally.
A Rundeck API Token. To obtain a Rundeck API Token, follow these steps:
Log in to your Rundeck instance and click on your username in the top-right corner.
Navigate to User Profile and then User API Tokens.
Click Generate New Token, provide a name, and select the appropriate roles.
Copy the generated token and store it securely. You will need this token to configure the MCP server.
Note: API tokens inherit the permissions of the user who created them. Ensure your user has appropriate access to the jobs you want to manage.
Related MCP server: jenkins-mcp-server
Using with MCP Clients
Cursor Integration
You can configure this MCP server directly within Cursor's settings.json file, by following these steps:
Open Cursor settings (Cursor Settings > Tools > Add MCP, or
Cmd+,on Mac, orCtrl+,on Windows/Linux).Add the following configuration:
{ "mcpServers": { "rundeck-mcp": { "type": "stdio", "command": "uvx", "args": [ "rundeck-mcp", "--enable-write-tools" // This flag enables write operations on the MCP Server enabling you to run jobs ], "env": { "RUNDECK_API_TOKEN": "${input:rundeck-api-token}", "RUNDECK_URL": "http://localhost:4440" } } } }
VS Code Integration
You can configure this MCP server directly within Visual Studio Code's settings.json file, allowing VS Code to manage the server lifecycle.
Open VS Code settings (File > Preferences > Settings, or
Cmd+,on Mac, orCtrl+,on Windows/Linux).Search for "mcp" and ensure "Mcp: Enabled" is checked under Features > Chat.
Click "Edit in settings.json" under "Mcp > Discovery: Servers".
Add the following configuration:
{ "mcp": { "inputs": [ { "type": "promptString", "id": "rundeck-api-token", "description": "Rundeck API Token", "password": true } ], "servers": { "rundeck-mcp": { "type": "stdio", "command": "uvx", "args": [ "rundeck-mcp", "--enable-write-tools" // This flag enables write operations on the MCP Server enabling you to run jobs ], "env": { "RUNDECK_API_TOKEN": "${input:rundeck-api-token}", "RUNDECK_URL": "http://localhost:4440" // Update this to your Rundeck server URL } } } } }
Trying it in VS Code Chat (Agent)
Ensure MCP is enabled in VS Code settings (Features > Chat > "Mcp: Enabled").
Configure the server as described above.
Open the Chat view in VS Code (
View>Chat).Make sure
Agentmode is selected. In the Chat view, you can enable or disable specific tools by clicking the tools icon.Enter a command such as
List all jobs in project myprojectorRun the deploy job with version 1.2.3to interact with your Rundeck instance through the MCP server.You can start, stop, and manage your MCP servers using the command palette (
Cmd+Shift+P/Ctrl+Shift+P) and searching forMCP: List Servers. Ensure the server is running before sending commands. You can also try to restart the server if you encounter any issues.
Claude Desktop Integration
You can configure this MCP server to work with Claude Desktop by adding it to Claude's configuration file.
Locate your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Create or edit the configuration file and add the following configuration:
{ "mcpServers": { "rundeck-mcp": { "command": "uvx", "args": [ "rundeck-mcp", "--enable-write-tools" ], "env": { "RUNDECK_API_TOKEN": "your-rundeck-api-token-here", "RUNDECK_URL": "http://localhost:4440" } } } }Replace the placeholder values:
Replace
your-rundeck-api-token-herewith your actual Rundeck API TokenReplace
http://localhost:4440with your Rundeck server URL
Restart Claude Desktop completely for the changes to take effect.
Test the integration by starting a conversation with Claude and asking something like "List all jobs in project myproject" or "Show me recent executions" to verify the MCP server is working.
Security Note: Unlike VS Code's secure input prompts, Claude Desktop requires you to store your API token directly in the configuration file. Ensure this file has appropriate permissions (readable only by your user account) and consider the security implications of storing credentials in plain text.
Set up locally
Clone the repository
Install
asdfpluginsasdf plugin add python asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin add uvInstall tool versions using
asdf:asdf installCreate a virtual environment and install dependencies using
uv(now thatasdfhas set the correct Python anduvversions):uv syncEnsure
uvis available globally.The MCP server can be run from different places so you need
uvto be available globally. To do so, follow the official documentation.Tip: You may need to restart your terminal and/or VS Code for the changes to take effect.
Run it locally
To run your cloned Rundeck MCP Server you need to update your configuration to use
uvinstead ofuvx."rundeck-mcp": { "type": "stdio", "command": "uv", "args": [ "run", "--directory", "/path/to/your/mcp-server-directory", // Replace with the full path to the directory where you cloned the MCP server, e.g. "/Users/yourname/code/rundeck-mcp", "python", "-m", "rundeck_mcp", "--enable-write-tools" // This flag enables write operations on the MCP Server enabling you to run jobs ], "env": { "RUNDECK_API_TOKEN": "${input:rundeck-api-token}", "RUNDECK_URL": "http://localhost:4440" // Update this to your Rundeck server URL } }
Available Tools and Resources
This section describes the tools provided by the Rundeck MCP server. They are categorized based on whether they only read data or can modify data in your Rundeck instance.
Important: By default, the MCP server only exposes read-only tools. To enable tools that can modify your Rundeck instance (write-mode tools), you must explicitly start the server with the
--enable-write-toolsflag. This helps prevent accidental job executions.
Tool | Area | Description | Read-only |
list_jobs | Jobs | Lists jobs in a project with optional filtering | ✅ |
get_job | Jobs | Retrieves job details including options and defaults | ✅ |
list_executions | Executions | Lists executions with filtering by status or time | ✅ |
get_execution | Executions | Retrieves execution status and details | ✅ |
get_execution_output | Executions | Retrieves execution log output | ✅ |
run_job | Jobs | Executes a job with options | ❌ |
Job Options
When running jobs with the run_job tool, the server validates options before execution:
Required options must be provided (unless they have default values)
Enforced options must use values from the allowed list
Option summaries are displayed when validation fails
Example job options display:
Job Options:
- version [REQUIRED]
The version to deploy
Allowed values (must be): '1.0', '1.1', '2.0'
- environment [optional] (default: 'staging')
Target environment
Allowed values (suggested): 'dev', 'staging', 'prod'
- dry_run [optional] (default: 'false')
Run without making changesConfiguration
Environment Variable | Description | Default |
| API token for authentication | (required) |
| Rundeck server URL |
|
| API version number |
|
Support
This MCP server is an open-source project. If assistance is required, please open an issue in the repository.
Contributing
If you are interested in contributing to this project, please refer to the PRD.md for architecture decisions and implementation patterns.
Available Tools
5 toolsget_executionARead-onlyIdempotent
Get detailed information about a specific execution.
Returns the full execution details including status, timing, node results,
and the arguments used.
Args:
execution_id: The execution ID (integer)
Returns:
Execution object with full details
Examples:
>>> execution = get_execution(12345)
>>> print(execution.status)
'succeeded'
>>> print(execution.duration_seconds)
45.2
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The execution ID |
| job | No | Reference to the job (None for adhoc executions) |
| href | No | API URL for this execution |
| user | Yes | User who started this execution |
| status | Yes | Execution status |
| project | Yes | The project name |
| argstring | No | The argument string used for this execution |
| permalink | No | Web UI URL for this execution |
| date-ended | No | When the execution ended (None if still running) |
| description | No | Execution description |
| failedNodes | No | List of nodes that failed |
| date-started | No | When the execution started |
| successfulNodes | No | List of nodes that succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds value by specifying the return content ('full execution details including status, timing, node results, and the arguments used'), which provides useful context beyond annotations. No contradiction with annotations exists.
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 well-structured with clear sections (purpose, returns, args, examples), front-loaded with the core purpose, and every sentence adds value without redundancy. It efficiently conveys necessary information in a compact 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 (1 parameter), rich annotations (covering safety and idempotency), and the presence of an output schema (implied by 'Returns: Execution object'), the description is complete enough. It explains the purpose, parameter, return content, and includes examples, addressing all key aspects without overloading.
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 0%, but the description includes an 'Args' section that documents the single parameter (execution_id) as 'The execution ID (integer)', adding meaning beyond the schema's basic type. However, it does not elaborate on format constraints or examples beyond the integer type, so it partially compensates for the low schema 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 the verb ('Get') and resource ('detailed information about a specific execution'), distinguishing it from siblings like list_executions (which lists multiple executions) and get_execution_output (which focuses on output rather than full details). The purpose is specific and unambiguous.
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 by specifying it retrieves details for 'a specific execution' (via execution_id), but it does not explicitly state when to use this tool versus alternatives like list_executions or get_execution_output. No exclusions or prerequisites are mentioned, leaving some ambiguity 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_execution_outputARead-onlyIdempotent
Get the log output from a job execution.
Retrieves log entries from the execution. For running executions, use the
'offset' parameter to poll for new output. The 'completed' field indicates
whether the execution has finished.
Args:
execution_id: The execution ID (integer)
last_lines: Return only the last N lines (overrides offset)
max_lines: Maximum number of lines to return from offset
offset: Byte offset to start reading from (for tailing)
node: Filter output to a specific node
Returns:
ExecutionOutput with log entries and metadata
Examples:
Get all output:
>>> output = get_execution_output(12345)
>>> for entry in output.entries:
... print(f"[{entry.level}] {entry.log}")
Get last 50 lines:
>>> output = get_execution_output(12345, last_lines=50)
Tail running execution:
>>> output = get_execution_output(12345, offset=0)
>>> while not output.completed:
... output = get_execution_output(12345, offset=output.offset)
... # process new entries
| Name | Required | Description | Default |
|---|---|---|---|
| execution_id | Yes | ||
| last_lines | No | ||
| max_lines | No | ||
| offset | No | ||
| node | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The execution ID |
| offset | No | Byte offset in the log file |
| entries | No | Log entries |
| completed | Yes | Whether the execution has completed |
| execState | No | Current execution state |
| totalSize | No | Total size of log file in bytes |
| execDuration | No | Execution duration in milliseconds |
| execCompleted | No | Whether execution is complete |
| hasMoreOutput | No | Whether more output is available |
| percentLoaded | No | Percentage of output loaded (0-100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it explains how to handle running executions with polling using offset, mentions the 'completed' field to indicate execution status, and describes the return structure (ExecutionOutput with log entries and metadata). No contradictions with annotations exist.
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 well-structured and appropriately sized: it starts with a clear purpose statement, provides usage guidelines, lists parameters with explanations, describes returns, and includes practical examples. Every sentence adds value, with no wasted words, and the information is front-loaded for quick understanding.
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 complexity (5 parameters, polling behavior) and the presence of an output schema (which handles return values), the description is complete. It covers purpose, usage, parameters, behavioral traits, and provides examples, making it sufficient for an agent to select and invoke the tool correctly without needing additional context.
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?
With 0% schema description coverage (titles only, no descriptions), the description carries the full burden of explaining parameters. It effectively adds meaning: it explains 'execution_id' as 'The execution ID (integer)', 'last_lines' as 'Return only the last N lines (overrides offset)', 'max_lines' as 'Maximum number of lines to return from offset', 'offset' as 'Byte offset to start reading from (for tailing)', and 'node' as 'Filter output to a specific node'. This compensates fully for the schema gap.
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 tool's purpose as 'Get the log output from a job execution' and 'Retrieves log entries from the execution', which is a specific verb+resource combination. It distinguishes itself from sibling tools like 'get_execution' (which likely returns execution metadata rather than logs) and 'list_executions' (which lists multiple executions).
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 explicit usage guidance: 'For running executions, use the 'offset' parameter to poll for new output.' It also offers practical examples showing when to use different parameters (e.g., getting all output vs. last lines vs. tailing), which implicitly guides the agent on when to use this tool versus alternatives like checking execution status through other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobARead-onlyIdempotent
Get detailed information about a specific job.
Returns the full job definition including all options displayed in a table
showing required status, defaults, and allowed values.
Args:
job_id: The job UUID
Returns:
Formatted string with job details and options table
Examples:
>>> result = get_job("abc-123-def")
>>> print(result)
'## Deploy Application...'
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond this: it specifies that the output includes 'all options displayed in a table showing required status, defaults, and allowed values', which clarifies the return format and depth of information provided. No contradictions with annotations.
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 well-structured with clear sections (purpose, returns, examples) and front-loaded key information. It's appropriately sized, but the example section could be slightly condensed as it repeats the purpose. Most sentences earn their place by adding value.
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 (1 parameter), rich annotations, and presence of an output schema, the description is largely complete. It explains the parameter, output format, and includes an example. However, it doesn't mention error cases or prerequisites, leaving minor gaps.
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?
With 0% schema description coverage, the description compensates by explaining the single parameter 'job_id' as 'The job UUID', adding semantic meaning beyond the schema's title 'Job Id'. This clarifies the expected format and purpose, though it doesn't detail validation or constraints.
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 tool's purpose: 'Get detailed information about a specific job' with the verb 'get' and resource 'job'. It distinguishes from siblings like 'list_jobs' (which lists multiple jobs) by specifying retrieval of a single job, but doesn't explicitly contrast with 'get_execution' or 'get_execution_output'.
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 detailed information about a specific job is needed, as opposed to listing jobs. However, it doesn't explicitly state when to use this versus alternatives like 'get_execution' or provide exclusions (e.g., not for modifying jobs). The context is clear but lacks explicit guidance on sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_executionsARead-onlyIdempotent
List job executions with optional filtering.
Returns a list of executions matching the specified criteria. Filter by
project, job_id, status, or time range. Results are ordered by start time
(most recent first).
Args:
query: Query parameters for filtering executions
Returns:
List of Execution objects matching the query
Examples:
List recent executions in a project:
>>> result = list_executions(ExecutionQuery(project="myproject"))
List failed executions for a specific job:
>>> result = list_executions(ExecutionQuery(
... job_id="abc-123-def",
... status="failed"
... ))
List executions from the last hour:
>>> result = list_executions(ExecutionQuery(
... project="myproject",
... recent_filter="1h"
... ))
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| response | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds valuable behavioral context beyond annotations: it specifies that results are ordered by start time (most recent first), mentions filtering capabilities, and provides concrete examples of usage patterns. This enhances the agent's understanding of how the tool behaves in practice.
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 well-structured and front-loaded with the core purpose, followed by clear sections for Args, Returns, and Examples. Every sentence adds value: the opening establishes purpose, the second explains filtering and ordering, and the examples demonstrate practical usage. No wasted words or redundant information.
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 that annotations cover safety aspects (read-only, idempotent, non-destructive), an output schema exists (implied by 'Returns: List of Execution objects'), and the description provides good usage guidance with examples, this description is complete enough for the agent to understand and correctly invoke this tool. The combination of structured data and descriptive text covers all essential aspects.
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?
The input schema has 0% description coverage (the single 'query' parameter lacks a description in the schema), but the description compensates by explaining that filtering can be done by 'project, job_id, status, or time range' and provides examples showing how to construct ExecutionQuery objects. However, it doesn't document all available parameters (like user, older_filter, limit, offset) that appear in the schema's nested object.
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 specific action ('List job executions') and resource ('executions'), distinguishing it from sibling tools like get_execution (which retrieves a single execution) or list_jobs (which lists jobs rather than executions). The opening sentence establishes the core purpose with optional filtering capabilities.
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 about when to use this tool ('List job executions with optional filtering') and includes examples showing different filtering scenarios. However, it doesn't explicitly state when NOT to use it or mention alternatives like get_execution for single execution retrieval, though the sibling tool names provide some implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsARead-onlyIdempotent
List jobs in a Rundeck project with optional filtering.
Returns a numbered markdown table of jobs. Use the # column to reference
jobs in subsequent commands (e.g., "run job 3").
Args:
query: Query parameters for filtering jobs
Returns:
Markdown table with numbered jobs
Examples:
List all jobs in a project:
>>> result = list_jobs(JobQuery(project="myproject"))
Filter by group:
>>> result = list_jobs(JobQuery(project="myproject", group_path="deploy/prod"))
Search by name:
>>> result = list_jobs(JobQuery(project="myproject", job_filter="backup"))
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond what annotations provide. While annotations indicate read-only, idempotent, and non-destructive operations, the description reveals that results are returned as a 'numbered markdown table' and explains how to reference jobs using the '# column' in subsequent commands. This output format guidance is crucial for agent interaction but doesn't cover aspects like rate limits or authentication requirements.
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 perfectly structured and concise. It begins with a clear purpose statement, immediately explains the return format and how to use it, then provides parameter documentation and practical examples. Every sentence serves a specific purpose with zero wasted words, and the information is front-loaded appropriately.
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 that this is a read-only listing tool with comprehensive annotations (readOnlyHint, idempotentHint, destructiveHint), a well-documented input schema, and an output schema indicated in context signals, the description provides exactly what's needed. It explains the purpose, output format, parameter usage with examples, and how to interpret results for subsequent operations - making it complete for this tool's complexity level.
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?
The description mentions 'optional filtering' and documents the single 'query' parameter with examples showing different filtering scenarios. However, with 0% schema description coverage in the context signals, the detailed parameter documentation (project, group_path, job_filter, etc.) comes entirely from the input schema. The description provides basic guidance but doesn't add significant semantic value beyond what's already in the well-documented 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 tool's purpose: 'List jobs in a Rundeck project with optional filtering.' It specifies the verb ('List'), resource ('jobs'), and context ('in a Rundeck project'), distinguishing it from sibling tools like get_job (which retrieves a single job) or list_executions (which lists executions rather than jobs).
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: for listing jobs with optional filtering in a Rundeck project. It includes examples that demonstrate different filtering scenarios. However, it doesn't explicitly state when NOT to use it or mention alternatives like get_job for single job retrieval, which would have earned a perfect score.
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.
5 tool updates
v1.0.0- First observed
get_execution - First observed
get_execution_output - First observed
get_job - First observed
list_executions - First observed
list_jobs
TDQS
Each tool has a clearly distinct purpose with no overlap: get_execution retrieves metadata, get_execution_output fetches logs, get_job shows job details, list_executions filters executions, and list_jobs lists jobs. The separation between execution-focused and job-focused tools is well-defined, preventing agent confusion.
All tools follow a consistent verb_noun naming pattern (get_execution, get_execution_output, get_job, list_executions, list_jobs) with clear verbs (get, list) and specific nouns. There are no deviations in style or convention throughout the set.
Five tools is reasonable for a Rundeck server, covering core read operations for jobs and executions. However, the absence of tools for creating, updating, or running jobs makes the set feel slightly thin for full workflow automation, though it's well-scoped for monitoring and querying.
The tool set is severely incomplete for a Rundeck domain, which typically involves job execution and management. There are no tools to run jobs, create/update/delete jobs or executions, or manage projects—major gaps that will cause agent failures in automating Rundeck workflows beyond passive observation.
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
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Manage Rackspace Spot Kubernetes Cloudspaces, node pools, and VMs from your AI assistant.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Jenkins CI jobs, including triggering and stopping builds, retrieving job details, and fetching build logs.-
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to access Jenkins job data, trigger builds, and manage Jenkins tasks through a standardized interface.5-
- AlicenseBqualityBmaintenanceEnables AI assistants to manage Rundeck operations including jobs, executions, projects, nodes, system management, key storage, webhooks, and ACL policies via natural language.50591Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI-driven interaction with Rundeck via CLI for managing jobs, executions, projects, and nodes without direct command line usage.10593MIT
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/justynroberts/rundeck-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server