Skip to main content
Glama
Insight Digger MCP
by sandsiv

Disclaimer: this project and documentation were created with active usage of AI with basic code and content review and are in the "beta" state as a part of POC project. There can be errors in documentation.

Insight Digger MCP

Enterprise-grade Model Context Protocol (MCP) system for data analysis with Claude Desktop integration.

Architecture Overview

This project provides a sophisticated 3-layer MCP architecture designed for enterprise environments:

  1. MCP Bridge ↔ MCP Client Flask API (Custom HTTP REST endpoints)

  2. MCP Client Flask API ↔ MCP Server subprocess (Standard MCP protocol)

  3. MCP Server ↔ Backend Data API (HTTP calls to enterprise backend)

Key Enterprise Features

  • šŸ” Dynamic JWT Authentication: 14-day JWT tokens with session management

  • 🧠 Intelligent Caching: Parameter caching and auto-injection for efficient workflows

  • šŸ“‹ Workflow Guidance: LLM-optimized tool orchestration with conversation management

  • šŸ‘„ Multi-User Support: Centralized service with session isolation

  • šŸ¢ Enterprise Integration: Compatible with existing authentication and monitoring systems

Related MCP server: MCP JSON Database Server

Setup Options

For end users who want to use Claude Desktop with Insight Digger:

1. Install the NPX Bridge

npx @sandsiv/data-narrator-mcp

2. Configure Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "data-narrator": {
      "command": "npx",
      "args": ["-y", "@sandsiv/data-narrator-mcp@1.0.0"],
      "env": {
        "MCP_CLIENT_URL": "https://your-mcp-service.com"
      }
    }
  }
}

Note: The MCP_CLIENT_URL environment variable is optional. By default, the system will use Sandsiv's hosted MCP service. Only provide this variable if you're deploying your own version of the data-narrator-mcp service.

3. Usage in Claude Desktop

  1. Authenticate first: Use the setup_authentication tool with your API URL and JWT token

  2. Start analysis: Begin with list_sources to see available data

  3. Follow the workflow: The system guides you through multi-step analysis processes

Option 2: Direct API Integration (For developers)

For custom integrations or testing:

1. Start the MCP Services

# Install dependencies
./scripts/setup/install_dependencies.sh

# Activate virtual environment
source venv/bin/activate

# Start the Flask API service  
npm run dev:flask
# OR
python src/python/scripts/start_flask_api.py

2. Use the REST API

# Initialize session
curl -X POST http://localhost:5000/init \
  -H "Content-Type: application/json" \
  -d '{"session_id": "test-session", "apiUrl": "https://your-api.com", "jwtToken": "your-jwt"}'

# Get available tools
curl -X POST http://localhost:5000/tools \
  -H "Content-Type: application/json" \
  -d '{"session_id": "test-session"}'

# Call a tool
curl -X POST http://localhost:5000/call-tool \
  -H "Content-Type: application/json" \
  -d '{"session_id": "test-session", "tool": "list_sources", "params": {}}'

Development Setup

Prerequisites

  • Python 3.8+

  • Node.js 18+ (for NPX bridge)

  • Access to Insight Digger backend API

Local Development

# Clone the repository
git clone <repository-url>
cd insight_digger_mcp

# Install all dependencies
./scripts/setup/install_dependencies.sh --dev

# Activate virtual environment
source venv/bin/activate

# Run tests
npm test
# OR separately:
npm run test:python
npm run test:nodejs

Testing the NPX Bridge Locally

# Start your MCP client service
npm run dev:flask

# In another terminal, test the bridge
npm run dev:bridge
# Use the MCP Inspector or Claude Desktop to test

Authentication Flow

JWT Token Management

  • Lifetime: 14 days

  • Refresh: Through the main platform web UI (outside MCP scope)

  • Validation: Bridge handles expired tokens by requesting re-authentication

Session Management

  • Single Session: One active session per bridge instance

  • Session ID: UUID generated for each bridge startup

  • Isolation: Multiple Claude Desktop instances use separate sessions

Tools & Workflow

Available Analysis Tools

The system provides LLM-optimized tools for:

  • šŸ“Š Data Source Discovery: list_sources, get_source_structure

  • āš™ļø Analysis Configuration: prepare_analysis_configuration

  • šŸš€ Execution: execute_analysis_from_config

  • šŸ“ˆ Results: Interactive dashboards and summaries

Intelligent Caching

  • Parameter Injection: Previously fetched data automatically included in subsequent calls

  • Workflow Memory: System remembers source selections, configurations, and analysis state

  • Efficiency: LLM doesn't need to repeat large data structures between steps

Error Handling

  • Authentication Errors: Clear guidance for JWT/URL validation failures

  • Tool Errors: Contextual error messages from backend systems

  • Session Errors: Automatic cleanup and re-authentication prompts

Configuration

