Research Insights MCP Server
Auto-create Jira tickets from research insights.
Enrich Salesforce accounts with research insights.
Export insights to Signal for cross-functional sharing.
Connect to Supabase as the research repository backend.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Research Insights MCP ServerWhat are the top 5 pain points from discovery calls this month?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Research & Insights MCP Server
Supercharge Claude Desktop with bulk analysis of 1500+ user research calls, validation workflows, and Signal export capabilities.
A Model Context Protocol (MCP) server that connects Claude Desktop to your Supabase-backed research repository, enabling AI-powered analysis of customer calls, user interviews, and support conversations at scale.
π― What This Does
This MCP server gives Claude Desktop direct access to your user research database, enabling you to:
π Search across 1500+ calls with natural language queries
π Aggregate insights by theme across multiple recordings
β Validate research findings with ML-powered confidence scoring
π Track trends over time (week-over-week, month-over-month)
π― Extract competitive intelligence from customer conversations
π¦ Export to Signal for cross-functional sharing
Instead of manually reviewing hundreds of calls, ask Claude:
"What are the top 5 pain points mentioned in discovery calls this month?"
"Show me all feature requests from enterprise customers with high confidence scores"
"Which competitors are mentioned most frequently, and in what context?"
Claude can now answer these questions by directly querying your research database.
π Quick Start
Prerequisites
Node.js 18+ installed
Claude Desktop (download here)
Supabase project with research data (see Database Setup)
1. Install
git clone https://github.com/ecidk/mcp-research-insights.git
cd mcp-research-insights
npm install
npm run build2. Configure Environment
Copy .env.example to .env:
cp .env.example .envEdit .env with your credentials:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here
NODE_ENV=production
LOG_LEVEL=info3. Register with Claude Desktop
Add to ~/.claude/mcp.json (create if it doesn't exist):
{
"mcpServers": {
"research-insights": {
"type": "stdio",
"command": "node /absolute/path/to/mcp-research-insights/dist/index.js",
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_ROLE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}"
}
}
}
}π‘ Tip: Use environment variable substitution (${SUPABASE_SERVICE_ROLE_KEY}) to avoid hardcoding secrets.
4. Restart Claude Desktop
The MCP server will auto-start when Claude Desktop launches. Look for the π indicator showing "research-insights" is connected.
π¬ Example Conversations
Once connected, you can have conversations like:
You: "Search for all discovery calls from the last 30 days where customers mentioned pricing concerns"
Claude: Uses search_insights_by_scope with filters: call_type=discovery, date_range=last_30_days, sentiment=negative, keywords=pricing
You: "What are the most common feature requests from enterprise customers?"
Claude: Uses analyze_feature_requests filtered by customer segment, then aggregate_insights_by_theme to cluster similar requests
You: "Show me the validation queue and predict which insights are likely to be approved"
Claude: Calls get_validation_queue then predict_validation_outcome for each item, providing confidence scores
π οΈ 69 Available Tools
Major expansion in v2.0: Added 51 new tools across workflow automation, advanced analytics, customer journey mapping, integrations, AI research assistance, and quality/compliance features.
π Search & Retrieval (7 tools)
Tool | Description | Use Case |
| Bulk search with complex filtering | "Find all pain points from Q1 with high confidence" |
| Retrieve curated collections | "Show me the 'Onboarding Issues' collection" |
| Filter by AI confidence scores | "Only show insights with >80% confidence" |
| Filter by validation state | "What's pending review?" |
| Full citation with timestamps | "Where did this insight come from?" |
| Recording-level search | "Find calls with [customer_name]" |
| Aggregate Sales/Support/UX | "Compare support vs sales feedback" |
π Analysis & Aggregation (5 tools)
Tool | Description | Use Case |
| Theme extraction across calls | "Cluster similar pain points" |
| Quality score histogram | "What's our data quality like?" |
| Period-over-period comparison | "How did feedback change month-over-month?" |
| Competitive intelligence | "Which competitors are customers evaluating?" |
| Feature request frequency | "Top 10 most requested features" |
β Validation Workflow (4 tools)
Tool | Description | Use Case |
| Bulk approve/reject insights | "Validate these 50 insights" |
| Items pending review | "What needs review?" |
| ML confidence prediction | "Which items are likely valid?" |
| Manual override with reasoning | "Mark as invalid due to bias" |
π Workflow Automation (4 tools)
Tool | Description | Use Case |
| Find patterns across 3+ calls | "What pain points appear in 5+ calls?" |
| Auto-generate executive summaries | "Create Q1 discovery call brief" |
| AI-powered auto-tagging | "Tag these 100 recordings by sentiment" |
| Bulk tag application | "Tag all enterprise calls" |
π¨ Proactive Alerts (2 tools)
Tool | Description | Use Case |
| Get notified when patterns emerge | "Alert me when churn signals spike" |
| Alert on metric thresholds | "Notify when feature requests > 10/week" |
π Stakeholder Reports (3 tools)
Tool | Description | Use Case |
| Tailored reports by audience | "Create exec summary for Q1" |
| Save complex filters | "Save 'Enterprise Q1 Discovery' filter" |
| Recall saved filters | "Load my enterprise filter" |
π Advanced Analytics (7 tools)
Tool | Description | Use Case |
| Compare patterns over time | "Is pricing objection increasing?" |
| Enterprise vs SMB comparison | "How do enterprise pain points differ from SMB?" |
| Cohort feedback evolution | "Track enterprise sentiment over Q1" |
| Emotion tracking in conversations | "When does frustration spike in calls?" |
| What causes reactions | "What triggers positive sentiment?" |
| Statistical outlier detection | "Why did sentiment drop last week?" |
| Root cause analysis | "Explain the churn signal spike" |
πΊοΈ Customer Journey (6 tools)
Tool | Description | Use Case |
| Link insights to journey stages | "Map Acme Corp's journey" |
| Find stages with missing feedback | "Which stages lack research?" |
| Save research snapshots | "Save Q1 onboarding research" |
| Find similar past research | "Find past pricing research" |
| Team annotations on insights | "Flag this as hypothesis to test" |
| See team notes | "Show all unresolved questions" |
π Integrations (4 tools)
Tool | Description | Use Case |
| Auto-create Jira tickets | "Create tickets for top 5 requests" |
| Send to ProductBoard | "Export validated features" |
| Add insights to Salesforce | "Enrich Acme Corp account" |
| Generate CS briefings | "Create renewal brief for Acme" |
π€ AI Research Assistant (4 tools)
Tool | Description | Use Case |
| AI suggests follow-up questions | "What should I ask about churn?" |
| Find what you don't know | "What's missing in onboarding research?" |
| Statistical hypothesis testing | "Test: Enterprise users want SSO more than SMB" |
| Statistical validity calculations | "How many interviews do I need?" |
β Quality & Compliance (4 tools)
Tool | Description | Use Case |
| Score research quality | "Assess quality of Q1 research" |
| Identify leading questions | "Check for bias in this recording" |
| Compliance audit trail | "Who accessed insights last month?" |
| Remove PII before sharing | "Anonymize for external share" |
β Validation Workflow (4 tools)
Tool | Description | Use Case |
| Bulk approve/reject insights | "Validate these 50 insights" |
| Items pending review | "What needs review?" |
| ML confidence prediction | "Which items are likely valid?" |
| Manual override with reasoning | "Mark as invalid due to bias" |
π¦ Signal Export (2 tools)
Tool | Description | Use Case |
| Prepare for external sharing | "Export validated insights to Signal" |
| Record downstream usage | "Track when insights are viewed" |
ποΈ Database Setup
This MCP server requires a Supabase project with the following tables:
Core Tables
-- UX analysis results
CREATE TABLE ux_analysis (
id UUID PRIMARY KEY,
recording_id UUID REFERENCES recordings(id),
call_breakdown JSONB,
question_analysis JSONB,
next_steps JSONB,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Insight validations
CREATE TABLE ux_insight_validations (
id UUID PRIMARY KEY,
insight_id UUID,
insight_type TEXT,
validation_status TEXT, -- validated, needs_review, rejected
confidence_score FLOAT,
reason_codes TEXT[],
validated_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Collections (curated groups)
CREATE TABLE ux_collections (
id UUID PRIMARY KEY,
name TEXT,
description TEXT,
created_by UUID REFERENCES auth.users(id),
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Collection items (many-to-many)
CREATE TABLE ux_collection_items (
collection_id UUID REFERENCES ux_collections(id),
insight_id UUID,
added_at TIMESTAMPTZ DEFAULT NOW(),
PRIMARY KEY (collection_id, insight_id)
);
-- Recordings metadata
CREATE TABLE recordings (
id UUID PRIMARY KEY,
title TEXT,
duration INTEGER,
created_at TIMESTAMPTZ DEFAULT NOW(),
user_id UUID REFERENCES auth.users(id),
content_type TEXT -- 'user_experience', 'sales_call', 'customer_support'
);Required Views
-- Validation queue view
CREATE VIEW ux_validation_queue AS
SELECT
v.id,
v.insight_id,
v.insight_type,
v.confidence_score,
v.validation_status,
v.created_at,
a.call_breakdown->>'summary' AS insight_context
FROM ux_insight_validations v
LEFT JOIN ux_analysis a ON v.insight_id = a.recording_id
WHERE v.validation_status = 'needs_review'
ORDER BY v.confidence_score ASC, v.created_at ASC;Optional: API Key Authentication
-- MCP API keys (hashed)
CREATE TABLE ux_mcp_api_keys (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
key_hash TEXT NOT NULL UNIQUE,
user_id UUID REFERENCES auth.users(id),
description TEXT,
scopes TEXT[] DEFAULT ARRAY['read'],
last_used_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Rate limiting function
CREATE OR REPLACE FUNCTION check_mcp_rate_limit(
p_key_hash TEXT,
p_limit INTEGER DEFAULT 100
) RETURNS BOOLEAN AS $$
-- Implementation: check if key_hash has exceeded p_limit requests in last minute
$$ LANGUAGE plpgsql;π‘ See DEPLOYMENT_GUIDE.md for full schema and migration scripts.
π Security Best Practices
β οΈ Critical: Never Expose Your Service Role Key
The SUPABASE_SERVICE_ROLE_KEY bypasses Row Level Security (RLS) and grants full admin access to your database.
β Do This:
β Store in
.envfile (already in.gitignore)β Use environment variables in production
β Rotate immediately if exposed
β Use separate keys for dev/staging/production
β Enable RLS on all tables (defense in depth)
β Monitor API usage for anomalies
β Never Do This:
β Commit
.envto gitβ Share keys in Slack, email, or screenshots
β Use production keys in development
β Hardcode keys in source code
β Expose keys in error messages or logs
Row Level Security (RLS)
Even with the service role key, enable RLS as a safety layer:
-- Example: Users can only access their own recordings
CREATE POLICY "Users access own recordings"
ON recordings FOR SELECT
USING (auth.uid() = user_id);
-- Admins can access all recordings
CREATE POLICY "Admins access all recordings"
ON recordings FOR SELECT
USING (
EXISTS (
SELECT 1 FROM user_roles
WHERE user_id = auth.uid()
AND role = 'admin'
)
);π Full security policy: SECURITY.md
ποΈ Architecture
βββββββββββββββββββ
β Claude Desktop β
ββββββββββ¬βββββββββ
β stdio (MCP)
β
βββββββββββββββββββββββββββββββ
β Research & Insights MCP β
β β
β βββββββββββββββββββββββ β
β β 18 Tools β β
β β - Search β β
β β - Analysis β β
β β - Validation β β
β β - Export β β
β βββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββ β
β β Authentication β β
β β - API key (SHA-256)β β
β β - Rate limiting β β
β βββββββββββββββββββββββ β
βββββββββββ¬ββββββββββββββββββββ
β Supabase Client
β
βββββββββββββββββββββββββββββββ
β Supabase Project β
β β
β βββββββββββββββββββββββ β
β β PostgreSQL β β
β β - ux_analysis β β
β β - recordings β β
β β - validations β β
β β - collections β β
β βββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββ β
β β Row Level Security β β
β β (RLS Policies) β β
β βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββKey Design Decisions
Transport: stdio (standard input/output) for Claude Desktop integration
Authentication: API keys stored as SHA-256 hashes, never plaintext
Rate Limiting: PostgreSQL function
check_mcp_rate_limit()prevents abuseLogging: Winston with configurable log levels
Error Handling: Graceful failures with user-friendly error messages
π§ͺ Testing
Validate MCP Server
# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector
# Test server
npx @modelcontextprotocol/inspector node dist/index.jsTest Tool Calls
# Start server in dev mode
npm run dev
# In another terminal, send test queries
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.jsπ Documentation
DEPLOYMENT_GUIDE.md - Production deployment, Docker, environment setup
SECURITY.md - Security policy, vulnerability reporting
SETUP_COMPLETE.md - Detailed setup walkthrough
π€ Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'feat: Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Development Setup
# Clone your fork
git clone https://github.com/YOUR-USERNAME/mcp-research-insights.git
cd mcp-research-insights
# Install dependencies
npm install
# Run in development mode (auto-reload)
npm run dev
# Run tests
npm test
# Build for production
npm run buildπ Troubleshooting
MCP Server Not Appearing in Claude Desktop
Check
~/.claude/mcp.jsonsyntax (valid JSON)Verify absolute path to
dist/index.jsRestart Claude Desktop completely
Check logs:
~/Library/Logs/Claude/mcp-research-insights.log
"SUPABASE_URL must be set" Error
Ensure
.envfile exists in project rootVerify environment variables in
mcp.jsonare correctCheck
SUPABASE_URLformat:https://xxx.supabase.co(no trailing slash)
"Unauthorized" or "RLS policy violation"
Verify
SUPABASE_SERVICE_ROLE_KEY(not anon/public key)Check RLS policies allow service role access
Confirm tables exist in
publicschema
Rate Limit Exceeded
Default: 100 requests/minute per API key
Increase via
MAX_REQUESTS_PER_MINUTEin.envCheck rate limit logs:
grep "rate limit" ~/Library/Logs/Claude/mcp-research-insights.log
π Use Cases
Product Managers
Aggregate feature requests across 1000+ customer calls
Track sentiment trends for specific features
Prioritize roadmap based on customer pain points
UX Researchers
Extract themes from user interviews at scale
Validate research findings with confidence scores
Export insights for cross-functional sharing
Customer Success Teams
Identify at-risk accounts from support call patterns
Track product adoption challenges
Surface competitive threats early
Sales Teams
Analyze objection patterns in discovery calls
Understand why deals are won/lost
Competitive intelligence from customer conversations
π Related Projects
Model Context Protocol - Official MCP documentation
Claude Desktop - Download Claude Desktop app
Supabase - Open source Firebase alternative
SoundScribe - AI-powered call analysis platform
π License
MIT License - see LICENSE for details.
π Acknowledgments
Built with:
π¬ Support
Issues: GitHub Issues
Security: See SECURITY.md for reporting vulnerabilities
Discussions: GitHub Discussions
Made with β€οΈ by ECI Software Solutions
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/ecidk/mcp-research-insights'
If you have feedback or need assistance with the MCP directory API, please join our Discord server