Data Connector MCP
Connect AI models to databases, APIs, and external data sources with standardized protocols
Overview
The Data Connector MCP enables AI models to safely and securely access external data sources through a standardized interface. This protocol provides controlled access to databases, APIs, and other data repositories while maintaining security boundaries and audit trails.
By implementing this MCP, organizations can allow AI models to query real-time data, perform data analysis, and make informed decisions based on current information without exposing sensitive systems directly.
Architecture Overview
Implementation Guide
1. MCP Server Setup
import { Server } from '@modelcontextprotocol/sdk/server'
import { DataConnectorTool } from './tools/DataConnectorTool'
const server = new Server({
name: 'data-connector-mcp',
version: '1.0.0'
})
// Register data connector tools
server.tool(new DataConnectorTool({
databaseUrl: process.env.DATABASE_URL,
apiKeys: process.env.API_KEYS?.split(','),
allowedOperations: ['SELECT', 'READ']
}))
server.listen({
port: 3000,
host: 'localhost'
})
2. Data Connector Tool
import { Tool } from '@modelcontextprotocol/sdk/server'
interface DataConnectorConfig {
databaseUrl: string
apiKeys: string[]
allowedOperations: string[]
}
export class DataConnectorTool extends Tool {
private config: DataConnectorConfig
constructor(config: DataConnectorConfig) {
super({
name: 'data_connector',
description: 'Connect to external data sources and retrieve information',
inputSchema: {
type: 'object',
properties: {
source: { type: 'string', enum: ['database', 'api', 'file'] },
operation: { type: 'string' },
query: { type: 'string' },
parameters: { type: 'object' }
},
required: ['source', 'operation', 'query']
}
})
this.config = config
}
async execute(input: any) {
// Validate operation permissions
if (!this.config.allowedOperations.includes(input.operation)) {
throw new Error(`Operation ${input.operation} not allowed`)
}
// Execute based on source type
switch (input.source) {
case 'database':
return await this.queryDatabase(input.query, input.parameters)
case 'api':
return await this.callApi(input.query, input.parameters)
case 'file':
return await this.readFile(input.query)
default:
throw new Error(`Unknown source: ${input.source}`)
}
}
private async queryDatabase(query: string, params: any) {
// Database query implementation with parameterized queries
// and SQL injection prevention
}
private async callApi(endpoint: string, params: any) {
// API call implementation with authentication and rate limiting
}
private async readFile(path: string) {
// File reading implementation with path validation
}
}
3. Client Integration
import { Client } from '@modelcontextprotocol/sdk/client'
const client = new Client({
serverUrl: 'ws://localhost:3000'
})
// Example: Query database through MCP
const result = await client.tools.data_connector.execute({
source: 'database',
operation: 'SELECT',
query: 'SELECT * FROM users WHERE status = ?',
parameters: { status: 'active' }
})
console.log('Query result:', result.data)
// Example: Call external API through MCP
const apiResult = await client.tools.data_connector.execute({
source: 'api',
operation: 'GET',
query: '/api/weather/current',
parameters: { city: 'New York' }
})
console.log('Weather data:', apiResult.data)
Security Considerations
Security Measures
- • Operation whitelisting and blacklisting
- • Parameterized queries to prevent injection
- • Rate limiting and request throttling
- • Authentication and authorization checks
- • Audit logging for all operations
Best Practices
- • Use connection pooling for databases
- • Implement circuit breakers for external APIs
- • Cache frequently accessed data
- • Monitor and alert on unusual patterns
- • Regular security audits and updates
Data Flow Diagram
Configuration Example
# mcp-config.yaml
server:
name: data-connector-mcp
version: 1.0.0
port: 3000
host: localhost
tools:
data_connector:
database:
url: ${DATABASE_URL}
maxConnections: 10
timeout: 30000
allowedTables: ['users', 'products', 'orders']
blockedOperations: ['DROP', 'DELETE', 'TRUNCATE']
api:
baseUrl: ${API_BASE_URL}
rateLimit: 100
timeout: 10000
allowedEndpoints: ['/api/users', '/api/products']
authentication:
type: 'bearer'
header: 'Authorization'
file:
allowedPaths: ['/data/public', '/data/shared']
maxFileSize: 10485760 # 10MB
allowedExtensions: ['.txt', '.json', '.csv']
blockedPaths: ['/etc', '/var/log', '/home']
security:
authentication:
required: true
type: 'jwt'
secret: ${JWT_SECRET}
authorization:
roleBased: true
defaultRole: 'readonly'
roles:
readonly:
- 'SELECT'
- 'READ'
editor:
- 'SELECT'
- 'READ'
- 'INSERT'
- 'UPDATE'
admin:
- '*'
audit:
enabled: true
logLevel: 'info'
storage: 'database'
retention: '90d'
Monitoring & Metrics
Performance Metrics
- • Query response time
- • Throughput (requests/second)
- • Error rates
- • Connection pool utilization
- • Cache hit ratio
Security Metrics
- • Failed authentication attempts
- • Permission violations
- • Rate limit violations
- • Suspicious query patterns
- • Data access patterns
Business Metrics
- • Data source usage
- • Query complexity distribution
- • User activity patterns
- • Data freshness
- • Cost per query
Common Use Cases
Customer Support AI
AI agents can access customer databases, order history, and product catalogs to provide personalized support and resolve issues efficiently.
Business Intelligence
AI models can query financial data, sales metrics, and market trends to generate insights and recommendations for business decisions.
Content Generation
AI content creators can access knowledge bases, research databases, and current events to generate accurate and up-to-date content.