Environment Variables

  • MCP_CLIENT_URL: URL of the MCP Client Flask API service

  • INSIGHT_DIGGER_API_URL: Backend API URL (configured in MCP server layer)

Service Configuration

The MCP Server (mcp_server.py) connects to your backend API using configuration provided during the /init call.

Documentation

Production Deployment

Service Deployment

# Install as systemd service (Linux)
sudo cp data-narrator-mcp.service /etc/systemd/system/
sudo systemctl enable data-narrator-mcp
sudo systemctl start data-narrator-mcp

NPX Package Publishing

# Build and publish the bridge package
npm version patch
npm publish --access public

Monitoring

  • Service logs: journalctl -u data-narrator-mcp -f

  • Bridge logs: Console output in Claude Desktop

  • Session tracking: All sessions logged with UUIDs

Security & Production Readiness

āœ… Status: Ready for external publication
šŸ” Security: Comprehensive credential validation implemented
šŸ“Š Performance: Optimized with session reuse and direct validation

Security Features

  • Immediate credential validation during /init endpoint

  • Session reuse optimization - no redundant validation calls

  • Proper HTTP status codes (401 for auth failures, 500 for server errors)

  • Input validation for API URLs and JWT tokens

  • Resource efficiency - MCP servers created only for valid credentials

  • 5-second timeout for validation requests

Security Considerations

  • JWT Tokens: Never logged or stored permanently

  • Session Isolation: Proper cleanup prevents cross-session data leakage

  • HTTPS Required: All production communications must use HTTPS

  • Enterprise Auth: Integrates with existing authentication systems

  • Immediate Auth Feedback: Invalid credentials rejected in <5 seconds

  • Resource Protection: No MCP instances created for invalid credentials

See SECURITY.md for detailed security documentation.

Support

For issues or questions:

  1. Check the documentation in the docs/ folder

  2. Review the service logs for error details

  3. Verify JWT token validity and API connectivity

  4. Ensure MCP Client service is running and accessible

License

MIT License - See LICENSE file for details.

Available Tools

10 tools
analyze_chartsA

šŸ”’ [Requires Authentication] Analyzes data from all charts and returns detailed insights. This is the final analytical step. šŸ”„ Auto-Cached: 'chartData' is automatically provided from get_charts_data step, 'question' from the workflow, and 'apiUrl'/'jwtToken' from authentication. You typically don't need to provide any parameters for this tool. After receiving the insights, you MUST synthesize them into a final report for the user. Your report should:

  1. Start with a brief summary that directly answers the user's original question.

  2. Follow the previously generated analysis strategy, using insights to address each point.

  3. Support findings with specific data points and note any limitations.

  4. Present the full analysis in markdown format, and include the 'dashboardUrl' at the end.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: chartData (required), question (required).

analyze_source_structureA

šŸ”’ [Requires Authentication] Fetches and analyzes the structure of a given data source. This is a key step after selecting a source. šŸ”„ Auto-Cached: apiUrl and jwtToken are automatically provided from authentication. Only provide the 'sourceId' parameter (from the previous list_sources step). Returns detailed column analysis to help formulate analytical questions.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: sourceId (required).

create_configurationA

šŸ”’ [Requires Authentication] Create dashboard configuration from question, column analysis, and strategy. This is a granular step in the analysis workflow. šŸ”„ Auto-Cached: 'question', 'columnAnalysis', and 'strategy' are automatically provided from previous steps. You typically don't need to provide any parameters for this tool.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: columnAnalysis (required), question (required), strategy (required).

create_dashboardA

šŸ”’ [Requires Authentication] Create a dashboard from config, source structure, and API settings. This is a granular step in the analysis workflow. šŸ”„ Auto-Cached: 'markdownConfig' is provided from create_configuration step, 'sourceStructure' from analyze_source_structure, and 'apiUrl'/'jwtToken' from authentication. You typically don't need to provide any parameters for this tool.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: markdownConfig (required), sourceStructure (required).

generate_configA

šŸ”’ [Requires Authentication] Generate dashboard config (markdown) from question and source structure. šŸ”„ Auto-Cached: 'sourceStructure' is automatically provided from analyze_source_structure step. 'apiUrl' and 'jwtToken' are provided from authentication. Only provide the 'question' parameter from the user. Returns: dict (markdown configuration).

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: question (required), sourceStructure (required).

generate_strategyA

šŸ”’ [Requires Authentication] Generate analysis strategy for a question and column analysis. This is a granular step in the analysis workflow. šŸ”„ Auto-Cached: 'columnAnalysis' is automatically provided from the previous analyze_source_structure step. Only provide the 'question' parameter from the user.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: columnAnalysis (required), question (required).

get_charts_dataA

