Pw Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Pw Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:
cd parallel-works-mcpnpm 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_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"
}#### 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"
}#### 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"
}
}#### 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
}#### list_sessions List sessions for the authenticated user.
{
"type": "tunnel",
"subdomain": "my-subdomain"
}#### list_allocations List budget allocations the user can access.
{
"limit": 50,
"skip": 0,
"name": "production",
"sort": "-total"
}#### list_kubernetes_clusters List Kubernetes clusters accessible to the user.
{}#### list_ml_workspaces List Machine Learning Workspaces.
{
"csp": "aws",
"region": "us-west-2",
"provisioned": true
}#### get_notifications 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:
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 fileTo add a new tool:
tools array in src/index.jsCallToolRequestSchema handlerExample:
{
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:
https://activate.parallel.workspw-openapi.jsonMIT
For issues or questions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.