Skip to main content
Glama
SreeTarak2

DataFlow MCP Server

by SreeTarak2

DataFlow MCP Server - Production Grade

A secure, production-ready Model Context Protocol (MCP) server with MongoDB integration, featuring comprehensive security controls, CRUD operations, logging, and monitoring.

๐Ÿ“‹ Features

Security

  • โœ… Input Validation & Sanitization - Prevents NoSQL injection attacks

  • โœ… MongoDB SSL/TLS Support - Secure cloud deployments

  • โœ… Rate Limiting - Protects against abuse (100 req/min default)

  • โœ… Connection Pooling - Optimized for performance

  • โœ… Document Size Limits - Prevents resource exhaustion

  • โœ… Field Name Validation - Blacklists dangerous operators

Operations

  • โœ… CRUD Operations - Create, Read, Update, Delete documents

  • โœ… Filtering & Pagination - Flexible data retrieval with limits

  • โœ… Sorting Support - Sort by any field (ascending/descending)

  • โœ… Bulk Operations Ready - Extensible architecture

Monitoring & Observability

  • โœ… Comprehensive Logging - File & console with rotation

  • โœ… Health Checks - Service health status endpoint

  • โœ… Metrics Tracking - Request counts, success rates

  • โœ… Error Handling - Detailed error reporting

Production Ready

  • โœ… Security First - SSL/TLS support, input validation

  • โœ… Environment Config - 12-factor app ready

  • โœ… Graceful Shutdown - Proper resource cleanup

Related MCP server: Kroki MCP

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.12+

  • Docker & Docker Compose (optional)

  • MongoDB (or use Docker Compose)

Local Development

  1. Clone and setup:

cd dataflow_mcp
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .
  1. Configure environment:

cp .env.example .env
# Edit .env with your MongoDB connection
  1. Run the server:

python main.py

๐Ÿ“ก API Tools

Health Check

Get server status and metrics.

{
  "status": "healthy",
  "uptime_seconds": 123.45,
  "metrics": {
    "total_requests": 42,
    "successful_requests": 40,
    "failed_requests": 2,
    "success_rate": 95.24
  }
}

Read Collection

Retrieve documents with filtering, pagination, and sorting.

Parameters:

  • collection_name (required): Collection name

  • filter_query: JSON string with MongoDB filter

  • limit: Max documents (default: 100, max: 1000)

  • skip: Skip N documents (default: 0)

  • sort_by: Field to sort by

Example:

{
  "collection_name": "users",
  "filter_query": "{\"status\": \"active\"}",
  "limit": 10,
  "skip": 0,
  "sort_by": "created_at"
}

Get Document

Retrieve a single document by ID.

Parameters:

  • collection_name: Collection name

  • document_id: MongoDB ObjectId as string

Create Document

Create a new document in a collection.

Parameters:

  • collection_name: Collection name

  • document_json: JSON string representing the document

Example:

{
  "collection_name": "users",
  "document_json": "{\"name\": \"John\", \"email\": \"john@example.com\", \"status\": \"active\"}"
}

Update Document

Update an existing document.

Parameters:

  • collection_name: Collection name

  • document_id: MongoDB ObjectId as string

  • update_json: JSON with fields to update

Example:

{
  "collection_name": "users",
  "document_id": "65f8a1b2c3d4e5f6g7h8i9j0",
  "update_json": "{\"status\": \"inactive\", \"updated_at\": \"2024-01-01T12:00:00Z\"}"
}

Delete Document

Delete a document from a collection.

Parameters:

  • collection_name: Collection name

  • document_id: MongoDB ObjectId as string

๐Ÿ”’ Security Features

Input Validation

  • Collection names: Alphanumeric, dash, underscore only

  • Field names: Prevents dangerous operators ($where, $function, etc.)

  • Filters: Maximum 10KB, blacklist dangerous operations

  • Documents: Maximum 1MB, enforced size limits

MongoDB Security

  • Connection Options:

    • Connection pooling (default: 10 connections)

    • Retry writes enabled

    • Write concern: majority

    • Journaling enabled

    • SSL/TLS for cloud deployments

  • Environment Variables:

    MONGO_USE_TLS=true
    MONGO_CA_CERT_PATH=/path/to/ca.pem
    MONGO_ALLOW_INVALID_CERTS=false

Rate Limiting

  • 100 requests per 60 seconds (configurable)

  • Per-client tracking

  • Returns clear error on limit exceeded

Error Handling

  • Safe error messages (no sensitive data leaks)

  • Detailed internal logging

  • Graceful degradation

๐Ÿ“Š Environment Variables

Required

MONGO_URI=mongodb://user:password@host:port/database
MONGO_DB_NAME=dataflow

Optional (with defaults)

MONGO_TIMEOUT=5000              # Connection timeout (ms)
MONGO_POOL_SIZE=10              # Connection pool size
MONGO_MAX_IDLE_TIME=45000       # Max idle time (ms)
MONGO_USE_TLS=false             # Enable TLS
MONGO_CA_CERT_PATH=             # CA certificate path
LOGS_DIR=./logs                 # Log directory
LOG_LEVEL=INFO                  # Logging level

๐Ÿ“ Project Structure

dataflow_mcp/
โ”œโ”€โ”€ core.py            # FastMCP instance, rate limiter, metrics, prompt loading, normalization
โ”œโ”€โ”€ server.py          # tool registration + mcp.run()
โ”œโ”€โ”€ tools/
โ”‚   โ”œโ”€โ”€ health.py      # health_check, database_status
โ”‚   โ”œโ”€โ”€ crud.py        # generic MongoDB CRUD tools
โ”‚   โ”œโ”€โ”€ images.py      # contest banner pipeline (missing/broken images, cover prompts)
โ”‚   โ”œโ”€โ”€ migration.py   # v4.0 schema migration/backfill tools
โ”‚   โ”œโ”€โ”€ contests.py    # structuring + full generation + detail generation
โ”‚   โ”œโ”€โ”€ events.py      # events pipeline (fetch โ†’ structure โ†’ submit โ†’ query)
โ”‚   โ”œโ”€โ”€ raw_data.py    # raw scraped data bridge + overview
โ”‚   โ”œโ”€โ”€ validation.py  # chatbot-driven web validation pipeline
โ”‚   โ””โ”€โ”€ audit.py       # duplicate audit + discrepancy flagging
config/
โ”œโ”€โ”€ mongodb.py           # MongoDB connection with pooling
โ”œโ”€โ”€ security.py          # Validation and rate limiting
โ””โ”€โ”€ logging_config.py    # Logging setup
tools/                   # service layer (DataManager, generators, dedup gate, validators)
prompts/                 # prompt files (descriptive names + Prompts*.txt aliases)
main.py                  # thin entry point โ†’ dataflow_mcp.server
โ”œโ”€โ”€ pyproject.toml      # Dependencies and config (console script: dataflow-mcp)
โ””โ”€โ”€ .env.example        # Environment template

๐ŸŽช Events Pipeline

The MCP server includes a full events pipeline so AI chatbots can harvest and structure participatory events (conferences, summits, workshops, webinars, meetups, trainings, โ€ฆ):

1. get_records_for_events(source=..., limit=10)  โ†’ raw URLs + events-v1.1 prompt
2. [chatbot researches each URL and outputs event JSON]
3. submit_structured_events(events_json)         โ†’ persists to the Events collection
4. get_events(event_type=..., upcoming_only=true) โ†’ read structured events back
5. get_events_overview()                          โ†’ counts by type/status
6. get_events_for_detail_generation(batch_size=10) โ†’ events + event-details-v1.0.txt prompt
7. [chatbot researches and writes event details]
8. submit_event_details(event_id, details_json)  โ†’ versioned event_details saved
9. get_event_detail_status()                       โ†’ coverage metrics (remaining events to generate)

Event detail pages mirror the contest detail flow: EventDetailGenerator (tools/event_detail_generator.py) provides the priority queue, quality validation, and versioned event_details storage.