šŸ”’ [Requires Authentication] Fetch data for multiple charts. This step is granular. šŸ”„ Auto-Cached: 'chartConfigs' is automatically provided from the create_dashboard step, and 'apiUrl'/'jwtToken' from authentication. You typically don't need to provide any parameters for this tool. Returns a summary of fetched charts (chart names). The full data is cached for the next step.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: chartConfigs (required).

list_sourcesA

šŸ”’ [Requires Authentication] List available data sources. This is typically the FIRST interactive step in data analysis. Ask user to provide a search term to filter the sources. šŸ”„ Auto-Cached: apiUrl and jwtToken are automatically provided from your authentication session. Only provide 'search', 'page', and 'limit' parameters as needed. Ask the user for a source name to search first. Returns: {{'count': int, 'data': [{'id': str, 'title': str, 'type': str, 'updated': str, 'numberOfColumns': int}]}}.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: limit, page, search.

setup_authenticationA

Setup authentication credentials for Sandsiv+ Insight Digger. This must be called FIRST before any analysis tools become available. Requires your API URL and JWT token.

About This System:

  • System: Sandsiv+ Insight Digger (Enterprise Data Analysis Platform)

  • Purpose: Transform business questions into interactive dashboards and AI-powered insights using Sandsiv+ data sources

When to Use This System:

  • User wants to analyze data from Sandsiv+ platform

  • User asks about business metrics, KPIs, or data trends

  • User needs to create dashboards or data visualizations

  • User mentions Sandsiv+, data analysis, or business intelligence

  • User wants to explore available data sources

  • User has analytical questions about their business data

Capabilities:

  • Connect to Sandsiv+ data sources securely

  • Analyze data structure and recommend visualization strategies

  • Generate interactive dashboards with multiple chart types

  • Extract AI-powered insights from data patterns

  • Support complex multi-step analytical workflows

  • Provide comprehensive analytical reports

Workflow: 7-step process: Authentication → Source Discovery → Structure Analysis → Strategy Planning → Configuration → Dashboard Creation → Insight Generation

Inputs: apiUrl (required), jwtToken (required).

validate_settingsA

šŸ”’ [Requires Authentication] Validate API settings by testing the connection to the external data API. šŸ”„ Auto-Cached: apiUrl and jwtToken are automatically provided from your authentication session - you typically don't need to provide these parameters. Args: apiUrl (str), jwtToken (str). Returns: {{'status': 'success'|'error', 'error': str (if status == 'error')}}.

āš ļø Please authenticate first by calling the setup_authentication tool above. This tool will become fully functional after authentication.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 10 tools

    Disambiguation4/5

    Most tools have distinct purposes aligned with a clear 7-step workflow, but there is some overlap between create_configuration and generate_config that could cause confusion. Both tools generate dashboard configurations, with create_configuration being described as a 'granular step' and generate_config as generating 'markdown configuration', making their boundaries unclear. Other tools like analyze_charts, analyze_source_structure, and list_sources are well-differentiated.

    Naming Consistency3/5

    The naming follows a mostly consistent verb_noun pattern (e.g., analyze_charts, list_sources, generate_strategy), but there are inconsistencies like setup_authentication (verb_noun) vs. validate_settings (verb_noun, but 'settings' is plural and less specific) and create_configuration vs. generate_config (different verbs for similar actions). While readable, these deviations reduce overall consistency.

    Tool Count5/5

    With 10 tools, the count is well-scoped for the server's purpose of transforming business questions into dashboards and insights. Each tool corresponds to a step in the described 7-step workflow, such as authentication, source discovery, and insight generation, ensuring that every tool earns its place without being excessive or insufficient.

    Completeness5/5

    The tool set provides complete coverage for the data analysis workflow, from authentication (setup_authentication) to insight generation (analyze_charts). It includes all necessary steps like source listing, structure analysis, strategy planning, configuration, dashboard creation, and data fetching, with no obvious gaps. The tools support the full lifecycle, enabling agents to execute end-to-end analyses without dead ends.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables secure chat-based interaction with PostgreSQL databases through Claude Desktop. Features GitHub OAuth authentication, role-based access control, and enterprise-grade security for database queries and operations.
      1
      MIT
    • A
      license
      B
      quality
      Not graded
      maintenance
      A JSON-based database MCP server with JWT authentication that enables user management, project tracking, department analysis, meeting management, and equipment tracking. Integrates with Claude Desktop to provide secure CRUD operations and analytics through natural language commands.
      21
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Connects Claude Desktop to Tableau Server for natural language interactions with Tableau data, enabling data extraction, dashboard exports, and comprehensive administrative capabilities including user management, permission auditing, and usage analytics.
      4
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A multi-agent orchestration system that enables multiple Claude instances to collaborate through a centralized hub with a shared workspace and real-time communication. It features integrated task management, role assignment, and persistent memory to facilitate complex, synchronized agent workflows.
      12
      7 npm
      4
      MIT