Skip to main content
Glama
chohyerinn

filter-mcp-server

by chohyerinn

Approximate Filters using MCP Servers

Overview

This project compares several approximate filter data structures using MCP servers and LLM tool calls.

Approximate filters reduce memory usage by storing compressed summaries instead of full keys.
Because of this trade-off, some filters may return false positives or support limited operations.

The project compares:

  • Bloom Filter

  • Counting Bloom Filter

  • Cuckoo Filter

  • SuRF (Simplified Version)

An exact hash-set server is also included as a baseline for comparison.

Related MCP server: mcp-zeroentropy

Implemented MCP Servers

MCP Server

Data Structure

Description

filter-naive

Exact Set / Hash Table

Exact membership baseline

filter-bloom

Bloom Filter

Memory-efficient approximate membership filter

filter-counting-bloom

Counting Bloom Filter

Bloom Filter with deletion support

filter-cuckoo

Cuckoo Filter

Fingerprint-based approximate filter

filter-surf

Simplified SuRF

Approximate prefix/range filter

Project Goal

The goal of this project is to compare how different filter structures behave under the same workload.

The comparison focuses on:

  • membership query accuracy

  • false positive rate

  • memory usage

  • query latency

  • insertion and deletion support

  • prefix and range query capability

All servers expose the same ADT-style interface through MCP tools so that they can be tested consistently.

Scenario

Search Keyword Dictionary Management

The servers simulate a keyword search system.

Examples:

  • search autocomplete

  • keyword lookup

  • blocked-word checking

  • dictionary membership testing

The same keyword dataset and queries are used across all filters to compare performance and behavior.

ADT

All MCP servers provide the following tools:

Tool

Description

build(items)

Build filter from dataset

insert(x)

Insert a key

contains(x)

Membership query

delete(x)

Delete a key if supported

range_query(lo, hi)

Range query

prefix_query(prefix)

Prefix query

memory_usage()

Return estimated memory usage

false_positive_rate()

Measure false positive rate

Theoretical / Qualitative Structure Comparison

Structure

False Positives

Delete Support

Prefix/Range Query

Memory Efficiency

Exact Set

No

Yes

Yes

Low

Bloom Filter

Yes

No

No

Very High

Counting Bloom Filter

Yes

Yes

No

High

Cuckoo Filter

Yes

Yes

No

High

Simplified SuRF

Yes

No

Yes

Medium

This table describes the expected qualitative behavior of each structure. It is not a measured benchmark result.

Benchmark Results

Measured results are available in docs/benchmark_results.md.

The benchmark uses fixed synthetic workloads from src/membership_filters/benchmark.py and compares all filters with the same build items and absent-query probes. It reports estimated memory from memory_usage(), measured false positive rate from false_positive_rate(), and average local contains() latency.

Run it locally:

PYTHONPATH=src python -m membership_filters.benchmark
$env:PYTHONPATH='src'; python -m membership_filters.benchmark

Run the smoke tests:

PYTHONPATH=src python -m unittest discover -s tests
$env:PYTHONPATH='src'; python -m unittest discover -s tests

Notes

  • filter-naive is included as the exact baseline.

  • The SuRF server is a simplified educational implementation, not a full LOUDS-based production SuRF.

  • The project focuses on comparison and experimentation rather than production optimization.

Example Claude Desktop MCP Configuration

{
  "mcpServers": {
    "filter-naive": {
      "command": "python",
      "args": ["src/filter_/filter_naive_server.py"]
    },
    "filter-bloom": {
      "command": "python",
      "args": ["src/filter_/filter_bloom_server.py"]
    },
    "filter-counting-bloom": {
      "command": "python",
      "args": ["src/filter_/filter_counting_bloom_server.py"]
    },
    "filter-cuckoo": {
      "command": "python",
      "args": ["src/filter_/filter_cuckoo_server.py"]
    },
    "filter-surf": {
      "command": "python",
      "args": ["src/filter_/filter_surf_server.py"]
    }
  }
}

System Flow

Claude / LLM
        ↓
MCP Tool Call
        ↓
mcp_server.py
        ↓
registry.py
        ↓
Selected Filter Class
        ↓
Bloom / Counting Bloom / Cuckoo / SuRF / Exact Set

