Skip to main content
Glama
Istedlal MCP Server

Istedlal MCP Server

by AnshuML

Istedlal MCP Server

MCP Server for Istedlal AI Agents - file metadata, vector search, workflow metrics access.

Requirements

  • Python 3.10+

  • See requirements.txt for dependencies

Related MCP server: rag-mcp

Setup

# Create virtual environment
python -m venv venv
venv\Scripts\activate   # Windows

# Install dependencies
pip install -r requirements.txt

# Create .env with required variables (see docs/ENV_SETUP.md)

Run

Terminal testing (use streamable-http to avoid "Invalid JSON: EOF" errors):

# .env: MCP_TRANSPORT=streamable-http
python -m src.main
# Server at http://localhost:8000/mcp

Cursor/IDE integration (stdio - Cursor spawns the process, don't run manually):

# .env: MCP_TRANSPORT=stdio
# Add server to Cursor MCP settings; Cursor will start it automatically

Tools

  • get_file_metadata - Fetch metadata for a file by ID (real DB when VECTOR_PROVIDER=pgvector)

  • search_files - Search files by metadata filters (real DB when pgvector)

  • semantic_search_files - Semantic search over file embeddings (Ollama + pgvector)

Testing with MCP Inspector

See docs/MCP_INSPECTOR_GUIDE.md for the complete step-by-step guide.

npx -y @modelcontextprotocol/inspector

Production

Production Checklist

Item

Required

Notes

Dockerfile

Yes

Build container image

.dockerignore

Yes

Exclude venv, .env, pycache

Production .env

Yes

Set on server (never commit)

Port 8000

Yes

Expose for MCP endpoint

PostgreSQL + pgvector

Phase 2

document_metadata, document_embeddings (see data/vectordb_schema_documentation.pdf)

Ollama

Phase 2

For semantic search query embeddings

What to Exclude from Deployment

  • .cursor/ – Cursor IDE config only, not needed on server

  • venv/ – Create fresh on server or use Docker

  • .env – Contains secrets; set separately on server

  • __pycache__/ – Python cache, auto-generated

  • data/ – Reference docs only, not runtime

Production Environment Variables

MCP_TRANSPORT=streamable-http
HTTP_HOST=0.0.0.0
HTTP_PORT=8000
DATABASE_URL=postgresql://user:password@db-host:5432/dbname
VECTOR_PROVIDER=pgvector   # mock | pgvector | chromadb
OLLAMA_URL=https://your-ollama:11433
OLLAMA_EMBEDDING_MODEL=llama3.2
OLLAMA_USERNAME=   # if Basic Auth required
OLLAMA_PASSWORD=
LOG_LEVEL=INFO
MCP_BEARER_TOKEN=your-secret-token   # Required – Bearer token auth for /mcp

Dockerfile (Create if Deploying via Docker)

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY src/ ./src/
ENV MCP_TRANSPORT=streamable-http
ENV PYTHONUNBUFFERED=1
EXPOSE 8000
CMD ["python", "-m", "src.main"]

.dockerignore (Create to Exclude from Build)

venv/
.env
.git/
.cursor/
__pycache__/
*.pyc
data/
docs/
scripts/
tests/
infra/

Deployment Steps

  1. Build: docker build -t istedlal-mcp .

  2. Run: docker run -p 8000:8000 -e DATABASE_URL=... -e MCP_BEARER_TOKEN=your-secret istedlal-mcp

  3. Verify: curl http://localhost:8000/ (info page)

  4. MCP Endpoint: http://your-server:8000/mcp

Kubernetes (Optional)

  • Use Deployment + Service manifests in infra/k8s/

  • Expose Service (ClusterIP/NodePort/LoadBalancer)

  • Set DATABASE_URL via Secret

Health & Monitoring

  • Root / returns JSON with status

  • MCP endpoint: /mcp (for MCP clients only)

  • Logs: Set LOG_LEVEL=DEBUG for troubleshooting

Available Tools

3 tools
get_file_metadataC

Fetch metadata for a specific file by ID. Returns file details including filename, mime_type, size, processing_status, and storage info.

Inputs: file_id (required), tenant_id (required), project_id (required).

search_filesC

Search files using metadata filters. Supports filters like filename, mime_type, processing_status, upload date range.

Inputs: tenant_id (required), project_id (required), filters, page, +1 more.

semantic_search_filesB

Semantic search over file embeddings. Use natural language to find relevant content across files.

Inputs: query (required), tenant_id (required), project_id (required), top_k, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: get_file_metadata retrieves specific file details by ID, search_files filters files based on explicit metadata criteria, and semantic_search_files finds files using natural language queries over embeddings. There is no overlap in functionality, making tool selection straightforward for an agent.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case: get_file_metadata, search_files, and semantic_search_files. The naming is predictable and readable, with no deviations in style or convention across the set.

    Tool Count3/5

    With only 3 tools, the server feels thin for a file management domain, as it lacks essential operations like upload, delete, or update files. While the tools are well-defined, the count is borderline low for covering typical file lifecycle needs, potentially limiting agent workflows.

    Completeness2/5

    The tool set has significant gaps for file management: there are no tools for uploading, deleting, updating, or processing files, which are core operations in this domain. Agents will face dead ends when trying to perform basic file lifecycle tasks, as the surface only supports retrieval and search functions.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers