MCP Insights Proxy
Executes OpenSearch DSL queries and returns synthesized output (table, list, summary, compact JSON) instead of raw JSON, supporting all query types including aggregations, nested queries, and has_parent queries.
Click on "Deploy 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., "@MCP Insights Proxy Show my top 10 most engaged posts from last week"
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.
MCP Insights Proxy v2
Context-efficient MCP server that executes OpenSearch queries and returns synthesized output instead of raw JSON.
Philosophy
Full query flexibility, synthesized output only.
You retain 100% of OpenSearch DSL capabilities. The proxy only transforms the output.
┌──────────────────────────────────────────────────────────────────────────┐
│ BEFORE (direct OpenSearch MCP) │
│ Query → OpenSearch → 500+ lines raw JSON → Context window 💥 │
├──────────────────────────────────────────────────────────────────────────┤
│ AFTER (this proxy) │
│ Query → Proxy → OpenSearch → Proxy formats → 20-50 lines → Context ✅ │
└──────────────────────────────────────────────────────────────────────────┘Related MCP server: MCP of MCPs
Key Difference from v1
v1 (Limited) | v2 (Full Flexibility) |
5-6 predefined tools | 1 main tool accepting ANY DSL |
Hardcoded query patterns | You build the query |
Limited aggregations | ALL aggregations supported |
No nested/has_parent | Full query DSL support |
Quick Start
1. Install
cd mcp-insights-proxy
npm install
npm run build2. Configure MCP Client
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"insights-proxy": {
"command": "node",
"args": ["/absolute/path/to/mcp-insights-proxy/dist/index.js"],
"env": {
"OPENSEARCH_URL": "https://your-cluster:9200",
"OPENSEARCH_INDEX": "channel_posts",
"OPENSEARCH_USER": "username",
"OPENSEARCH_PASS": "password"
}
}
}
}3. Restart Claude
Tools
opensearch_query (Main Tool)
Execute any OpenSearch DSL query. Full flexibility.
Parameters:
Parameter | Type | Description |
| object | Required. Full OpenSearch DSL query object |
| string | Index name (default: |
| enum |
|
| number | Max hits to show (default: 20, max: 50) |
Example - Complex aggregation with nested sub-aggs:
{
"query": {
"size": 0,
"query": {
"bool": {
"must": [
{"term": {"join_field": "post"}},
{"term": {"channel.type": "ig"}}
],
"filter": [
{"range": {"published_at": {"gte": "now-30d"}}}
]
}
},
"aggs": {
"by_hashtag": {
"terms": {"field": "hashtags", "size": 10},
"aggs": {
"avg_engagement": {"avg": {"field": "engagement"}},
"top_creators": {"terms": {"field": "channel.name", "size": 3}}
}
}
}
}
}Example - has_parent query:
{
"query": {
"query": {
"bool": {
"must": [
{"term": {"join_field": "post"}},
{
"has_parent": {
"parent_type": "channel",
"query": {
"bool": {
"must": [
{"term": {"channel.geo.country.code": "IT"}},
{"range": {"channel.followers": {"gte": 100000}}}
]
}
}
}
}
]
}
},
"sort": [{"engagement": "desc"}],
"size": 10,
"_source": ["channel.name", "engagement", "published_at"]
}
}opensearch_count
Quick count without full query overhead.
{
"query": {
"bool": {
"must": [
{"term": {"join_field": "post"}},
{"term": {"hashtags": "skincare"}}
]
}
}
}opensearch_mapping
Get field list for an index.
Output Formats
auto (default)
Automatically detects:
Aggregation-only → summary format
Few hits (≤5) → list format
Many hits → table format
table
| # | name | type | engagement | likes | published_at |
|---|------|------|------------|-------|--------------|
| 1 | creator1 | IG | 156K | 142K | 2025-01-15 |
| 2 | creator2 | TT | 98K | 89K | 2025-01-18 |list
**1.** @creator1 (IG) • eng: 156K • likes: 142K • views: 2.3M • 2025-01-15
**2.** @creator2 (TT) • eng: 98K • likes: 89K • views: 1.8M • 2025-01-18summary
Just counts and aggregation results, no individual hits.
compact_json
Minimal JSON with only _source (no _id, _score, _index metadata).
Aggregation Output Examples
Terms aggregation
**by_platform:**
• ig: 45.2K
• tt: 32.1K
• yt: 12.8KStats aggregation
**engagement_stats:** count=89.1K avg=2.3K min=0 max=1.2M sum=205MNested sub-aggregations
**by_hashtag:**
• **skincare** (12.4K)
**avg_engagement:** 3.2K
**top_creators:**
• creator1: 342
• creator2: 287
• **beauty** (8.7K)
**avg_engagement:** 2.8K
...Context Savings
Query Type | Raw JSON | Proxy Output | Savings |
Top 10 posts | ~3000 tokens | ~300 tokens | 90% |
Aggregation (5 buckets) | ~1500 tokens | ~150 tokens | 90% |
Complex nested agg | ~5000 tokens | ~400 tokens | 92% |
Environment Variables
Variable | Required | Default | Description |
| Yes |
| Cluster URL |
| No |
| Default index |
| No | - | Basic auth username |
| No | - | Basic auth password |
Development
npm run dev # Development with auto-reload
npm run build # Build for production
npm start # Run production buildArchitecture
┌─────────────┐ ┌────────────────────────────────────────────┐ ┌────────────┐
│ │ │ MCP Insights Proxy │ │ │
│ Claude │────▶│ 1. Receive DSL query (any complexity) │────▶│ OpenSearch │
│ (builds │ │ 2. Execute against cluster │ │ │
│ full │◀────│ 3. Parse response │◀────│ │
│ DSL) │ │ 4. Format: table/list/summary │ │ │
│ │ │ 5. Return compact markdown │ │ │
└─────────────┘ └────────────────────────────────────────────┘ └────────────┘
│ │
│ Returns:
│ "*45.2K hits • took 23ms*
│
│ ## Aggregations
│ **by_platform:**
│ • ig: 45.2K
│ • tt: 32.1K
│
│ ## Results
│ | # | name | engagement |..."
│
└─── ~300 tokens instead of ~3000License
MIT
Available Tools
3 toolsopensearch_countA
Quick document count with optional query filter. Lighter than full query.
Inputs: index, query.
opensearch_mappingA
Get index mapping to understand available fields. Returns compact field list.
Inputs: index.
opensearch_queryA
Execute ANY OpenSearch DSL query and return synthesized results.
You have FULL FLEXIBILITY to build any query:
Complex bool queries with must/should/filter/must_not
has_parent, has_child, nested queries
Any aggregations (terms, stats, date_histogram, scripted_metric, etc.)
Script sorting, script fields, script filters
Geo queries, range queries, wildcards, match, term, etc.
The proxy executes your query and returns COMPACT formatted output instead of raw JSON.
OUTPUT FORMATS:
auto: Detects best format (default)
table: Tabular format for multiple hits
list: One-line-per-hit format
summary: Just counts and aggregations
compact_json: Minimal JSON (only _source, no metadata)
IMPORTANT: Build the full DSL query object as you normally would.
Inputs: query (required), index, max_display, output_format.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: count for lightweight counts, query for arbitrary DSL queries, and mapping for schema inspection. No overlap or ambiguity between them.
All tool names follow the same pattern: 'opensearch_' prefix followed by a single descriptive verb/noun (count, query, mapping). This is perfectly consistent and predictable.
With 3 tools, the set is compact and focused on core OpenSearch operations (count, query, mapping). It feels slightly minimal but appropriate for a read-only insights proxy, and each tool earns its place.
The domain is OpenSearch insights/querying, and the set covers count, query, and schema discovery, which are the essential operations. Minor gaps like direct document fetch or index listing can be handled via queries or mapping, so no critical dead ends.
Maintenance
Related MCP Connectors
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
LLM cost optimization gateway, repo token-waste auditor & model arbitrage MCP server.
Single-connection meta-router indexing 500+ MCP servers & A2A tools with 85% token compression and
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server implementation that enables natural language interactions with OpenSearch clusters, allowing users to search documents, analyze indices, and manage clusters through simple conversational commands.1411Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.16 npm10Apache 2.0
- AlicenseAqualityBmaintenanceMCP server for OpenSearch that enables AI assistants to interact with OpenSearch clusters through a standardized interface for search, index management, and cluster operations.945,655 PyPI158Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server that cuts cloud LLM costs 36-42% by indexing context locally and giving agents precision retrieval tools instead of raw context dumps.18 npm7MIT