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
Markdown
# 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.