UNPKG

defect-inspection-tools-mcp-server

Version:

Defect inspection tools server handling defect detection, analysis, and reporting with AI/ML capabilities for quality control

265 lines (215 loc) 8.93 kB
# Defect Inspection Tools MCP Server A TypeScript-based server for handling defect inspection, analysis, and reporting with AI/ML capabilities for quality control. ## Features - Defect detection and analysis - Inspection management (SIRE, CDI, PSC) - Audit and compliance tracking - Fleet defect monitoring - Export and reporting capabilities - Typesense integration for search - MongoDB integration for data storage ## Prerequisites - Node.js (v18 or higher) - MongoDB - Typesense - OpenAI API key - LlamaParse API key - Perplexity API key ## Configuration You can configure the server in three ways: ### 1. Environment-Specific Configuration Files The server now supports environment-specific configuration files. Create a file named `.env.{environment}` where `{environment}` matches your NODE_ENV value: ``` .env.development # Used when NODE_ENV=development (default) .env.production # Used when NODE_ENV=production .env.staging # Used when NODE_ENV=staging .env # Fallback if no environment-specific file is found ``` To use a specific environment: ```bash NODE_ENV=production node dist/index.js ``` See the `env.production.example` file for a template of production environment variables. ### 2. Environment Variables (.env file) Create a `.env` file in the root directory: ```env MONGO_URI=mongodb://localhost:27017 DB_NAME=mcp_defect_inspection TYPESENSE_HOST=localhost TYPESENSE_PORT=8108 TYPESENSE_PROTOCOL=http TYPESENSE_API_KEY=your_typesense_api_key OPENAI_API_KEY=your_openai_api_key LLAMA_API_KEY=your_llama_api_key VENDOR_MODEL=gpt-4 S3_API_TOKEN=your_s3_api_token S3_GENERATE_HTML_URL=your_s3_generate_html_url LLAMA_PARSE_URL=your_llama_parse_url PERPLEXITY_API_KEY=your_perplexity_api_key GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GOOGLE_REDIRECT_URI=your_google_redirect_uri GOOGLE_API_KEY=your_google_api_key GOOGLE_SEARCH_ENGINE_ID=your_google_search_engine_id COHERE_API_KEY=your_cohere_api_key COMPANY_NAME=your_company_name # API Configuration SNAPSHOT_URL=https://dev-api.siya.com/v1.0/vessel-info/qna-snapshot JWT_TOKEN=your_jwt_token_here ``` ### 3. Command Line Arguments Command line arguments will override values from the `.env` file: ```bash node dist/index.js \ --mongo-uri mongodb://localhost:27017 \ --db-name mcp_defect_inspection \ --typesense-host localhost \ --typesense-port 8108 \ --typesense-protocol http \ --typesense-api-key your_api_key \ --openai-api-key your_openai_key \ --llama-api-key your_llama_key \ --vendor-model gpt-4 \ --s3-api-token your_s3_token \ --perplexity-api-key your_perplexity_key \ --company-name your_company_name ``` #### Available Command Line Arguments | Argument | Environment Variable | Default | Description | |----------|---------------------|---------|-------------| | `--mongo-uri` | `MONGO_URI` | `mongodb://localhost:27017` | MongoDB connection URI | | `--db-name` | `DB_NAME` | `mcp_defect_inspection` | MongoDB database name | | `--typesense-host` | `TYPESENSE_HOST` | `localhost` | Typesense server host | | `--typesense-port` | `TYPESENSE_PORT` | `8108` | Typesense server port | | `--typesense-protocol` | `TYPESENSE_PROTOCOL` | `http` | Typesense protocol (http/https) | | `--typesense-api-key` | `TYPESENSE_API_KEY` | _(empty)_ | Typesense API key | | `--openai-api-key` | `OPENAI_API_KEY` | _(empty)_ | OpenAI API key | | `--llama-api-key` | `LLAMA_API_KEY` | _(empty)_ | LlamaParse API key | | `--vendor-model` | `VENDOR_MODEL` | `gpt-4` | Default LLM model | | `--s3-api-token` | `S3_API_TOKEN` | _(empty)_ | S3 API token | | `--s3-generate-html-url` | `S3_GENERATE_HTML_URL` | _(empty)_ | S3 HTML generation URL | | `--llama-parse-url` | `LLAMA_PARSE_URL` | _(empty)_ | LlamaParse service URL | | `--perplexity-api-key` | `PERPLEXITY_API_KEY` | _(empty)_ | Perplexity API key | | `--google-client-id` | `GOOGLE_CLIENT_ID` | _(empty)_ | Google OAuth client ID | | `--google-client-secret` | `GOOGLE_CLIENT_SECRET` | _(empty)_ | Google OAuth client secret | | `--google-redirect-uri` | `GOOGLE_REDIRECT_URI` | _(empty)_ | Google OAuth redirect URI | | `--google-api-key` | `GOOGLE_API_KEY` | _(empty)_ | Google API key | | `--google-search-engine-id` | `GOOGLE_SEARCH_ENGINE_ID` | _(empty)_ | Google Custom Search Engine ID | | `--cohere-api-key` | `COHERE_API_KEY` | _(empty)_ | Cohere API key | | `--company-name` | `COMPANY_NAME` | _(required)_ | Company name (mandatory) | | `--snapshot-url` | `SNAPSHOT_URL` | `https://dev-api.siya.com/v1.0/vessel-info/qna-snapshot` | API endpoint for vessel QnA snapshots | | `--jwt-token` | `JWT_TOKEN` | _(default dev token)_ | JWT token for API authentication | ## Installation 1. Clone the repository: ```bash git clone https://github.com/syia-ai/defect_inspection_tools_mcp_server.git cd defect_inspection_tools_mcp_server ``` 2. Install dependencies: ```bash npm install ``` 3. Build the project: ```bash npm run build ``` 4. Start the server: ```bash npm start ``` ## Development For development with hot reload: ```bash npm run dev ``` ## Testing Test the server with MCP Inspector: ```bash npm test ``` ## MCP Tools and Resources ### Defect Management Tools - `universal_defect_search`: Comprehensive defect search with multiple filters - `get_all_vessel_defects_records`: Get all defect records for a vessel - `get_summary_of_defects`: Get summary statistics of defects - `export_fleet_defects`: Export defect data for fleet analysis ### Inspection Management Tools - `get_tmsa_summary`: Get TMSA (Tanker Management Self Assessment) summary - `get_sire_reports_from_ocimf`: Retrieve SIRE reports from OCIMF - `fetch_fleet_historical_sire_observations`: Get historical SIRE observations - `get_cdi_reports_from_ocimf`: Retrieve CDI reports from OCIMF - `get_psc_inspection_defects`: Get Port State Control inspection defects ### Audit & Compliance Tools - `get_vir_status_overview`: Get Vessel Inspection Report status overview - `get_internal_audit_summary`: Get internal audit summary - `get_fleet_sire_cdi_inspection_status`: Get fleet SIRE/CDI inspection status - `get_fleet_vir_status_overview`: Get fleet VIR status overview - `get_fleet_last_internal_audit_summary`: Get fleet last internal audit summary ## Project Structure ``` src/ ├── tools/ │ ├── handlers/ │ │ ├── defectTools.ts # Defect management and analysis │ │ ├── inspectionTools.ts # Inspection management (SIRE, CDI, PSC) │ │ ├── auditTools.ts # Audit and compliance tools │ │ ├── exportTools.ts # Data export functionality │ │ └── universalTools.ts # Universal search and utility tools │ ├── schema.ts # Tool schema definitions │ └── index.ts # Main tool handler ├── config/ │ └── index.ts # Configuration management ├── types/ │ └── index.ts # TypeScript type definitions ├── prompts/ │ └── index.ts # Prompt management ├── resources/ │ └── index.ts # Resource management └── index.ts # Main application entry point ``` ## Key Features ### Defect Detection & Analysis - Comprehensive defect search and filtering - Risk categorization and priority assessment - Defect tracking and status management - Historical defect analysis ### Inspection Management - SIRE (Ship Inspection Report) integration - CDI (Condition Assessment Program) reports - Port State Control (PSC) inspection tracking - TMSA (Tanker Management Self Assessment) support ### Audit & Compliance - Vessel Inspection Report (VIR) management - Internal audit tracking and reporting - Fleet-wide compliance monitoring - Regulatory requirement tracking ### Vessel Data Integration - Link defects and inspections to vessels by IMO - Fleet-wide defect monitoring - Historical inspection data analysis - Export capabilities for reporting ### Search Integration - Full-text search using Typesense - Vector search for semantic matching - Filtering and pagination support ## Error Handling The application implements comprehensive error handling: - Input validation - Database operation error handling - API integration error handling - Proper error logging - User-friendly error messages ## Logging Logging is implemented using Winston that: - Logs to console with timestamps - Includes different log levels (debug, info, error) - Provides detailed error information - Supports structured logging ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License This project is licensed under the MIT License - see the LICENSE file for details.