Token导航 LogoToken导航TokenDH.com
Data Filter MCP logo
运维云端stdio官方级别未说明来源级核验

Data Filter MCP

MCP Server

本地MCP服务器,用于注册受限Python过滤器并对本地json、yaml和txt文件运行这些过滤器。

工具数

0

提示词数

0

GitHub Stars

3

资源数

0
Python数据处理云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

alxark

提供方

alxark

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx data-filter-mcp --filter-ttl-seconds 3600 --cleanup-interval-seconds 60

详细介绍

数据过滤器mcp

本地MCP服务器,注册受限的Python过滤器并在本地运行它们 json, yaml,以及 txt 文件夹。

它的作用

  • register_filter 只接受一个顶级函数的Python源代码: def filter_item(data):
  • run_filter 加载本地文件,将加载的文档传递到 filter_item(data),并返回以下文本 result_text
  • convert_file 加载本地文件,并将其传递给 filter_item(data),并将返回的文本写入另一个本地文件
  • 已注册的筛选器仅存在于内存中,并根据服务器TTL设置自动过期

可以使用什么过滤代码

过滤器主体根据白名单进行AST验证。除了一套精心策划的内置组件(len, sorted, max, min, range, enumerate, zip, sum, any, all、转换等)和安全字符串/字典/列表方法,过滤器还可以使用一组精心策划的标准库模块。模块通过其规范名称公开(math, datetime, hashlib等等)。文件系统、进程、网络和不安全的序列化模块(os, pathlib, shutil, subprocess, socket, urllib, pickle等等)故意不可用。

  • lambda 表达 --通常为 key= 论点,例如。 sorted(data, key=lambda item: item.get("score")).Lambda主体的验证规则与过滤器的其他部分相同。
  • jsonjson.loads, json.dumps.
  • yamlyaml.safe_load, yaml.safe_dump.不安全 yaml.load / yaml.dump 故意不暴露。
  • rere.match, re.search, re.fullmatch, re.findall, re.sub, re.subn, re.compile, re.escape,加 Match / Pattern 方法(group, groups, groupdict, start, end, span).
  • math --数字助手,例如 math.ceil, math.floor, math.sqrt, math.log, math.exp, math.pow, math.factorial, math.gcd, math.lcm, math.isfinite, math.isclose.
  • statistics --骨料,如 statistics.mean, statistics.median, statistics.stdev, statistics.variance, statistics.quantiles.
  • datetimedatetime.datetime.fromisoformat, datetime.datetime.now, datetime.timedelta, datetime.timezone.utc,以及实例方法,例如 isoformat, strftime, timestamp, weekday, total_seconds.General实例属性读取如下 dt.yeardt.month 不受当前政策的支持。
  • decimaldecimal.Decimal(...), quantize, normalize, to_eng_string, to_integral_value.
  • collectionscollections.Counter, collections.defaultdict, collections.OrderedDict, collections.deque,加上以下方法 most_common, elements, popleft, appendleft, rotate.
  • itertoolschain, chain.from_iterable, islice, takewhile, dropwhile, groupby, starmap, accumulate, combinations, permutations, product, filterfalse.
  • functoolsreduce, partial, cmp_to_key, wraps缓存装饰器,例如 lru_cachecache 有意不公开,因为它们可以在过滤器调用中保留进程本地状态。
  • operatoritemgetter, methodcaller,以及算术/比较助手,例如 add, mul, lt, eq, gt. attrgetter 故意不暴露。
  • textwrapfill, wrap, shorten, indent, dedent.
  • htmlhtml.escape, html.unescape.
  • base64b64encode, b64decode, urlsafe_b64encode, urlsafe_b64decode, b32encode, b32decode, b16encode, b16decode.
  • hashlibhashlib.sha256, hashlib.sha1, hashlib.md5, hashlib.blake2b, hashlib.new,加上哈希对象方法,如 hexdigest, digest, update.
  • ipaddressip_address, ip_network, ip_interface, IPv4Network, IPv6Network,加上以下方法 supernet, subnets, hosts, overlaps, subnet_of, supernet_of.General实例属性读取如下 addr.is_privateaddr.compressed 不受当前政策的支持。
  • unicodedatacategory, name, lookup, numeric, digit, decimal, bidirectional, combining, mirrored.
  • difflibget_close_matches, ndiff, unified_diff, context_diff, SequenceMatcher.

注: re.compile 根据过滤器代码提供的模式运行,因此病理模式可能会使服务器停滞(ReDoS)。一些助手,如 difflib.SequenceMatcher 在大输入上也可能占用大量CPU。将筛选器源视为受信任但受限制的。

用uvx跑步

发布到PyPI后,使用以下命令启动服务器:

uvx data-filter-mcp --filter-ttl-seconds 3600 --cleanup-interval-seconds 60

显示可用的CLI标志:

uvx data-filter-mcp --help

限制文件访问 --workdir

默认情况下,服务器可以读取本地文件系统上的任何文件。使用一个或 更多 --workdir 用于将文件读取限制到特定目录的标志:

uvx data-filter-mcp \
  --filter-ttl-seconds 3600 \
  --cleanup-interval-seconds 60 \
  --workdir /Users/me/project \
  --workdir /tmp/data

规则:

  • --workdir 值必须是 绝对路径 到现有目录。
  • run_filter 将只接受位于允许目录内的文件。
  • 如果不 --workdir 提供标志,不应用任何限制(向后兼容)。
  • convert_file 总是需要至少一个 --workdir 因为它会写入磁盘。
  • convert_file 要求目标路径位于允许的工作目录内。
  • convert_file 自动创建缺少的目标父目录。
  • convert_file 拒绝替换现有目标文件,除非 overwritetrue.

使用写入转换后的文件 convert_file

使用 convert_file 当过滤后的输出应该被持久化而不是返回时 与模型内联。该工具接受:

  • filter_id --由返回的标识符 register_filter
  • source_file_path --要加载的json/yaml/txt文件的绝对路径
  • destination_file_path --应保存返回文本的绝对路径
  • file_type --可选源文件类型覆盖(json, yaml,或 txt)
  • overwrite --可选布尔值,默认值 false

示例流程:

def filter_item(data):
    return "\n".join(data["items"])

然后打电话 convert_file 来源如下 /tmp/data/items.json 以及a 目的地,如 /tmp/data/out/items.txt。结果以UTF-8编写 文本。返回的元数据包括解析的源和目的地路径, 有效源文件类型, bytes_written,以及现有文件是否 覆盖。

MCP客户端配置示例:

{
  "mcpServers": {
    "data-filter": {
      "command": "uvx",
      "args": [
        "data-filter-mcp",
        "--filter-ttl-seconds",
        "3600",
        "--cleanup-interval-seconds",
        "60",
        "--workdir",
        "/Users/me/project",
        "--workdir",
        "/tmp/data"
      ]
    }
  }
}

在本地运行

python server.py --filter-ttl-seconds 3600 --cleanup-interval-seconds 60
python -m data_filter_mcp.server --filter-ttl-seconds 3600 --cleanup-interval-seconds 60
.venv/bin/data-filter-mcp --filter-ttl-seconds 3600 --cleanup-interval-seconds 60

目录标签

目录标签

Python数据处理云端部署数据过滤本地部署Python过滤器本地文件处理JSON处理YAML处理

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP