Skip to main content
Glama
AnshuML

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: RagLit MCP Server

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes
tenant_idYes
project_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return details (filename, mime_type, etc.), which is helpful, but fails to cover critical aspects like whether this is a read-only operation, potential error conditions (e.g., invalid ID), authentication needs, or rate limits. This leaves significant gaps for a tool with 3 required parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with two sentences that directly state the purpose and return details. There is no wasted text, making it efficient, though it could be slightly more structured by explicitly listing parameters or usage scenarios.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 required parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose and return fields but misses parameter semantics, behavioral traits like error handling, and lacks output schema details. This is inadequate for a tool with multiple required inputs and no structured safety hints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate for all 3 parameters. It only mentions 'file_id' indirectly ('by ID'), but provides no context for 'tenant_id' or 'project_id', such as their roles or how they relate to the file. This adds minimal value beyond the schema, failing to clarify parameter meanings adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'fetch' and resource 'metadata for a specific file by ID', making the purpose evident. It distinguishes from siblings like 'search_files' by focusing on a single file rather than searching. However, it doesn't explicitly contrast with 'semantic_search_files', so it's not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_files' or 'semantic_search_files'. It implies usage for retrieving metadata of a known file ID, but lacks explicit when/when-not instructions or prerequisites, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_filesC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_idYes
project_idYes
filtersNo
pageNo
page_sizeNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only mentions search functionality and filter examples. It lacks critical behavioral details: whether this is read-only, pagination behavior (implied by parameters but not described), rate limits, authentication needs, or what happens when no filters are provided. The description doesn't contradict annotations, but provides minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences that efficiently convey core functionality and filter examples. It's front-loaded with the main purpose. No wasted words, though it could be slightly more structured with explicit parameter guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the 'filters' parameter well but ignores others, lacks behavioral transparency for a search tool, and doesn't explain return values or error conditions. This leaves significant gaps for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but only partially does. It mentions 'metadata filters' and examples like 'filename, mime_type, processing_status, upload date range', which helps explain the 'filters' parameter. However, it doesn't address 'tenant_id', 'project_id', 'page', or 'page_size' parameters, leaving 4 of 5 parameters without semantic clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('search') and resource ('files') with the method ('using metadata filters'). It distinguishes from 'get_file_metadata' by focusing on search rather than retrieval, and from 'semantic_search_files' by specifying metadata-based rather than semantic search. However, it doesn't explicitly name these distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'metadata filters' and example filters, suggesting when to use this tool. However, it doesn't explicitly state when to choose this over 'semantic_search_files' or 'get_file_metadata', nor does it mention prerequisites like required parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

semantic_search_filesB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
tenant_idYes
project_idYes
top_kNo
file_idsNo
thresholdNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions 'semantic search' and 'natural language', it doesn't describe how results are returned (e.g., relevance scores, format), whether it's read-only (implied but not stated), performance characteristics, or any limitations like rate limits or authentication needs. The description is too vague for a tool with 6 parameters and no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that are front-loaded and waste no words. Every phrase ('Semantic search over file embeddings', 'Use natural language to find relevant content across files') directly contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 parameters, 3 required), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, how to interpret results, or provide any details about parameter usage. For a search tool with multiple filtering options, this leaves significant gaps for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 6 parameters have descriptions in the schema. The tool description provides no information about parameters like 'tenant_id', 'project_id', 'top_k', 'file_ids', or 'threshold', leaving their purposes and usage completely undocumented. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Semantic search over file embeddings' with the specific action 'Use natural language to find relevant content across files.' It distinguishes itself from 'search_files' by specifying semantic search (natural language understanding) rather than keyword-based search, though it doesn't explicitly contrast with 'get_file_metadata'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('Use natural language to find relevant content') but doesn't explicitly state when to use this tool versus alternatives like 'search_files' or 'get_file_metadata'. It provides no guidance on prerequisites, exclusions, or specific scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedget_file_metadata
    • First observedsearch_files
    • First observedsemantic_search_files

TDQS

B3.1/5.0
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 issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables semantic search and retrieval of code files using embeddings stored in PostgreSQL. Supports intelligent codebase exploration through natural language queries, file listing, and content retrieval.
    16
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables ingestion and semantic search over text documents using PostgreSQL + pgvector and OpenAI-compatible embeddings, allowing any LLM agent to retrieve relevant chunks for grounded answers.
    4
    AGPL 3.0
  • A
    license
    B
    quality
    A
    maintenance
    Enables file-based knowledge management with ranked keyword and semantic hybrid search, allowing AI agents to learn from documents and recall relevant knowledge as a persistent memory tool.
    30
    896
    AGPL 3.0

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/AnshuML/MCP'

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