Flow Description

  1. The LLM sends an MCP tool request.

  2. mcp_server.py exposes the common ADT-style tools.

  3. registry.py selects the requested filter implementation.

  4. The selected filter processes the query.

  5. The result is returned back through the MCP server.

This design allows all filters to be tested through the same interface and workload.

Repository Structure

src/
├── filter_/
│   ├── filter_naive_server.py
│   ├── filter_bloom_server.py
│   ├── filter_counting_bloom_server.py
│   ├── filter_cuckoo_server.py
│   └── filter_surf_server.py
│
└── membership_filters/
    ├── base.py
    ├── hashing.py
    ├── mcp_server.py
    ├── registry.py
    └── filters/

Available Tools

9 tools
buildD

Build this filter from an initial string dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
configNo

TDQS

D1.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose side effects, destructiveness, or return behavior. The phrase 'Build this filter' implies creation but no details on state changes or dependencies.

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

Conciseness2/5

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

The description is short but at the expense of clarity. It lacks essential details, making it under-specified rather than concise. Every word is used but does not convey useful guidance.

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

Completeness1/5

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

Given no output schema, no annotations, and vague purpose, the description is completely inadequate. It fails to explain what the tool returns, when to use it, or how parameters affect behavior.

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

Parameters1/5

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

Schema has two parameters (items and config) with 0% description coverage. The description does not explain what 'items' (array of strings) or 'config' (optional object) do. It adds no meaning beyond the schema.

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

Purpose2/5

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

Description says 'Build this filter from an initial string dataset' but does not specify what kind of filter or how it relates to sibling tools. The verb 'build' and noun 'filter' are vague; no differentiation from siblings like 'contains' or 'insert'.

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?

No guidance on when to use this tool versus siblings. The description does not mention prerequisites, limitations, or alternative tools. A good description would indicate if this is for initializing a filter before using other operations.

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

containsC

Point membership query for one string key.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must describe behavior. It says 'query' implying read-only, but does not explicitly state side effects, return type, or whether the operation is destructive. Lacks depth.

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

Conciseness3/5

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

The description is a single short sentence, which is concise. However, it is arguably underspecified; being slightly longer to include behavioral or return details would improve completeness without losing conciseness.

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 there is no output schema, the description should indicate what the tool returns (e.g., boolean) but does not. It also lacks any context about error conditions or behavior on missing keys. Incomplete for a simple tool.

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 should add meaning beyond the schema. It merely restates that the parameter is a 'string key' without providing any additional semantics, valid formats, or constraints.

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 it is a 'point membership query for one string key', which specifies the verb (query) and resource (membership of a key). It differentiates from siblings like 'prefix_query' and 'range_query' by specifying 'point' membership.

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?

No guidance is provided on when to use this tool versus alternatives. While it is implied from the name and siblings, there is no explicit when-to-use or when-not-to-use information.

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

deleteC

Delete one key if the structure supports deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes

TDQS

C2.1/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions a conditional ('if the structure supports deletion') without explaining what happens when deletion is not supported or other behavioral aspects like idempotency.

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

Conciseness3/5

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

The description is concise but lacks critical details. It is not well-structured for an agent to understand usage.

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

Completeness1/5

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

Given the low schema coverage, no output schema, and absence of annotations, the description is insufficient for an agent to use the tool correctly.

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

Parameters1/5

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

The only parameter 'x' is not described in the schema or the description. With 0% schema description coverage, the description adds no meaning beyond the parameter name.

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

Purpose3/5

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

The description states the action (delete) and resource (one key) but is vague about what 'structure' refers to. It does not differentiate from siblings like 'reset' or 'insert', but the core purpose is communicated.

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?

No guidance on when to use this tool versus siblings. No mention of prerequisites or conditions for use.

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

false_positive_rateC

Return theoretical and measured false positive rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
absent_itemsNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so the description must carry the burden. It implies a read-only operation but does not explicitly state side effects, permissions, or behavior. The description is too short to provide adequate transparency.

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

Conciseness3/5

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

The description is concise (one sentence) but lacks structure. It front-loads the verb 'Return', which is good, but the brevity results in under-specification rather than conciseness.

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 tool's single optional parameter and no output schema, the description is incomplete. It fails to explain what theoretical vs measured rates refer to or how absent_items affects results, leaving significant gaps for an agent.

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

Parameters1/5

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

The only parameter 'absent_items' is not mentioned in the description. With 0% schema description coverage, the description adds no semantic meaning beyond the schema's type and title.

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 returns theoretical and measured false positive rate, which is specific. However, it lacks context about what data structure this applies to, making it slightly less clear in isolation.

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?

No guidance on when to use this tool vs siblings or prerequisites. The agent must infer context from sibling names, which is insufficient.

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

insertC

Insert one string key. Static structures return a standard unsupported response.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes

TDQS

C2.9/5.0
Behavior2/5

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

The description adds one behavioral note: 'Static structures return a standard unsupported response.' This is vague and unexplained; 'static structures' is not defined, and it is unclear whether this is an error or a feature. Without annotations, the description fails to adequately disclose permissions, side effects, or error conditions.

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

Conciseness3/5

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

The description is very short at two sentences. The first sentence is direct, but the second sentence is cryptic and may confuse rather than help. It could be more concise by removing the second sentence if it is not essential, but overall it is not overly verbose.

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 tool's simplicity (one parameter, no output schema), the description still lacks completeness. It does not explain what the tool returns, whether it modifies state (mutability), or how it interacts with other tools. The cryptic reference to static structures adds uncertainty rather than clarity.

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

Parameters4/5

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

Despite the input schema having 0% description coverage and only an 'x' field, the description clarifies that the parameter is a 'string key.' This adds meaning beyond the schema, which only specifies type string. However, it does not elaborate on allowed values or format, so some ambiguity remains.

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 states 'Insert one string key,' which clearly indicates the action and the object (one string key). However, it does not specify what the key is inserted into (e.g., a dictionary, set, or other structure), which could cause confusion with sibling tools like 'build' or 'contains' that might also relate to data structures.

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?

No explicit guidance is provided on when to use this tool versus its siblings (e.g., 'build', 'delete', 'contains'). The description does not mention scenarios or prerequisites, leaving the agent without decision support for alternative tools.

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

memory_usageB

Return pure-structure memory estimate and bits per item.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It indicates a read-only operation returning estimates, but does not mention side effects, permissions, or dependencies. Minimal transparency.

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 a single sentence that is front-loaded and directly states the action and result. No wasted words.

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 absence of annotations and output schema, the description is too sparse. It does not explain 'pure-structure', expected output format, or how the values should be interpreted. Incomplete for effective use.

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

Parameters4/5

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

The schema has zero parameters with 100% coverage, so the baseline is 3. The description adds value by specifying the output (memory estimate and bits per item), which goes beyond the empty schema.

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 states it returns a memory estimate and bits per item, using a specific verb and resource. It is clear but does not distinguish from sibling tools like 'false_positive_rate'.

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?

No guidance is provided on when to use this tool versus its siblings (e.g., build, insert, query). The description lacks context for selection.

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

prefix_queryD

Prefix query. Unsupported point-only filters return N/A.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixYes

TDQS

D1.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only mentions that unsupported point-only filters return N/A, leaving out critical details such as idempotency, side effects, permissions, or rate limits. This is minimal disclosure.

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

Conciseness2/5

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

The description is extremely short but at the cost of being under-specified. It lacks any structure (e.g., bullet points, sections) and the first sentence is practically empty. Effective conciseness would convey necessary information efficiently, but here it omits essential details.

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

Completeness1/5

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

Given the tool's low complexity (single parameter, no output schema, no annotations), the description still fails to provide a complete picture. It does not explain what the tool returns, the nature of the data queried, or any behavioral constraints beyond the one filter idiosyncrasy. The description is inadequate for an agent to use the tool correctly.

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

Parameters1/5

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

The single parameter 'prefix' is not described at all. Schema description coverage is 0%, and the description adds no meaning about what the prefix represents, its expected format, or how it is used in the query. This is a complete failure to add value beyond the schema.

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

Purpose2/5

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

The description 'Prefix query' is essentially a tautology of the tool name. It does not specify what resource or data is being queried, making the purpose vague. The additional sentence about unsupported filters adds some context but does not clarify the primary function.

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?

