filter-mcp-server
This server provides a unified interface for building, querying, and benchmarking approximate membership filter data structures, including Bloom Filter, Counting Bloom Filter, Cuckoo Filter, Simplified SuRF, and an exact hash-set baseline.
Build (
build): Initialize the filter from an initial dataset of strings, with optional configuration parameters.Insert (
insert): Add a single string key (unsupported by static structures).Contains (
contains): Check membership for a specific string key (may return false positives depending on filter type).Delete (
delete): Remove a key if the filter supports deletion (e.g., Counting Bloom, Cuckoo; not standard Bloom or SuRF).Range query (
range_query): Lexicographic half-open range query (lo <= key < hi), unsupported by point-only filters.Prefix query (
prefix_query): Query for keys sharing a given prefix, unsupported by point-only filters.Memory usage (
memory_usage): Retrieve estimated memory footprint and bits-per-item metrics.False positive rate (
false_positive_rate): Get theoretical and empirically measured false positive rates.Reset (
reset): Clear all data and reinitialize the filter, optionally with a new configuration.
The consistent ADT-style interface makes it easy to compare the behavior and performance trade-offs across different filter implementations.
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 |
| Exact Set / Hash Table | Exact membership baseline |
| Bloom Filter | Memory-efficient approximate membership filter |
| Counting Bloom Filter | Bloom Filter with deletion support |
| Cuckoo Filter | Fingerprint-based approximate filter |
| 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 filter from dataset |
| Insert a key |
| Membership query |
| Delete a key if supported |
| Range query |
| Prefix query |
| Return estimated memory usage |
| 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.benchmarkRun the smoke tests:
PYTHONPATH=src python -m unittest discover -s tests$env:PYTHONPATH='src'; python -m unittest discover -s testsNotes
filter-naiveis 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 SetFlow Description
The LLM sends an MCP tool request.
mcp_server.pyexposes the common ADT-style tools.registry.pyselects the requested filter implementation.The selected filter processes the query.
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 toolsbuildD
Build this filter from an initial string dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| config | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| absent_items | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lo | Yes | ||
| hi | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| config | No |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v1.0.0- First observed
build - First observed
contains - First observed
delete - First observed
false_positive_rate - First observed
insert - First observed
memory_usage - First observed
prefix_query - First observed
range_query - First observed
reset
TDQS
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.
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.
9 tools is well-scoped for a filter server, covering initialization, insertion, deletion, queries, and statistics without being excessive or sparse.
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
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
SigRank benchmark MCP: cascade metrics, leaderboard, operator profiles, simulation, diagnostics.
Papers With Code MCP — browse ML research papers and their code repositories
Closed-source remote MCP: model benchmarks, costs, HN signals, tech registry.
Cloudflare Workers MCP server: api-perf-analyzer
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP for Scorable Evaluation Platform312MIT
- -licenseNot gradedqualityNot gradedmaintenanceMCP Server for ZeroEntropy collections, top documents and rerankers-
- AlicenseAqualityCmaintenanceAn 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.81515MIT
- AlicenseAqualityCmaintenanceData 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.92MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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