MCP Integration (Model Context Protocol)
Extend QRY's capabilities by connecting to external tools and services through the industry-standard Model Context Protocol (MCP).
What is MCP?
Model Context Protocol (MCP) is an open standard that enables AI applications to securely connect with external data sources and tools. Think of it as a universal adapter that lets QRY communicate with any MCP-compatible service.
Why MCP Matters
- Extensibility: Add new capabilities without modifying QRY's code
- Interoperability: Use the same MCP server across different AI applications
- Security: Controlled access with authentication and permissions
- Community: Leverage the growing ecosystem of MCP-compatible tools
Key Capabilities
Dynamic Tool Discovery
When you connect an MCP server, QRY automatically:
- Discovers all available tools from the server
- Integrates them into the AI's toolset
- Makes them available in conversations
- Routes tool calls to the appropriate server
Seamless Integration
MCP tools work alongside QRY's native capabilities:
- Transparent to Users: Users don't need to know which tools are from MCP
- Unified Experience: Same interface for all tools
- Automatic Routing: AI selects the right tool for the task
- Error Handling: Graceful fallback if servers are unavailable
Secure by Default
- Authentication: Bearer tokens, API keys, or basic auth
- Encryption: All communications encrypted
- Permission Control: Admin-only configuration
- Audit Logging: Track all MCP tool usage
Use Cases
Analytics & BI Tools
Example: Connect Looker or Tableau
MCP Server: business-intelligence
Tools: create_dashboard, run_report, schedule_export
Result: "Create a sales dashboard in Looker" works natively in QRY
External APIs
Example: Weather, Stock Market, Geographic Data
MCP Server: market-data
Tools: get_stock_price, get_market_news, calculate_indicators
Result: Enrich data analysis with real-time market information
Specialized Analytics
Example: Statistical Analysis, ML Tools
MCP Server: scipy-server
Tools: statistical_tests, curve_fitting, optimization
Result: Advanced statistical analysis beyond SQL
Internal Tools
Example: Company-Specific Services
MCP Server: company-tools
Tools: check_inventory, process_order, send_notification
Result: Bridge data analysis with operational systems
Setup & Configuration
Prerequisites
- Administrator access to QRY
- MCP server endpoint URL
- Authentication credentials (if required)
Adding an MCP Server
Step 1: Navigate to Admin Panel
Admin → Integrations → MCP Servers → Add Server
Step 2: Configure Server Details
Name: analytics-tools
Display Name: Analytics Tools Server
Description: Custom analytics and reporting tools
Endpoint: https://mcp-server.company.com/mcp
Transport: HTTP
Timeout: 30 seconds
Step 3: Set Authentication
Auth Type: Bearer Token
Token: your-secure-token-here
Step 4: Advanced Settings (Optional)
Tool Whitelist: tool1, tool2, tool3 (leave empty for all)
Tool Blacklist: restricted_tool
Sandbox Mode: Enabled
Max Concurrent Connections: 5
Step 5: Test & Enable
1. Click "Test Connection"
2. Verify tools are discovered
3. Enable server
4. Tools available immediately
Configuration via API
POST /admin/mcp-servers/
Content-Type: application/json
{
"name": "analytics-server",
"display_name": "Analytics MCP Server",
"description": "Statistical analysis tools",
"endpoint": "https://mcp.example.com",
"transport_type": "http",
"timeout": 30,
"auth_type": "bearer",
"auth_config": {
"token": "your-secure-token"
},
"is_enabled": true,
"tool_whitelist": ["analyze", "report"],
"sandbox_enabled": true
}
MCP Server Types
HTTP Transport
Most common for web-based services:
Endpoint: https://mcp-server.example.com/mcp
Protocol: HTTPS
Use Case: Cloud services, APIs, external tools
Standard I/O Transport
For local or process-based servers:
Command: /path/to/mcp-server
Protocol: stdin/stdout
Use Case: Local tools, custom scripts, containerized services
Security & Permissions
Authentication Methods
Bearer Token
{
"auth_type": "bearer",
"auth_config": {
"token": "eyJhbGciOiJIUzI1NiIs..."
}
}
API Key
{
"auth_type": "api_key",
"auth_config": {
"api_key": "your-api-key",
"header_name": "X-API-Key"
}
}
Basic Authentication
{
"auth_type": "basic",
"auth_config": {
"username": "admin",
"password": "secure-password"
}
}
No Authentication
{
"auth_type": "none"
}
Tool Filtering
Whitelist Approach (only specified tools allowed)
tool_whitelist: ["safe_tool1", "safe_tool2"]
Result: Only these tools available to users
Blacklist Approach (all except specified tools)
tool_blacklist: ["dangerous_tool", "restricted_tool"]
Result: All tools available except these
Sandbox Mode
Enable sandbox mode for enhanced security:
- Resource limits enforced
- Network access restricted
- File system access controlled
- Execution timeouts
Monitoring & Management
Health Monitoring
Real-time server status:
Status: Connected
Uptime: 99.8%
Tools Discovered: 15
Last Health Check: 2 minutes ago
Response Time: 45ms
Usage Analytics
Track MCP tool usage:
Total Executions: 1,247
Success Rate: 98.5%
Average Response Time: 120ms
Most Used Tool: generate_report
Failed Executions: 19
Audit Logging
Complete audit trail:
Timestamp: 2025-10-18 14:35:22
User: alice@company.com
Server: analytics-server
Tool: generate_report
Parameters: {"date_range": "last_month"}
Result: Success
Duration: 1.2s
Building MCP Servers
Server Requirements
To create a compatible MCP server:
- Implement MCP Protocol: Follow the official MCP specification
- Expose Tools: Define available functions and their schemas
- Handle Requests: Process tool execution requests
- Return Results: Provide structured responses
Example: Python MCP Server
from mcp.server import Server, Tool
class MyMCPServer(Server):
def get_tools(self):
return [
Tool(
name="analyze_data",
description="Perform statistical analysis",
parameters={
"data": {"type": "array", "description": "Data points"},
"method": {"type": "string", "description": "Analysis method"}
}
)
]
async def execute_tool(self, tool_name, parameters):
if tool_name == "analyze_data":
result = self.perform_analysis(
parameters["data"],
parameters["method"]
)
return {"result": result}
# Start server
server = MyMCPServer()
server.run(host="0.0.0.0", port=8080)
Testing Your Server
Use QRY's test endpoint:
POST /admin/mcp-servers/{server_id}/test
Response:
{
"status": "success",
"connection_time": 0.05,
"tools_discovered": 5,
"tools": [
{"name": "analyze_data", "description": "..."},
...
]
}
Best Practices
Server Configuration
DO:
- Use descriptive names and descriptions
- Set appropriate timeouts (30-60s)
- Enable health checks
- Use whitelist for production servers
- Enable sandbox mode for untrusted servers
DON'T:
- Store credentials in version control
- Allow unrestricted network access
- Skip connection testing
- Use overly permissive settings
Performance Optimization
- Connection Pooling: Reuse connections to servers
- Caching: Cache tool discovery responses
- Timeouts: Set realistic timeouts for tool execution
- Monitoring: Track response times and failures
Error Handling
MCP integration gracefully handles failures:
- Server unavailable → Tool not available
- Timeout → Clear error message to user
- Authentication failure → Admin notification
- Tool execution error → Detailed error log
Troubleshooting
Server Won't Connect
Check:
- Endpoint URL is correct and accessible
- Authentication credentials are valid
- Firewall allows outbound connections
- Server is running and healthy
Test:
curl -X GET https://your-mcp-server.com/health
Tools Not Appearing
Check:
- Server is enabled in configuration
- Tool whitelist/blacklist settings
- Server successfully completed tool discovery
- Worker has been restarted after configuration
Verify:
GET /admin/mcp-servers/{server_id}/tools
Tool Execution Failures
Check:
- Tool parameters are correct
- Server logs for specific errors
- Timeout settings are sufficient
- User has required permissions
Debug:
GET /admin/mcp-servers/{server_id}/usage-logs?limit=50
FAQ
Q: Can I use multiple MCP servers simultaneously? A: Yes, QRY can connect to multiple MCP servers and aggregate their tools.
Q: What happens if an MCP server goes offline? A: Tools from that server become unavailable, but QRY continues working with other tools.
Q: Can I restrict which users can access MCP tools? A: Yes, through QRY's permission system and tool filtering configuration.
Q: Are MCP tools free to use? A: It depends on the MCP server provider. Check with the specific service for pricing.
Q: Can I build my own MCP server? A: Yes! Follow the MCP specification and integrate your custom tools.
Q: How do I update an MCP server configuration? A: Use the admin panel or API to modify settings. Changes take effect immediately.
Resources
- MCP Specification: Official MCP Protocol
- Server Examples: Community MCP server implementations
- Support: Contact your administrator for MCP setup assistance
MCP integration makes QRY infinitely extensible - connect to any service, add any capability, and create a truly unified analytics platform.