Skip to main content
Glama

SafetyCulture MCP Server

by zerubroberts
IMPLEMENTATION.md6.31 kB
# SafetyCulture MCP Server - Implementation Details This document provides a detailed explanation of how the SafetyCulture MCP Server was implemented, including the development process, architecture decisions, and key components. ## Development Process The SafetyCulture MCP (Model Context Protocol) Server was developed in several stages: ### 1. Initial Setup and Planning - Created project structure with proper organization - Set up Git repository for version control - Added README and requirements.txt files - Established core architecture based on MCP best practices ### 2. SafetyCulture API Integration - Implemented SafetyCulture API client with proper authentication - Initially approached the API using the inspection-specific endpoints - Discovered the need to use Feed API for more efficient data retrieval - Updated implementation to use the Feed API for both inspections and actions ### 3. MCP Tool Implementation - Created tools for authenticating with the SafetyCulture API - Developed inspection-related tools for retrieving and analyzing inspection data - Added action-related tools with detailed information and filtering options - Implemented trending and comparison functionality for analytics ### 4. Testing and Refinement - Created test scripts to verify API connectivity - Developed utilities to test different API endpoints - Added error handling and detailed error messages - Enhanced tools with additional filtering and display options ### 5. Documentation and Usability - Documented all tools and functionality - Created batch files for running the server and testing - Added detailed usage examples in the README - Consolidated multiple batch files into a clean, user-friendly interface ## Architecture Overview The SafetyCulture MCP Server follows a modular architecture: ``` . ├── src/ # Source code │ ├── main.py # Entry point │ ├── safetyculture_api/ # API client module │ │ ├── __init__.py │ │ └── client.py # API client implementation │ ├── tools/ # MCP tools │ │ ├── __init__.py │ │ └── inspection_tools.py # Inspection and action tools │ └── utils/ # Utility modules │ ├── __init__.py │ ├── analysis.py # Data analysis utilities │ ├── config.py # Configuration management │ └── date_utils.py # Date parsing utilities ├── test_*.py # Test scripts └── *.bat # Batch files for running and testing ``` ## Key Components ### 1. SafetyCulture API Client The API client (`safetyculture_api/client.py`) handles all communication with the SafetyCulture API: - Authentication using API keys - Connection testing - Data retrieval via the Feed API - Flexible endpoint selection The client automatically handles: - Authentication headers - Response parsing - Error handling - Appropriate URL formatting ### 2. MCP Tools The MCP tools are defined in `tools/inspection_tools.py` and registered in `main.py`: #### Authentication Tool - `authenticate`: Validate API key and establish connection #### Inspection Tools - `get_inspections`: Retrieve inspection data with filtering - `get_inspection_trends`: Analyze inspection trends over time - `compare_injury_reports`: Compare data between time periods #### Action Tools - `get_actions`: List actions with advanced filtering - `get_action_details`: Get detailed information about specific actions ### 3. Utility Modules Several utility modules support the core functionality: - `date_utils.py`: Parses natural language date expressions - `analysis.py`: Performs data analysis and trend detection - `config.py`: Manages configuration and environment variables ### 4. Parameter Models All tools use Pydantic models to define and validate parameters: - `ApiKeyParam`: For authentication - `GetInspectionsParams`: For inspection retrieval - `GetInspectionTrendsParams`: For trend analysis - `GetActionDetailsParams`: For action details - `CompareInjuryReportsParams`: For comparisons ## Feed API Integration One of the key advancements in the implementation was switching to the SafetyCulture Feed API: - **Original approach**: Used individual inspection endpoints that required specific IDs - **Improved approach**: Uses Feed API endpoints to retrieve collections of resources The Feed API offers several advantages: - Batch retrieval of multiple items - Filtering capabilities - More efficient data access Feed API endpoints used: - `/feed/inspections`: For inspection data - `/feed/actions`: For action data ## Using the Server ### Running the Server The server can be run using: - `run_server.bat`: Runs with settings from .env file - `run_with_key.bat YOUR_API_KEY`: Runs with a provided API key ### Testing the API API testing is available through: - `test_api.bat YOUR_API_KEY`: Full API test - `test_api.bat feed YOUR_API_KEY`: Feed API test - `test_api.bat url`: URL accessibility check ### Claude Integration The server is designed to work with Claude for Desktop: 1. Configure Claude for Desktop to use this MCP server 2. Start conversations with Claude 3. Use natural language to query SafetyCulture data ## Development Decisions ### Feed API vs Individual Endpoints The decision to use the Feed API was based on: - More efficient data retrieval - Ability to fetch multiple items without needing IDs - Better support for filtering and querying ### Parameter Models Pydantic models were chosen for parameter handling because they: - Provide automatic validation - Support optional parameters - Generate clear documentation - Integrate well with FastAPI ### Batch File Consolidation Multiple batch files were consolidated into a few core files to: - Simplify the user interface - Reduce redundancy - Make the project more maintainable - Improve the overall user experience ## Future Enhancements Potential future enhancements include: - Adding more advanced filtering options - Implementing data visualization enhancements - Adding support for more SafetyCulture API features - Developing a web interface for viewing results

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zerubroberts/safetyculture-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server