Skip to main content
Glama

claude-safe-mcp

by saxyguy81
README.md10.2 kB
# Keap MCP Server [![Coverage](https://img.shields.io/badge/coverage-55%25-yellow.svg)](https://github.com/yourusername/keapmcp/actions) [![Python](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11-blue.svg)](https://github.com/yourusername/keapmcp) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) A high-performance Model Context Protocol (MCP) server for interacting with Keap CRM data with advanced features including HTTP/2 support, comprehensive diagnostics, and bulk operations. ## Features ### Core Contact & Tag Management - **Comprehensive Contact Management** - List, search, filter, and get detailed contact information - **Advanced Tag Operations** - Full tag lifecycle management including creation, querying, and batch operations - **Batch Tag Operations** - Apply or remove multiple tags from multiple contacts efficiently - **Custom Field Operations** - Search contacts by custom field values and bulk update custom fields - **Complex Logical Filtering** - Support for AND, OR, NOT operators with nested conditions ### Performance & Optimization - **HTTP/2 Support** - Enhanced connection performance with connection pooling - **Intelligent Rate Limiting** - Daily request limits with adaptive backoff strategies - **Query Optimization** - Intelligent server-side vs client-side filtering with performance analytics - **Performance Monitoring** - Real-time query analysis and optimization suggestions - **Persistent Caching** - SQLite-based caching to reduce API calls and improve performance ### Advanced Features - **Comprehensive Diagnostics** - API performance metrics, system monitoring, and health checks - **Enhanced Error Handling** - Robust retry logic with exponential backoff for different error types - **Bulk Custom Field Updates** - Efficiently set custom field values across multiple contacts - **Advanced Filter Operators** - 15+ operators including BETWEEN, IN, SINCE, STARTS_WITH, etc. - **ID List Operations** - Utility functions for working with contact and tag ID sets ## Architecture The Keap MCP Server uses a streamlined, high-performance architecture: - **API Client** (`src/api/client.py`) - Enhanced Keap API communication with HTTP/2, rate limiting, and diagnostics - **MCP Tools** (`src/mcp/`) - Comprehensive MCP protocol implementation with optimization - **Cache Manager** (`src/cache/`) - SQLite-based persistent caching with intelligent invalidation - **Optimization Engine** (`src/mcp/optimization/`) - Query optimization and performance analytics - **Schemas** (`src/schemas/`) - Data validation and models - **Utils** (`src/utils/`) - Shared utilities for contact processing and filtering ## MCP Tools The server exposes 17 comprehensive MCP tools: ### Contact Operations 1. `list_contacts` - List contacts with filtering and pagination (now optimized) 2. `search_contacts_by_email` - Find contacts by email address 3. `search_contacts_by_name` - Find contacts by name 4. `get_contact_details` - Get detailed information about a specific contact 5. `query_contacts_by_custom_field` - Query contacts by custom field value ### Tag Operations 6. `get_tags` - Retrieve tags with optional filtering 7. `get_tag_details` - Get detailed information about a specific tag 8. `get_contacts_with_tag` - Get contacts that have a specific tag 9. `create_tag` - Create a new tag ### Tag Management (Batch Operations) 10. `modify_tags` - Add or remove tags from contacts 11. `apply_tags_to_contacts` - Apply multiple tags to multiple contacts using batch operations 12. `remove_tags_from_contacts` - Remove multiple tags from multiple contacts ### Custom Field Management 13. `set_custom_field_values` - Bulk update custom field values across multiple contacts ### Advanced Query & Performance Operations 14. `query_contacts_optimized` - Advanced contact query with optimization and performance analytics 15. `analyze_query_performance` - Analyze query performance and optimization potential ### System Operations 16. `get_api_diagnostics` - Comprehensive API diagnostics and performance metrics ### Utility Operations 17. `intersect_id_lists` - Find the intersection of multiple ID lists ## Getting Started ### Prerequisites - Python 3.9 or higher - Keap API credentials ### Installation 1. Clone the repository: ``` git clone https://github.com/yourusername/keapmcp.git cd keapmcp ``` 2. Install dependencies: ``` pip install -r requirements.txt ``` 3. Configure your Keap API credentials: - The application uses a `.env` file for configuration - The API key has been copied from keapsync, but you can modify it if needed - The configuration includes: ``` KEAP_API_KEY=your_api_key_here KEAP_API_BASE_URL=https://api.infusionsoft.com/crm/rest/v1 KEAP_MCP_HOST=127.0.0.1 KEAP_MCP_PORT=5000 KEAP_MCP_LOG_LEVEL=INFO KEAP_MCP_LOG_FILE=keap_mcp_server.log KEAP_MCP_CACHE_ENABLED=true KEAP_MCP_CACHE_TTL=3600 ``` ### Running the Server ``` python run.py --host 127.0.0.1 --port 5000 ``` Command-line options: - `--host` - Host to bind to (default: 127.0.0.1) - `--port` - Port to listen on (default: 5000) - `--log-level` - Logging level (default: INFO) - `--log-file` - Log file path (default: keap_mcp_server.log) - `--no-console-log` - Disable console logging ## Testing & Coverage The Keap MCP Server includes a comprehensive test suite to ensure reliability and correct operation with full CI/CD pipeline integration. ### Quick Testing Use the Makefile for easy test execution: ```bash # Run all unit tests make test # Run tests with coverage reporting make coverage # Generate HTML coverage report make coverage-html # Run service-specific tests make test-services make test-models # Full development workflow make dev-test ``` ### CI/CD Integration The project includes automated testing and coverage reporting: - **Continuous Integration**: Tests run on Python 3.9, 3.10, and 3.11 - **Coverage Tracking**: Minimum 60% coverage enforced - **Pre-commit Checks**: Code formatting, linting, and security checks - **Coverage Badges**: Automatically updated on main branch ### Test Categories - **Unit Tests** (`tests/unit/`) - Individual component testing with comprehensive mocking - **Integration Tests** (`tests/integration/`) - End-to-end functionality verification - **Performance Tests** (`tests/performance/`) - Load and optimization validation - **API Validation** - Keap API response format verification ### Coverage Requirements - **Current Coverage**: 55% integration coverage, varies by component - **API Client**: Core functionality tested with comprehensive mocking - **MCP Tools**: Integration tests with mock dependencies - **Cache System**: Comprehensive persistence and performance testing - **Utilities**: Contact processing and filtering functionality tested - **Optimization**: Performance analytics and query optimization covered ### Running Specific Tests ```bash # Run all tests python -m pytest tests/ -v # With coverage reporting python -m pytest tests/ --cov=src --cov-fail-under=90 # Integration tests (requires running server) python -m pytest tests/integration/ -v ``` ## Using the MCP Server ### Example: List Contacts (Now Optimized) ```json { "function": "list_contacts", "params": { "filters": [ { "field": "email", "operator": "contains", "value": "@company.com" } ], "limit": 50, "include": ["id", "given_name", "family_name", "email"] } } ``` *Note: `list_contacts` now uses the optimization engine internally for better performance. For detailed performance metrics, use `query_contacts_optimized` directly.* ### Example: Search by Email ```json { "function": "search_contacts_by_email", "params": { "email": "john.doe@company.com", "include": ["id", "given_name", "family_name", "email", "tags"] } } ``` ### Example: Get Tags ```json { "function": "get_tags", "params": { "include_categories": true, "limit": 100 } } ``` ### Example: Batch Tag Operations ```json { "function": "apply_tags_to_contacts", "params": { "tag_ids": ["123", "456"], "contact_ids": ["1001", "1002", "1003"] } } ``` ### Example: Custom Field Query ```json { "function": "query_contacts_by_custom_field", "params": { "field_id": "7", "field_value": "Engineering", "operator": "contains", "include": ["id", "given_name", "family_name", "email"] } } ``` ### Example: Create New Tag ```json { "function": "create_tag", "params": { "name": "VIP Customer", "description": "High-value customer segment", "category_id": "2" } } ``` ### Example: Bulk Custom Field Updates ```json { "function": "set_custom_field_values", "params": { "field_id": "7", "contact_ids": ["1001", "1002", "1003"], "common_value": "VIP Customer" } } ``` Or with individual values per contact: ```json { "function": "set_custom_field_values", "params": { "field_id": "7", "contact_values": { "1001": "Gold Tier", "1002": "Silver Tier", "1003": "Bronze Tier" } } } ``` ### Example: API Diagnostics ```json { "function": "get_api_diagnostics", "params": {} } ``` ### Example: ID List Intersection ```json { "function": "intersect_id_lists", "params": { "lists": [ {"list_id": "active_contacts", "item_ids": ["1", "2", "3", "4"]}, {"list_id": "newsletter_subscribers", "item_ids": ["2", "3", "5", "6"]} ], "id_field": "item_ids" } } ``` ## Performance Features ### HTTP/2 Support The server uses HTTP/2 for enhanced performance with connection pooling and keepalive connections. ### Rate Limiting - Daily request limits (25,000 requests/day by default) - Intelligent backoff strategies - Rate limit monitoring and diagnostics ### Caching Strategy - SQLite-based persistent caching - Intelligent cache invalidation - TTL-based expiration - Cache hit/miss tracking ### Error Handling - Exponential backoff for retries - Different strategies for timeout, network, and HTTP errors - Comprehensive error tracking and diagnostics ## License This project is licensed under the MIT License - see the LICENSE file for details.

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/saxyguy81/mcp-keap'

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