Parallel Works MCP Server
OfficialAllows querying Kubernetes clusters accessible via Parallel Works ACTIVATE API.
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., "@Parallel Works MCP Serverlist my available clusters"
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.
Parallel Works MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with the Parallel Works ACTIVATE REST API. This allows code assist agents to manage Parallel Works resources including clusters, storage, workflows, and more.
Features
The MCP server provides tools for managing:
Clusters: List and query compute clusters and nodes
Workflows: List, inspect, and execute workflows
Storage: Manage buckets, Lustre filesystems, and NFS storage
Sessions: View and manage user sessions
Allocations: Query budget allocations and usage
Machine Learning: List and manage ML workspaces (AWS SageMaker, Azure ML)
Kubernetes: Query Kubernetes clusters
User Resources: Get notifications, organizations, and groups
Related MCP server: Tonle OpenProject MCP Server
Installation
Prerequisites
Node.js 18+ or recent version
Parallel Works ACTIVATE account with API access
Setup
Clone or navigate to the project directory:
cd parallel-works-mcpInstall dependencies:
npm installConfiguration
The MCP server requires authentication to connect to the Parallel Works API. You can authenticate using either:
Option 1: API Key (Basic Auth)
export PARALLEL_WORKS_API_KEY="your-api-key-here"Option 2: Bearer Token (JWT)
export PARALLEL_WORKS_TOKEN="your-jwt-token-here"Optional: Custom API URL
export PARALLEL_WORKS_API_URL="https://activate.parallel.works"Usage
Running the Server
Start the MCP server with stdio transport:
npm startOr using Node directly:
node src/index.jsWith custom API URL:
node src/index.js --api-url https://activate.parallel.works --api-key YOUR_KEYWith Bearer token:
node src/index.js --token YOUR_JWT_TOKENMCP Client Configuration
The recommended way to add the MCP server is by editing your ~/.claude.json configuration file directly:
# Open your Claude config file
nano ~/.claude.jsonAdd the MCP server configuration to each project where you want to use it:
{
"projects": {
"/your/project/path": {
"mcpServers": {
"parallelworks": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/parallel-works-mcp/src/index.js"],
"env": {
"PARALLEL_WORKS_API_KEY": "your-api-key-here"
}
}
},
"enabledMcpjsonServers": ["parallelworks"]
}
}
}Configuration options:
Field | Value |
|
|
|
|
| Array with absolute path to |
| Your Parallel Works ACTIVATE API key |
|
|
To enable for all projects, add the same configuration under each project path in your ~/.claude.json file.
Available Tools
Authentication & User Info
get_auth_session
Get the current authentication session and user information.
{}get_organizations
List organizations the user can access.
{}get_groups
Get groups for the authenticated user.
{
"provider": "aws-slurm",
"network": "my-network"
}Cluster Operations
list_clusters
List all clusters the user can access.
{}get_cluster_nodes
Get nodes for a specific compute cluster.
{
"organization": "parallelworks",
"user": "username",
"clusterName": "my-cluster",
"type": "compute"
}Workflow Operations
list_workflows
List all workflows for the authenticated user.
{
"filter": "workflows"
}get_workflow
Get details of a specific workflow.
{
"workflow": "my-workflow"
}get_workflow_yaml
Get the YAML configuration of a workflow.
{
"workflow": "my-workflow"
}run_workflow
Run a workflow with optional input parameters.
{
"workflow": "my-workflow",
"inputs": {
"param1": "value1",
"param2": "value2"
}
}Storage Operations
list_buckets
List storage buckets the user can access.
{
"permission": "edit",
"provisioned": true
}list_lustre
List Lustre filesystems the user can access.
{
"permission": "mount",
"provisioned": true
}list_nfs
List NFS filesystems the user can access.
{
"permission": "edit",
"provisioned": true
}Session Operations
list_sessions
List sessions for the authenticated user.
{
"type": "tunnel",
"subdomain": "my-subdomain"
}Allocation Operations
list_allocations
List budget allocations the user can access.
{
"limit": 50,
"skip": 0,
"name": "production",
"sort": "-total"
}Kubernetes Operations
list_kubernetes_clusters
List Kubernetes clusters accessible to the user.
{}ML Workspace Operations
list_ml_workspaces
List Machine Learning Workspaces.
{
"csp": "aws",
"region": "us-west-2",
"provisioned": true
}Notifications
get_notifications
Get notifications for the authenticated user.
{
"limit": 20,
"skip": 0,
"read": false
}Example Conversations
Listing Clusters
User: List all my clusters
Assistant: [calls list_clusters] Here are your clusters...Running a Workflow
User: Run the "data-processing" workflow with input dataset="s3://my-bucket/data"
Assistant: [calls run_workflow with workflow="data-processing", inputs={"dataset": "s3://my-bucket/data"}] Workflow started successfully...Checking Storage
User: What Lustre filesystems do I have access to?
Assistant: [calls list_lustre] You have access to the following Lustre filesystems...Managing Sessions
User: Show me all my active tunnel sessions
Assistant: [calls list_sessions with type="tunnel"] Here are your active tunnel sessions...Error Handling
The MCP server handles errors gracefully:
Authentication errors: Check your API key or token
Network errors: Verify your network connection and API URL
Invalid parameters: Check the tool input schema
Resource not found: Verify resource names and permissions
All errors are returned with descriptive messages in the response.
Development
Project Structure
parallel-works-mcp/
├── src/
│ └── index.js # Main MCP server implementation
├── package.json # Dependencies and scripts
├── pw-openapi.json # OpenAPI specification (reference)
├── PROGRESS.md # Development progress tracking
└── README.md # This fileAdding New Tools
To add a new tool:
Add the tool definition to the
toolsarray insrc/index.jsAdd a case in the
CallToolRequestSchemahandlerTest the tool with your MCP client
Example:
{
name: 'my_new_tool',
description: 'Does something useful',
inputSchema: {
type: 'object',
properties: {
param1: { type: 'string', description: 'First parameter' },
},
required: ['param1'],
},
}API Reference
This MCP server is based on the Parallel Works ACTIVATE OpenAPI specification:
Base URL:
https://activate.parallel.worksDocumentation: Parallel Works Docs
OpenAPI Spec: Included as
pw-openapi.json
License
MIT
Support
For issues or questions:
Parallel Works Support: support@parallelworks.com
GitHub Issues: [Create an issue in the repository]
Available Tools
17 toolsget_auth_sessionA
Get the current authentication session and user information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. 'Get' implies a read-only operation, but it does not disclose any error conditions, response structure, or whether the session could be null or expired. For a simple getter with no parameters, this is adequate but not thorough.
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?
A single, straightforward sentence with no filler. It front-loads the verb and resource, making it easy to scan. Every word earns its place.
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 no output schema, the description is the only source for what the tool returns. 'User information' is vague, leaving the agent to guess what fields are included. The tool is simple, but a bit more detail on the session object or user fields would make it fully complete.
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 tool has zero parameters, so the baseline is 4. There is no parameter information needed, and the description correctly avoids adding irrelevant detail. The schema coverage is 100% since there are no properties.
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 uses a specific verb ('Get') and resource ('current authentication session and user information'), which clearly distinguishes it from sibling tools like get_organizations or list_clusters. The scope is unambiguous and directly reflects the tool's function.
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 is used when you need the current authentication session or user info, but it does not explicitly state when to use it versus alternatives or mention any exclusions. Given the sibling list, the purpose is clear enough, but explicit guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cluster_nodesA
Get nodes for a specific compute cluster
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by node type (controller, compute) | |
| user | Yes | Username of the cluster owner | |
| clusterName | Yes | Cluster name | |
| organization | Yes | Organization name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey that this is a read-only operation; 'Get' implies this, but it doesn't disclose response format, filtering behavior, or error conditions. It adds minimal behavioral context beyond the tool name.
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?
A single, direct sentence that leads with the verb and specifies the target resource. No unnecessary words or repetition, making it highly scannable.
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 simple read-only nature, fully documented parameters, and no output schema, the description adequately identifies the purpose and resource. It could mention that nodes are returned as a list, but the overall scope is clear and complete enough for a tool of this complexity.
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 100% coverage with descriptions for all four parameters, so the schema already carries the semantic weight. The description does not add meaning beyond identifying that nodes are fetched for a cluster; it doesn't clarify parameter relationships or provide examples.
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 uses a specific verb 'Get' and resource 'nodes' with a clear qualifier 'for a specific compute cluster'. It distinctly differentiates from sibling tools like list_clusters, which enumerate clusters rather than their nodes.
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 you need nodes for a particular cluster, but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites like verifying the cluster exists via list_clusters. There are no exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_groupsB
Get groups for the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Filter by network name | |
| provider | No | Filter by provider (aws-slurm, google-slurm, azure-slurm, existing) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description adds no behavioral context beyond the basic 'Get' operation. It does not mention response format, potential network behavior, or any side effects. A simple read operation is implied, but the description carries the full burden and fails to add value.
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 with no unnecessary words. It front-loads the verb and resource, making it easy to scan.
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?
For a simple getter with optional filters, the description provides the essential purpose, but it lacks usage context, return type explanation, or relationship to other tools. Given no output schema, the agent is left to infer the response structure, making it minimally viable but not complete.
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?
Both parameters are already fully described in the input schema (100% coverage), and the tool description adds no additional meaning about how filtering works or the relationship between network and provider. Baseline of 3 is appropriate.
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 uses a specific verb 'Get' and identifies the resource 'groups' scoped to the authenticated user. This clearly distinguishes it from sibling tools like get_organizations or list_clusters, as 'groups' is unique among them.
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?
No guidance is provided on when to use this tool versus alternatives, nor any context about typical use cases. The description is purely functional with no exclusions or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationsB
Get notifications for the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| read | No | Filter by read status | |
| skip | No | Number of notifications to skip | |
| limit | No | Maximum number of notifications to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry behavioral disclosure. It states the operation is for the authenticated user but does not reveal whether it is read-only, any side effects (e.g., marking notifications as read), or response format.
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 front-loads the action and resource. No unnecessary words are 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?
The tool is simple, but the description lacks information about return values or pagination behavior. With no output schema, the description should at least indicate the response structure or any default filters.
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 provides full descriptions for all three parameters (read, skip, limit), meeting the baseline. The description adds no extra meaning about parameter usage, defaults, or relationships.
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 uses the specific verb 'Get' and resource 'notifications', scoped to the authenticated user. It clearly differentiates from sibling tools that target other resources (e.g., organizations, workflows, clusters).
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?
No guidance on when to use this tool versus alternatives is provided. It does not mention exclusions or selection criteria beyond the self-evident purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organizationsA
List organizations the user can access
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavior. It only states the basic listing action and does not mention authentication requirements, potential empty results, pagination, or the shape of the returned data. For a tool with zero annotations, this is a significant gap.
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 immediately conveys the tool's purpose. There is no wasted wording 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 the tool's simplicity (no parameters, no output schema), the description provides a minimal but adequate understanding. However, it omits any indication of the return format or behavior beyond 'listing', which could leave an agent unsure about what to expect as output. The lack of annotations further reduces completeness, but the simple nature keeps it from being lower.
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 tool has zero parameters, so the input schema is fully covered (100%) vacuously. According to the rubric, a baseline of 4 is appropriate when there are no parameters; the description adds no parameter-specific detail because none exist.
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 action (List) and resource (organizations), with a scope qualifier ('the user can access'). This distinguishes it from sibling list tools that target other resource types (e.g., clusters, workflows, buckets).
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 purpose inherently implies when to use it: when you need to see organizations available to the user. However, the description does not provide explicit guidance on when to prefer this over other list tools (e.g., list_groups or list_clusters), nor any exclusions or prerequisites. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflowB
Get details of a specific workflow
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Workflow name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only says 'Get details' without disclosing return format, error behavior, auth requirements, or any side effects. Minimal behavioral context added.
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?
A single, front-loaded sentence directly stating the purpose with no redundant words. Excellent conciseness.
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?
The tool is simple with one parameter and no output schema, so a short description is appropriate. However, the term 'details' is vague and does not specify what is returned, leaving some ambiguity.
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% with a clear description of the 'workflow' parameter as 'Workflow name'. The description adds no additional meaning but is consistent with the schema, so baseline 3 applies.
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 uses a specific verb 'Get' and resource 'workflow' indicating a read operation. The word 'specific' distinguishes it from list_workflows, though it doesn't explicitly differentiate from get_workflow_yaml. Overall clear.
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?
No guidance on when to use this tool versus alternatives like list_workflows or get_workflow_yaml. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_yamlB
Get the YAML configuration of a workflow
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Workflow name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states 'Get the YAML configuration', implying read-only without explicit disclosure. It does not mention permissions, error behavior, or side effects.
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?
A single, direct sentence that contains no filler. It is appropriately sized for a simple getter tool and is front-loaded with the action.
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?
The tool lacks an output schema and annotations, so the description should explain return format or error conditions. It does not, leaving the agent to infer expected YAML structure and failure behavior.
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% with the 'workflow' parameter documented as 'Workflow name'. The description adds no extra meaning beyond the schema, so baseline 3 applies.
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 uses a specific verb 'Get' and identifies the exact resource 'YAML configuration of a workflow', clearly distinguishing it from sibling tools like list_workflows and get_workflow.
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?
No guidance is provided on when to use this tool versus alternatives. The description simply states the action without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_allocationsB
List budget allocations the user can access
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by allocation name (case-insensitive contains) | |
| skip | No | Number of allocations to skip | |
| sort | No | Sort field and direction | |
| limit | No | Maximum number of allocations to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds only an access control qualifier ('the user can access') but does not disclose pagination behavior, return format, authentication requirements, or default sort/limit behavior. This leaves significant gaps for a listing 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 seven words, front-loaded with the verb and resource. It is perfectly concise with zero wasted words.
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?
This is a low-complexity list operation with a fully documented schema, but the absence of an output schema and annotations means the description should have explained return shape and pagination behavior. The access scoping is useful, but the overall completeness is adequate yet incomplete.
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 provides 100% coverage for all four parameters (name, skip, sort, limit). The description adds no parameter-specific meaning, so the baseline of 3 applies.
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 uses the specific verb 'List' with a clear resource, 'budget allocations', and adds a scoping qualifier ('the user can access'). This clearly distinguishes it from sibling list tools like list_clusters and list_buckets, which cover different resource types.
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 no guidance on when to use this tool versus alternatives, no exclusions, and no mention of preconditions. It simply states the core function, leaving usage entirely implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bucketsB
List storage buckets the user can access
| Name | Required | Description | Default |
|---|---|---|---|
| permission | No | Filter by permission | |
| provisioned | No | Filter by provisioned status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of disclosing behavior. It states the scope ('the user can access') but does not disclose whether the operation is read-only, any rate limits, pagination, or permission requirements. The simple 'list' verb implies a read operation, but the description adds little beyond the literal action.
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, tightly worded sentence that front-loads the action and resource. No filler or redundant information. It earns its place.
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?
Although the tool has no output schema, the description is adequate for a straightforward list operation. However, it does not mention the return format, pagination, or how the permission/provisioned filters affect results. Given the simplicity, a score of 3 reflects the clear gaps in 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?
The input schema documents both parameters (permission and provisioned) with full descriptions, achieving 100% schema coverage. The description adds no additional meaning to these parameters beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 uses the specific verb 'List' with a clear resource ('storage buckets') and scope ('the user can access'), which clearly distinguishes it from sibling tools like list_clusters or list_nfs. It unambiguously states what the tool does.
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 no guidance on when to use this tool versus alternatives like list_nfs or list_lustre. It does not mention any conditions, prerequisites, or scenarios where another tool would be more appropriate. The agent is left to infer based on the resource type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clustersA
List all clusters the user can access
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It does state the access scope (user-accessible clusters), which is useful, but it does not mention whether it's a read-only operation, any potential side effects, rate limits, or response behavior. For a list operation, the lack of explicit read-only confirmation and pagination details is a gap.
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 is front-loaded with the verb 'List' and the resource 'clusters'. Every word earns its place, with no unnecessary detail.
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?
For a zero-parameter list tool with no output schema, the description is adequate: it defines the scope ('all clusters the user can access') and is simple enough that the missing details (pagination, return format) are likely not critical. However, the lack of any behavioral context, such as whether an empty list is returned or if authentication is required, keeps it from a perfect score.
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 tool has zero parameters and schema coverage is 100% (an empty object), so the description has no need to explain parameters. The baseline for 0 params is 4; the description does not add anything beyond the schema, but no compensation is needed.
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 action (list) and the resource (clusters), and adds the scope 'the user can access', which distinguishes it from sibling tools like get_cluster_nodes (which lists nodes) and list_kubernetes_clusters (which lists a specific type). Purpose is 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 gives no explicit guidance on when to use this tool versus alternatives such as get_organizations or list_kubernetes_clusters. The intended use is only implied by the phrase 'clusters the user can access', but no exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kubernetes_clustersB
List Kubernetes clusters accessible to the user
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds 'accessible to the user' to indicate user-based filtering, but does not disclose behaviors such as pagination, sorting, fields returned, or whether clusters are across all namespaces. Minimal but not misleading.
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, front-loaded sentence with no filler. Every word contributes to meaning.
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?
For a tool with no output schema and no annotations, the description is thin. It does not mention return structure (e.g., names, metadata) or potential pagination limits. Given the tool's simplicity, this is acceptable but not fully complete.
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 schema has zero parameters, so the baseline is 4. The description adds no parameter-specific meaning, but none is needed since there are no inputs to clarify.
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 action ('List') and resource ('Kubernetes clusters'), with a scope qualifier ('accessible to the user'). It is specific and likely distinct from sibling 'list_clusters' (generic), but it does not explicitly differentiate from that sibling.
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?
No guidance is provided on when to use this tool versus alternatives like the broader 'list_clusters' or related 'get_cluster_nodes'. The description only implies use for listing Kubernetes clusters, without exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lustreA
List Lustre filesystems the user can access
| Name | Required | Description | Default |
|---|---|---|---|
| permission | No | Filter by permission | |
| provisioned | No | Filter by provisioned status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is limited to 'List Lustre filesystems the user can access', adding no behavioral context beyond the read-only nature implied by 'list'. With no annotations, the safety profile and return behavior are not disclosed.
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 front-loaded sentence with no redundant words or details, making it highly efficient.
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?
As a simple list tool with two optional filter parameters and no output schema, the description adequately states the operation and scope. It could mention response structure, but the simplicity of listing Lustre filesystems makes it reasonably complete.
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 has 100% coverage with descriptions for both 'permission' and 'provisioned' filters, so the baseline is 3. The description does not elaborate on these parameters, leaving schema to carry the semantic detail.
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 uses the specific verb 'List' with the resource 'Lustre filesystems' and the scope 'the user can access', clearly distinguishing it from sibling tools like list_clusters or list_nfs.
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?
No explicit usage guidance is provided. The description implies usage when one needs to list Lustre filesystems, but it does not mention alternatives or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ml_workspacesC
List Machine Learning Workspaces
| Name | Required | Description | Default |
|---|---|---|---|
| csp | No | Cloud service provider filter | |
| region | No | Region filter | |
| provisioned | No | Filter by provisioned status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'List' without detailing pagination, return format, permissions, or any side effects. It is not misleading, but it provides no behavioral context beyond the operation itself.
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, front-loaded sentence with no unnecessary words. It is appropriately concise for a simple list operation.
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?
Despite the tool having three optional filter parameters and no output schema, the description provides no context about how filters interact, what the response contains, or any usage caveats. The description is minimal and leaves the agent without critical operational details.
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 covers all three parameters with clear descriptions (e.g., 'Cloud service provider filter'), so schema coverage is 100%. The tool description adds no additional parameter meaning, but the baseline of 3 is appropriate given the schema's completeness.
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 uses a specific verb and resource ('List Machine Learning Workspaces'), clearly stating the tool's primary function. However, it does not differentiate from sibling list tools beyond the resource name, so it falls short of a 5.
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?
No guidance is provided on when to use this tool versus alternatives, and no exclusions or context are given. The description merely restates the tool's purpose without mentioning use cases or related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nfsB
List NFS filesystems the user can access
| Name | Required | Description | Default |
|---|---|---|---|
| permission | No | Filter by permission (edit, mount) | |
| provisioned | No | Filter by provisioned status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only hints at access scoping ('the user can access') but does not mention whether the operation is read-only, how results are paginated, or what constitutes a filesystem in the return. This minimal disclosure leaves significant behavioral expectations unstated.
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, front-loaded with the purpose, and contains zero fluff. Every word earns its place by conveying resource type and scope.
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?
The tool is simple, with only two optional parameters and no output schema. The description states the basic purpose but omits what a returned NFS filesystem looks like, any usage caveats, or related tools. It is minimally viable but lacks richness for a fully self-contained description.
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 the schema already documents both parameters (permission and provisioned). The description adds no additional meaning about the parameters, so the baseline of 3 applies, as the schema does the heavy lifting.
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 uses a specific verb ('List') and resource ('NFS filesystems') and adds a clear scope ('the user can access'), which distinguishes it from sibling tools like list_buckets or list_lustre. It precisely communicates what the tool does.
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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description simply states the action without context, leaving the agent to infer appropriate usage from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsB
List sessions for the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by session type (tunnel, link) | |
| subdomain | No | Filter by subdomain/domain name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states the basic action. It does not disclose pagination, default behavior, or whether both session types are returned, though the schema hints at filtering.
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 immediately conveys the tool's function. Every word is necessary, with no redundancy.
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?
The tool has low complexity with two optional parameters and no output schema, so the description plus schema are largely sufficient. However, given the absence of annotations, the description could have noted the filtering capability or return expectations, so it's marginally complete.
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 provides full documentation for both parameters (type and subdomain), with enum values for type. The description adds nothing about parameters, so a baseline score of 3 is appropriate.
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 that the tool lists sessions for the authenticated user. It uses a specific verb and resource, and since sibling tools list other resources (clusters, workflows, buckets), this distinguishes itself well.
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?
No guidance is provided on when to use this tool versus alternatives or any exclusions. The description gives no context about session types or scenarios where one might prefer a different listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflowsC
List all workflows for the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter by type (apps, workflows) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description only mentions 'for the authenticated user', implying authentication is required. It does not disclose return format, pagination, error behavior, or any side effects. The description carries the full burden and provides minimal behavioral insight.
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, clear sentence with no redundant information. It is appropriately front-loaded and every word earns its place, though it could benefit from more detail 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?
With no output schema and no annotations, the description should explain return values and usage context. It omits the effect of the filter parameter, what the returned data looks like, and when to prefer this tool over related siblings. This is insufficient for an agent to invoke it confidently.
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 fully describes the 'filter' parameter with an enum and description (100% coverage). The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
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 lists workflows for the authenticated user, using a specific verb and resource. It distinguishes from sibling tools like list_clusters and get_workflow. However, the filter parameter also supports 'apps', creating slight ambiguity about whether the tool lists apps as well.
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?
No guidance is provided on when to use this tool versus alternatives like get_workflow or run_workflow. The description lacks any context on typical use cases or exclusions, leaving the agent to infer from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_workflowB
Run a workflow with optional input parameters
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | Input variables for the workflow (key-value pairs) | |
| workflow | Yes | Workflow name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action and optional inputs, without mentioning side effects, whether the workflow runs synchronously or asynchronously, auth requirements, or what the response contains.
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, front-loaded sentence with no redundancy. It is efficient but borderline under-specified; however, it still conveys the core action and parameter information without waste.
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?
For an execution tool with no output schema, annotations, or additional context, the description is too sparse. It does not explain what happens when a workflow is run, whether it returns a run ID, or any post-invocation behavior. This leaves significant gaps for an agent deciding to invoke it.
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% for both parameters. The description adds nothing beyond the schema; 'optional input parameters' merely restates the inputs property's description without providing examples, types, or usage nuances.
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 uses the specific verb 'run' with the resource 'workflow', clearly indicating execution. This distinguishes it from sibling tools like list_workflows and get_workflow, which are read-only operations.
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?
No guidance is given on when to use this tool versus the sibling tools. The description does not mention alternatives, exclusions, or prerequisites, leaving the agent to infer usage context solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource: auth, organizations, groups, clusters, nodes, workflows, workflow YAML, storage types, sessions, allocations, Kubernetes, ML workspaces, and notifications. No two tools appear to serve the same purpose, and the resource-action pairs are clearly differentiated.
The naming pattern is generally verb_noun, but there is inconsistency between 'get_' and 'list_' prefixes for essentially the same operation. For example, get_organizations and get_groups return lists, while list_clusters and list_workflows are used elsewhere. This mixed convention adds avoidable ambiguity.
With 17 tools, the server covers a broad but reasonable domain of resources and actions. While slightly on the heavier side, each tool represents a distinct resource or operation, and the count aligns with the platform's diverse feature set without feeling excessive.
The tool surface is strong for read/listing operations and includes run_workflow as the primary action, but lacks create, update, or delete capabilities for most resources (e.g., creating a bucket, deleting a session, or stopping a workflow). This leaves the set incomplete for full lifecycle management, though it may suffice for monitoring and execution scenarios.
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
Discover, preview, estimate, run, and retrieve reusable AI workflows.
Connect AI agents to Process Street workflows, tasks, runs, data sets, and operational records.
Give your AI agents the tools to build, manage, and run automation workflows.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage projects through OpenProject's API, providing complete project management capabilities including work packages, tasks, and team collaboration features.
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with OpenProject's API v3 for comprehensive project management operations including work packages, projects, time tracking, users, and all other OpenProject features through natural language.4MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Automatisch workflow automation platform, allowing them to create, manage, and monitor workflows, connections, and executions through natural language commands.10137MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and manage Flowcore resources through a structured API.2399
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/parallelworks/pw-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server