Prompt files were renamed to descriptive names (contest-structuring-v4.0.txt, event-structuring-v1.1.txt, โ€ฆ) with the old Prompts*.txt names kept as aliases. See TOOLS_REFERENCE.md for the full tool reference.

๐Ÿ”ง Configuration for Cloud Deployment

AWS Deployment

MONGO_URI=mongodb+srv://user:password@cluster.mongodb.net/dataflow
MONGO_USE_TLS=true
MONGO_ALLOW_INVALID_CERTS=false

Azure Deployment

MONGO_URI=mongodb://user:password@host.mongo.cosmos.azure.com:10255/database
MONGO_USE_TLS=true
MONGO_CA_CERT_PATH=/etc/ssl/certs/ca-certificates.crt

GCP Deployment

MONGO_URI=mongodb://user:password@instance:27017/database
MONGO_USE_TLS=true

๐Ÿšจ Production Checklist

  • MongoDB backups configured

  • SSL/TLS certificates installed

  • Environment variables set securely (not in code)

  • Logs redirected to centralized logging

  • Health checks configured in load balancer

  • Rate limits adjusted for your use case

  • MongoDB indexes optimized

  • Connection pool size tuned

  • Monitoring/alerting setup

  • Graceful shutdown tested

๐Ÿ“ˆ Performance Optimization

MongoDB Indexes

Pre-created indexes in scripts/mongo-init.js:

  • User email: unique constraint

  • Timestamps: for sorting and TTL

  • Status: for filtering

Connection Pooling

  • Default pool size: 10 (adjust via MONGO_POOL_SIZE)

  • Min connections: 2 (automatically maintained)

  • Max idle time: 45 seconds

Request Limits

  • Max filter size: 10KB

  • Max document size: 1MB

  • Max page size: 1000 documents

  • Rate limit: 100 req/min

๐Ÿงช Testing & Development

Install dev dependencies:

pip install -e ".[dev]"

Run tests:

pytest --cov=tools --cov=config

Code formatting:

black .
flake8 .
mypy .

๐Ÿ“ Logging

Logs are written to:

  • File: ./logs/mcp_server_YYYYMMDD.log (rotated daily, max 10MB)

  • Console: Real-time output

Log levels:

  • DEBUG - Detailed diagnostic info

  • INFO - General events

  • WARNING - Warning messages

  • ERROR - Error events

๐Ÿ› Troubleshooting

MongoDB Connection Failed

Check MONGO_URI and credentials
Verify MongoDB is running: mongosh "mongodb://..."
Check network connectivity and firewall

Rate Limit Exceeded

Default: 100 requests per 60 seconds
Increase MONGO_POOL_SIZE and optimize queries
Implement request queuing on client

High Memory Usage

Reduce MONGO_POOL_SIZE
Lower MONGO_MAX_IDLE_TIME
Check for large result sets (use pagination)

๐Ÿ“š References

๐Ÿ“„ License

MIT License - See LICENSE file for details

๐Ÿ‘ค Support

For issues and questions:

  1. Check troubleshooting section

  2. Review logs in ./logs/

  3. Check MongoDB connection

  4. Verify environment variables


Built for production-grade data operations with security-first design.

dataflow_mcp

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    A powerful Model Context Protocol (MCP) server implementation that provides standardized interaction with MongoDB databases, supporting complete CRUD operations, async patterns, and real-time updates via SSE.
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A production-ready MCP server scaffold that features built-in authentication, Docker support, and a comprehensive CI/CD release pipeline. It provides a standardized template for deploying servers with multi-transport support and configurable read-only modes.
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    A minimal, production-ready MCP server boilerplate for building AI-powered backend services with TypeScript, MongoDB, and JWT authentication.
    1

View all related MCP servers

Related MCP Connectors

  • The official MCP Server from Mia-Platform to interact with Mia-Platform Console

  • MCP server for InsForge BaaS โ€” database, storage, edge functions, and deployments

  • MCP (Model Context Protocol) server for Appwrite

View all MCP Connectors

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/SreeTarak2/dataflow_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server