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.
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
- Node.js 18+ or recent version
- Parallel Works ACTIVATE account with API access
- Clone or navigate to the project directory:
cd parallel-works-mcp- Install dependencies:
npm installThe MCP server requires authentication to connect to the Parallel Works API. You can authenticate using either:
export PARALLEL_WORKS_API_KEY="your-api-key-here"export PARALLEL_WORKS_TOKEN="your-jwt-token-here"export PARALLEL_WORKS_API_URL="https://activate.parallel.works"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_TOKENThe 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 |
|---|---|
type |
"stdio" - standard input/output communication |
command |
"node" - Node.js runtime |
args |
Array with absolute path to src/index.js |
env.PARALLEL_WORKS_API_KEY |
Your Parallel Works ACTIVATE API key |
enabledMcpjsonServers |
["parallelworks"] - enables the server |
To enable for all projects, add the same configuration under each project path in your ~/.claude.json file.
Get the current authentication session and user information.
{}List organizations the user can access.
{}Get groups for the authenticated user.
{
"provider": "aws-slurm",
"network": "my-network"
}List all clusters the user can access.
{}Get nodes for a specific compute cluster.
{
"organization": "parallelworks",
"user": "username",
"clusterName": "my-cluster",
"type": "compute"
}List all workflows for the authenticated user.
{
"filter": "workflows"
}Get details of a specific workflow.
{
"workflow": "my-workflow"
}Get the YAML configuration of a workflow.
{
"workflow": "my-workflow"
}Run a workflow with optional input parameters.
{
"workflow": "my-workflow",
"inputs": {
"param1": "value1",
"param2": "value2"
}
}List storage buckets the user can access.
{
"permission": "edit",
"provisioned": true
}List Lustre filesystems the user can access.
{
"permission": "mount",
"provisioned": true
}List NFS filesystems the user can access.
{
"permission": "edit",
"provisioned": true
}List sessions for the authenticated user.
{
"type": "tunnel",
"subdomain": "my-subdomain"
}List budget allocations the user can access.
{
"limit": 50,
"skip": 0,
"name": "production",
"sort": "-total"
}List Kubernetes clusters accessible to the user.
{}List Machine Learning Workspaces.
{
"csp": "aws",
"region": "us-west-2",
"provisioned": true
}Get notifications for the authenticated user.
{
"limit": 20,
"skip": 0,
"read": false
}User: List all my clusters
Assistant: [calls list_clusters] Here are your clusters...
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...
User: What Lustre filesystems do I have access to?
Assistant: [calls list_lustre] You have access to the following Lustre filesystems...
User: Show me all my active tunnel sessions
Assistant: [calls list_sessions with type="tunnel"] Here are your active tunnel sessions...
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.
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 file
To add a new tool:
- Add the tool definition to the
toolsarray insrc/index.js - Add a case in the
CallToolRequestSchemahandler - Test 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'],
},
}This MCP server is based on the Parallel Works ACTIVATE OpenAPI specification:
- Base URL:
https://activate.parallel.works - Documentation: Parallel Works Docs
- OpenAPI Spec: Included as
pw-openapi.json
MIT
For issues or questions:
- Parallel Works Support: support@parallelworks.com
- GitHub Issues: [Create an issue in the repository]