No explicit guidance on when to use this tool versus siblings like 'contains' or 'range_query'. The note about unsupported point-only filters returning N/A is a usage constraint but not a guideline for selection among alternatives.

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

range_queryA

Lexicographic half-open range query: lo <= key < hi. Unsupported point-only filters return N/A.

ParametersJSON Schema
NameRequiredDescriptionDefault
loYes
hiYes

TDQS

A3.5/5.0
Behavior3/5

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

Given no annotations, the description partially compensates by disclosing the half-open interval semantics and that unsupported point-only filters return N/A. However, it does not mention read-only nature, performance, or error conditions beyond N/A, leaving gaps.

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 a single sentence that concisely explains the core functionality and a key behavioral note. Every word adds value with no redundancy.

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

Completeness3/5

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

For a two-parameter tool with no output schema and no annotations, the description explains the query semantics and a special case but omits return format, error handling beyond 'N/A', and performance implications. It is adequate but not complete.

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

Parameters3/5

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

With zero schema description coverage, the description adds meaning by explaining that 'lo' is the inclusive lower bound and 'hi' the exclusive upper bound. However, it lacks details on string encoding, constraints (e.g., lo must be <= hi), and behavior for invalid inputs.

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

Purpose5/5

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

The description clearly states it performs a lexicographic half-open range query, specifying the inclusive lower bound and exclusive upper bound. This distinguishes it from sibling tools like prefix_query and contains by explicitly naming the range type.

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?

No guidance on when to use this tool versus its siblings (e.g., prefix_query, contains). The description only mentions behavior for unsupported filters but does not help an agent decide between alternatives.

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

resetB

Clear all data and reinitialize with optional new config.

After reset, the filter is empty; use build() or insert() to add data again.

ParametersJSON Schema
NameRequiredDescriptionDefault
configNo

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 must disclose all behavioral traits. It only states 'clear all data' and that the filter becomes empty, but lacks details on side effects, permissions, or irreversible actions.

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 with two sentences, no wasted words. The second sentence provides practical post-reset guidance. Slightly improved structure could make purpose clearer earlier.

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

Completeness3/5

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

For a simple reset tool with one optional parameter and no output schema, the description covers the core action. However, missing details about return values and config behavior reduce completeness.

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 description mentions 'optional new config' but gives no explanation of how the config parameter affects the reset behavior. Schema coverage is 0%, so the description should compensate but does not.

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 resets data and reinitializes with optional config. However, it does not explicitly differentiate from sibling tools like delete or build, though the action is distinct.

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 when a clean state is needed, but does not provide explicit when-to-use or when-not-to-use guidance. The note about using build() or insert() afterwards is helpful context.

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. 9 tool updatesv1.0.0
    • First observedbuild
    • First observedcontains
    • First observeddelete
    • First observedfalse_positive_rate
    • First observedinsert
    • First observedmemory_usage
    • First observedprefix_query
    • First observedrange_query
    • First observedreset

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a distinct purpose: building from dataset, insertion, membership query, deletion, statistics, memory usage, and two specific query types. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent pattern of lowercase verbs or verb-noun descriptions with underscores for compound names (e.g., false_positive_rate, prefix_query). No mixing of styles.

Tool Count5/5

9 tools is well-scoped for a filter server, covering initialization, insertion, deletion, queries, and statistics without being excessive or sparse.

Completeness5/5

The tool surface covers all essential operations for a filter data structure: building, inserting, deleting, membership testing, multiple query types, and memory/error rate stats. Missing features are structure-dependent and handled gracefully with standard responses.

Maintenance

ActivityStale
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

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP Server for ZeroEntropy collections, top documents and rerankers
    -
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that enables users to query, compare, and synthesize responses from multiple local and cloud LLMs simultaneously using existing subscriptions. It provides tools for parallel model evaluation, consensus polling with an LLM-as-judge, and response synthesis across different model providers.
    8
    15
    15
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Data compression MCP server with auto-algorithm selection (gzip, brotli, deflate). 7 tools for compress, decompress, analyze, store, retrieve, list, and stats. Achieves 60x compression on docs, 30x on SQL. Lossless round-trip verified. Zero dependencies.
    9
    2
    MIT

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/chohyerinn/filter-mcp-server'

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