Cars-10/windchill-mcp-server
If you are the rightful owner of windchill-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Windchill MCP Server is a comprehensive Model Context Protocol server designed for PTC Windchill 13.0.2.x, enabling AI assistants like Claude to interact with Windchill PLM systems through a standardized interface.
Windchill MCP Server
A comprehensive Model Context Protocol (MCP) server for PTC Windchill 13.0.2.x that enables Claude and other AI assistants to interact with Windchill PLM systems through a standardized interface with 64+ tools across 7 specialized agents, including dynamic server switching.
š Quick Start
Using with Claude Desktop
The fastest way to get started is to use this server with Claude Desktop:
# Clone and build
git clone <your-repo-url>
cd windchill-mcp-server
npm install
npm run build
# Configure Claude Desktop (see docs/CLAUDE_DESKTOP.md for details)
# Edit: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
# or: %APPDATA%\Claude\claude_desktop_config.json (Windows)
š Full Claude Desktop setup guide:
Local Development & Web UI
Option 1: Setup Wizard (Easiest)
chmod +x docker/setup-wizard.sh
./docker/setup-wizard.sh
The wizard will:
- Run pre-flight checks
- Configure your environment
- Start the server
- Run automated tests
Option 2: Manual Setup
Local Development
# Install dependencies
npm install
cd angular-ui && npm install && cd ..
# Configure environment
cp docker/.env.example docker/.env
# Edit .env with your Windchill credentials
# Run in development mode (starts both MCP server + Angular UI)
npm run dev
# Or run services separately:
npm run dev:server # MCP server only (port 3000)
npm run dev:ui # Angular UI only (port 4200)
The npm run dev
command starts:
- MCP Server on http://localhost:3000 (with hot reload)
- Angular UI on http://localhost:4200 (with proxy to port 3000)
Docker Deployment
Production
# Make scripts executable
chmod +x docker/docker-run.sh
# Build and run
./docker/docker-run.sh
# Or using npm scripts
npm run docker:build
npm run docker:up
Accessing the Applications
After starting the containers, access the applications at:
- Angular Web UI:
http://localhost:4200
- Modern web interface for all MCP tools with JSON-RPC 2.0 support - MCP Server API:
http://localhost:3000/api/
- Direct API access to all tools (JSON-RPC 2.0 compliant) - MCP Server Info:
http://localhost:3000
- Server health and information
Development with Hot Reload
# Make scripts executable
chmod +x docker/docker-dev.sh
# Run development container
./docker/docker-dev.sh
# Or using npm scripts
npm run docker:dev
Deploy Angular UI Only
# Make deployment script executable
chmod +x docker/deploy-ui.sh
# Deploy Angular UI (requires MCP server to be running)
./docker/deploy-ui.sh
# Or using npm scripts
npm run deploy:ui
Deploy Complete System
# Deploy both MCP server and Angular UI
npm run deploy:all
# Or manually
docker compose -f docker/docker-compose.yml up -d
Verify Docker Environment
# Verify Docker setup before deployment
./docker/verify-docker.sh
# Or using npm
npm run verify:docker
For detailed Docker setup, see
š Web Interface
Angular MCP Tools UI
The server includes a modern Angular-based web interface that provides:
- MCP JSON-RPC 2.0 Compliance: Full support for standardized MCP protocol
- Interactive Tool Discovery: Browse and search available tools with filtering
- Dynamic Form Generation: Automatic parameter input forms based on JSON Schema
- Real-time Tool Execution: Execute tools directly from the web interface
- Response Visualization: Formatted display of tool execution results
- Error Handling: Comprehensive error reporting and debugging information
Using the Web Interface
- Access: Navigate to
http://localhost:4200
after starting the containers- Note: Port 4200 is the standard Angular CLI development port
- Discover Tools: Browse available tools by agent or category
- Filter & Search: Use the search bar and filters to find specific tools
- Execute Tools: Click on any tool to open the execution interface
- View Results: See formatted responses and handle errors gracefully
MCP Protocol Support
The web interface fully implements the MCP JSON-RPC 2.0 specification:
// Example MCP JSON-RPC 2.0 request
{
"jsonrpc": "2.0",
"id": "req_123",
"method": "tools/list",
"params": {}
}
// Example tool execution request
{
"jsonrpc": "2.0",
"id": "req_456",
"method": "tools/call",
"params": {
"name": "document_create",
"arguments": {
"number": "DOC-123",
"name": "New Document",
"type": "SPEC"
}
}
}
š Features
Recent Enhancements (v1.2.0)
Claude Desktop Integration:
- ā Native stdio support for seamless Claude Desktop integration
- ā
Stdio-only mode (
MCP_STDIO_ONLY=true
) - disables HTTP server for cleaner operation - ā Optimized logging - file-only logging in stdio mode
- ā Package bin entry - installable as a command-line tool
- ā Comprehensive setup guide -
Previous Enhancements (v1.1.0)
Document Agent Expansion: The Document Agent has been significantly enhanced with 22 additional tools:
- Angular UI Deployment: Complete Docker deployment configuration with multi-stage builds
- MCP JSON-RPC 2.0 Support: Full protocol compliance in both server and client
- Docker Build Fix: Changed from npm ci to npm install for Angular UI (generates package-lock.json during build)
- Angular Config Fix: Removed environment file dependencies and Angular Material references that were causing build failures
- HTML Template Fix: Fixed unterminated textarea tags in Angular component templates
- Polyfills Configuration: Added proper TypeScript compilation configuration for polyfills
- Polyfills Import Fix: Simplified polyfills.ts by removing @angular/localize/init and fixing zone.js import path
- Nginx Configuration Fix: Removed invalid 'must-revalidate' directive from gzip_proxied configuration
- UI Performance Fix: Added debounced search input and safe JSON display to prevent browser freezing
- TypeScript Fixes: Fixed NodeJS.Timeout type usage and HttpClient response type handling
- Dependency Updates: Updated Angular from v17 to v18 and suppressed npm deprecation warnings
- 22 new tools added across Priority 1-3 implementation tiers
- Enhanced API Service with PATCH method and multipart form data support
- Comprehensive error handling with proper TypeScript typing
- Advanced search capabilities with date ranges and lifecycle state filtering
- Bulk operations for efficient batch processing
- Content management with upload/download and attachment handling
- Relationship management for document linking and references
Agents
- Part Agent: Part management, BOM structures, part searches (24 tools)
- Document Agent: Comprehensive document management with 25 tools:
- Core Lifecycle: Create, update, checkout, checkin, revise documents
- Version Management: Version history, iterations, iteration notes
- Content Management: Upload/download content, attachment handling
- Relationship Management: Document references and linking
- Advanced Search: Multi-criteria search with date/lifecycle filters
- Bulk Operations: Batch updates and lifecycle actions
- Change Agent: Change request management (16 tools)
- Workflow Agent: Workflow items and processes (~12 tools)
- Project Agent: Project management operations (~10 tools)
- DataAdmin Agent: Container/context discovery and management (13 tools)
- Container Discovery: List products, libraries, organizations, projects
- Structure Navigation: Folders and folder contents
- Configuration Management: Option pools and option sets for products/libraries
- ServerManager Agent: Multi-server management and switching (5 tools) NEW
- Server Discovery: List all configured servers with connection details
- Dynamic Switching: Switch between Production/Development/Test environments on-the-fly
- Connection Testing: Test server connectivity before switching
- Session Management: Get current server and detailed server information
Capabilities
- Session-based authentication with CSRF token management
- Automatic re-authentication on session expiry
- Comprehensive HTTP method support (GET, POST, PUT, PATCH, DELETE)
- OData query support for all endpoints with advanced filtering
- Multipart form data support for file uploads
- Extensible agent-based architecture
- Comprehensive error handling and logging
- Bulk operation support for efficient processing
šļø Architecture
windchill-mcp-server/
āāā src/
ā āāā agents/ # Agent implementations
ā ā āāā base-agent.ts
ā ā āāā part-agent.ts
ā ā āāā change-agent.ts
ā ā āāā document-agent.ts
ā ā āāā workflow-agent.ts
ā ā āāā project-agent.ts
ā āāā config/ # Configuration
ā ā āāā windchill.ts
ā āāā services/ # API services
ā ā āāā windchill-api.ts
ā āāā index.ts # Main entry point
āāā docker/
ā āāā Dockerfile # Production container
ā āāā Dockerfile.dev # Development container
ā āāā docker-compose.yml # Production compose
ā āāā docker-compose.dev.yml # Development compose
ā āāā .env.example # Environment template
ā āāā *.sh # Setup and run scripts
āāā docs/ # Documentation files
š§ Configuration
Environment Variables
Variable | Required | Default | Description |
---|---|---|---|
WINDCHILL_URL | Yes | - | Windchill base URL |
WINDCHILL_USER | Yes | - | Windchill username |
WINDCHILL_PASSWORD | Yes | - | Windchill password |
MCP_STDIO_ONLY | No | false | Stdio-only mode (recommended for Claude Desktop) |
MCP_SERVER_NAME | No | windchill-mcp | MCP server name |
MCP_SERVER_VERSION | No | 1.0.0 | Server version |
MCP_SERVER_PORT | No | 3000 | Server port (ignored when MCP_STDIO_ONLY=true) |
LOG_LEVEL | No | info | Logging level (use 'error' for Claude Desktop) |
š API Endpoints
The server uses Windchill REST API with OData endpoints:
/ProdMgmt/Parts
- Part management/DocMgmt/Documents
- Document management/ChangeMgmt/ChangeRequests
- Change management/WorkflowMgmt/WorkItems
- Workflow management/ProjMgmt/Projects
- Project management
š ļø Development
Available Scripts
# Local development
npm run dev # Start with hot reload
npm run build # Build TypeScript
npm start # Run production build
# Docker
npm run docker:build # Build Docker image
npm run docker:up # Start container
npm run docker:down # Stop container
npm run docker:logs # View logs
npm run docker:dev # Start development container
Adding New Agents
- Create agent file in
src/agents/
:
import { BaseAgent } from "./base-agent.js";
export class MyAgent extends BaseAgent {
protected agentName = "my-agent";
protected tools = [
{
name: "my_tool",
description: "Tool description",
inputSchema: {
/* JSON schema */
},
handler: async (params) => {
/* implementation */
},
},
];
}
- Register in
src/index.ts
:
import { MyAgent } from "./agents/my-agent.js";
const agents = {
// ... existing agents
myAgent: new MyAgent(),
};
š³ Docker Details
Production Container
- Base: Node.js 20 Alpine
- User: Non-root (nodejs:1001)
- Port: 3000
- Health Check: 30s interval
Angular UI Container
- Base: Multi-stage build (Node.js 20 + Nginx Alpine)
- Build Stage: Compiles Angular TypeScript to JavaScript using npm install
- Production Stage: Nginx serves static files with API proxy
- Port: 8080 (internal), mapped to 4200 (external)
- API Proxy: Routes
/api/*
requests to MCP server - SPA Support: Handles Angular client-side routing
- Dependency Management: Generates package-lock.json during build process
Development Container
- Hot Reload: Enabled via ts-node-dev
- Source Mounting: Live code updates
- Debug Logging: Enabled
See for complete Docker documentation.
š Security
- Session-based authentication with CSRF tokens
- Non-root container user
- Environment-based secrets
- Health checks enabled
- Network isolation via Docker networks
š Integration with Data Platform
This MCP server is part of a larger data platform architecture:
Data Sources (PLM/ERP/MES) ā MCP Agents ā Kafka ā Data Lake ā Analytics
See IT Architecture.mmd
for the complete architecture diagram.
š Troubleshooting
Authentication Fails
- Verify WINDCHILL_URL is accessible
- Check username/password in .env
- Ensure Windchill REST API is enabled
Container Issues
# View logs
docker-compose logs -f
# Check container status
docker-compose ps
# Restart container
docker-compose restart
Connection Issues
# Test Windchill connectivity from container
docker exec windchill-mcp-server ping plm.windchill.com
š„ļø Claude Desktop vs Web UI
This server supports two distinct usage modes:
Claude Desktop Mode (Recommended)
Use MCP_STDIO_ONLY=true
for:
- ā Integration with Claude Desktop app
- ā Stdio-based MCP protocol communication
- ā File-only logging (no console output)
- ā No HTTP server overhead
- ā Simplified configuration
See:
Web UI Mode
Default mode with HTTP server for:
- ā Interactive Angular web interface on port 4200
- ā REST API on port 3000
- ā Multi-server switching capability
- ā Real-time tool testing
- ā Docker deployment support
See: Docker deployment section above
š License
ISC
š¤ Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
š Support
For issues and questions:
- Check for Docker-specific issues
- Check for development guidelines
- Review logs:
docker-compose logs -f