原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。使用 Google 登录即可撰写评价。原型 · 每 30 分钟更新
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

InferMap

作者:benseverndev-oss版本 0.7.0i★ 0i电脑或云端
注册名称io.github.benseverndev-oss/infermap

安装方法

What it does

Map messy columns to a known schema — 7 scorers, domain dictionaries, F1 0.84. Zero config.

  • Connects 电脑或云端
  • Account or key No key needed
  • Category 旅行、地图与天气

安装

选择你使用的 AI 应用,然后复制设置。

通过 2/4 项检查 · 在你的电脑上运行

我们隐藏了部分命令

通过地址连接:检查时服务器地址没有响应

可以改用“在本机运行”,步骤在下方

第一步:你用哪个 AI?

选择你用的应用,步骤会显示在下方。

可连接 Claude,但需要先准备

需要先在电脑上安装 Python (uv)(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用

  1. 安装 uv(如果还没有)

    已经装好了吗?先检查 · 打开终端,输入这条命令后按 Enter

    uv --version
    • 显示版本号(例如 uv …)= 已安装,可跳过这一步
    • 显示 "command not found"(Windows 显示 "is not recognized")= 还没安装,或刚装好但需要关掉终端再重新打开
    怎么打开终端

    Mac:按 ⌘ + Space,输入 Terminal 后按 Enter

    Windows:打开“开始”菜单,输入 Windows PowerShell,然后选“打开”

    还没安装: uv 没有点选式安装程序。从 uv 官方页面复制适合你系统(macOS 或 Windows)的一行命令,粘贴到终端 · 不需要单独安装 Python,uv 会在需要时自动下载

    打开 uv 下载页 ↗

    装好后关掉终端再打开,重新运行同一条命令,应显示版本号: uv --version

    安装一次,所有需要 uv 的工具都能用

  2. 打开电脑版 Claude 应用的设置文件

    SettingsDeveloperEdit Config

  3. 粘贴这些设置并保存文件

    正在检查命令 · 通过后才会显示复制按钮

  4. 退出 Claude 再重新打开

  5. 试一试

    用 InferMap 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude 说正在使用 InferMap,或回答中出现 InferMap 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

ChatGPT 暂时无法连接 InferMap

InferMap 需要安装在你的电脑上,而 ChatGPT 只能连接在网上运行的服务器

你可以改用这些方式

A · 使用能连接 InferMap 的应用

  • 需要先在电脑上安装 Python (uv)(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用
  • 需要先在电脑上安装 Python (uv)(只需一次)
  • 需要先在电脑上安装 Python (uv)(只需一次)
  • 需要先在电脑上安装 Python (uv)(只需一次)

B · 旅行、地图与天气 类中能连接 ChatGPT 的其他服务器

从同类中使用较多的里挑选,仅限用地址即可连接、无需密钥的

可连接 Claude Code,但需要先准备

需要先在电脑上安装 Python (uv)(只需一次)

  1. 安装 uv(如果还没有)

    已经装好了吗?先检查 · 打开终端,输入这条命令后按 Enter

    uv --version
    • 显示版本号(例如 uv …)= 已安装,可跳过这一步
    • 显示 "command not found"(Windows 显示 "is not recognized")= 还没安装,或刚装好但需要关掉终端再重新打开
    怎么打开终端

    Mac:按 ⌘ + Space,输入 Terminal 后按 Enter

    Windows:打开“开始”菜单,输入 Windows PowerShell,然后选“打开”

    还没安装: uv 没有点选式安装程序。从 uv 官方页面复制适合你系统(macOS 或 Windows)的一行命令,粘贴到终端 · 不需要单独安装 Python,uv 会在需要时自动下载

    打开 uv 下载页 ↗

    装好后关掉终端再打开,重新运行同一条命令,应显示版本号: uv --version

    安装一次,所有需要 uv 的工具都能用

  2. 打开终端

    Mac:按 Command+空格,输入 Terminal · Windows:打开 PowerShell

  3. 粘贴这条命令并按 Enter

    正在检查命令 · 通过后才会显示复制按钮

  4. 在 Claude Code 中输入 /mcp

    应能看到 InferMap 在列表中并显示已连接

  5. 试一试

    用 InferMap 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude Code 说正在使用 InferMap,或回答中出现 InferMap 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

可连接 Cursor,但需要先准备

需要先在电脑上安装 Python (uv)(只需一次)

  1. 安装 uv(如果还没有)

    已经装好了吗?先检查 · 打开终端,输入这条命令后按 Enter

    uv --version
    • 显示版本号(例如 uv …)= 已安装,可跳过这一步
    • 显示 "command not found"(Windows 显示 "is not recognized")= 还没安装,或刚装好但需要关掉终端再重新打开
    怎么打开终端

    Mac:按 ⌘ + Space,输入 Terminal 后按 Enter

    Windows:打开“开始”菜单,输入 Windows PowerShell,然后选“打开”

    还没安装: uv 没有点选式安装程序。从 uv 官方页面复制适合你系统(macOS 或 Windows)的一行命令,粘贴到终端 · 不需要单独安装 Python,uv 会在需要时自动下载

    打开 uv 下载页 ↗

    装好后关掉终端再打开,重新运行同一条命令,应显示版本号: uv --version

    安装一次,所有需要 uv 的工具都能用

  2. 点击这个按钮打开 Cursor

    正在检查命令 · 通过后才会显示复制按钮

  3. 在 Cursor 中以 Agent 模式打开 AI 聊天

  4. 试一试

    用 InferMap 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Cursor 说正在使用 InferMap,或回答中出现 InferMap 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Cursor 帮助页面核实 · 你的界面可能因版本略有不同

可连接 VS Code,但需要先准备

需要先在电脑上安装 Python (uv)(只需一次)

  1. 安装 uv(如果还没有)

    已经装好了吗?先检查 · 打开终端,输入这条命令后按 Enter

    uv --version
    • 显示版本号(例如 uv …)= 已安装,可跳过这一步
    • 显示 "command not found"(Windows 显示 "is not recognized")= 还没安装,或刚装好但需要关掉终端再重新打开
    怎么打开终端

    Mac:按 ⌘ + Space,输入 Terminal 后按 Enter

    Windows:打开“开始”菜单,输入 Windows PowerShell,然后选“打开”

    还没安装: uv 没有点选式安装程序。从 uv 官方页面复制适合你系统(macOS 或 Windows)的一行命令,粘贴到终端 · 不需要单独安装 Python,uv 会在需要时自动下载

    打开 uv 下载页 ↗

    装好后关掉终端再打开,重新运行同一条命令,应显示版本号: uv --version

    安装一次,所有需要 uv 的工具都能用

  2. 点击这个按钮打开 VS Code

    正在检查命令 · 通过后才会显示复制按钮

  3. 在 VS Code 中以 Agent 模式打开 AI 聊天

  4. 试一试

    用 InferMap 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 VS Code 说正在使用 InferMap,或回答中出现 InferMap 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 VS Code 帮助页面核实 · 你的界面可能因版本略有不同

其他支持 MCP 的应用(如 Windsurf、Zed、Gemini CLI)添加方式各不相同,请在应用列表中查看

查看所有支持 MCP 的应用 →

JSON 设置在下方“开发者专用”中

卡住了?问问正在用 InferMap 的人💬 讨论 →
开发者专用:终端命令和 JSON 设置

安装在电脑上

Claude Code

正在检查命令 · 通过后才会显示复制按钮

Claude Desktop (claude_desktop_config.json)

正在检查命令 · 通过后才会显示复制按钮

Cursor (~/.cursor/mcp.json)

正在检查命令 · 通过后才会显示复制按钮

VS Code (mcp.json)

正在检查命令 · 通过后才会显示复制按钮

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

一览

每周下载量i
45/周
连接方式
电脑或云端
传输方式
stdio, streamable-http
最新版本i
0.7.0
发布到注册中心i
2026年8月16日
代码最后更新i
2026年5月1日
作者
benseverndev-oss
软件包
pypi: infermap
注册状态
活跃

哪些应用可以使用它

依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。

通过互联网连接,适用于

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

在你的电脑上运行,适用于

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

全部应用及其优缺点 →

它能做什么

我们上次检查时服务器没有响应,所以无法读取它的工具。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月15日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 benseverndev-oss 验证,该账户拥有此仓库

  • ✕ 未通过

    仍在维护

    超过一年没有代码更新,或仓库已归档

  • ✓ 通过

    有许可证

    使用 MIT

  • ✕ 未通过

    端点有响应

    我们检查时,6 秒内没有响应

  • – 不适用

    使用 OAuth 登录

    我们检查时,6 秒内没有响应

  • … 尚未检查

    工具描述中没有隐藏指令

    尚未检查;我们会在检查端点时读取工具列表

已公开的漏洞(OSV.dev)

尚未检查

我们检查什么 → · JSON

作者:申请重新检查或报告信息错误

讨论

提问、分享技巧或报告无法使用。按“有帮助”数量排序。

还没有帖子,欢迎第一个提问或分享。

此处内容由用户撰写,不代表 PopNx 团队。

登录后发帖

用户评价

还没有评价

登录后写评价

与“旅行、地图与天气”中的其他服务器比较i

  • 星标数多于此分类中其他 1901 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 1901 个服务器的 22% 更新
  • 基础检查结果等于或优于此分类中其他 1901 个服务器的 9%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

InferMap 安全吗?

它在 4 项适用的基础检查中通过了 2 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

两种方式都可以:安装在你的电脑上,或者连接云端版本。

它还在维护吗?

GitHub 仓库最后更新于7个月前,最新版本(0.7.0)于3个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,因此也能用于接受远程 MCP 的应用,例如网页版 ChatGPT(Business 及以上为完整 MCP;Pro 为只读)。

有什么可以替代它?

同一分类中有:Mu, Award Travel Finder, Killbottleneck, Whimsical, HasData Google Maps

功能相近的其他选择

同一分类、其他作者、命令已通过检查。官方的排在前面,再按星标排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Mu

News, web search, mail, markets, weather, places, files, calendar, contacts. 67 tools, one endpoint.

作者:micro正在增长★ 4393个月前更新

在云端运行✓ micro.mu

Award Travel Finder

Search award flight availability and points pricing across 27 airlines and 23 loyalty programs.

作者:AwardTravelFinder起步阶段★ 153个月前更新

在云端运行✓ 服务方 · awardtravelfinder.com

Killbottleneck

Free-to-self-host goal and process maps for humans and AI agents, with REST API and MCP.

作者:tengolabs起步阶段↓ 328/周★ 148天前更新

在你的电脑上运行✓ 服务方 · killbottleneck.com

Whimsical

Create and edit flowcharts, mind maps, wireframes, and docs in Whimsical, or search your workspace.

作者:WhimsicalCode起步阶段★ 112个月前更新

在云端运行✓ 服务方 · whimsical.com

HasData Google Maps

Google Maps places, reviews, contributor history, photos and posts as JSON. No Google Cloud.

作者:HasData起步阶段↓ 93/周★ 102个月前更新

电脑或云端✓ 服务方 · hasdata.com
  • Mu — 在云端运行,无需安装 · 不需要密钥
  • Award Travel Finder — 在云端运行,无需安装 · 不需要密钥
  • Killbottleneck — 需要安装在电脑上 · 需要密钥
  • Whimsical — 在云端运行,无需安装 · 不需要密钥
  • HasData Google Maps — 云端或安装在电脑上都可以 · 需要密钥

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

Moved. This repo has moved into the benzsevern/goldenmatch monorepo at packages/python/infermap (and packages/typescript/infermap)/. This repo is archived; new development happens in the monorepo.

infermap

Inference-driven schema mapping engine.

Map messy source columns to a known target schema — accurately, explainably, with zero config.

Built by Ben Severn .

📖 Wiki · 🌐 Docs · 🧪 Examples · 💬 Discussions · 🐛 Issues


infermap is a schema-mapping engine. Give it any two field collections (CSVs, DataFrames, database tables, in-memory records) and it figures out which source field corresponds to which target field, with confidence scores and human-readable reasoning. Available as a Python package on PyPI and a TypeScript package on npm, with mapping decisions verified bit-for-bit by a shared golden-test parity suite.

Table of contents

  • Install
  • Quick start
  • How it works
  • Features
  • Which package should I use?
  • Custom scorers
  • CLI examples
  • Config reference
  • Documentation
  • License

Install

Python
pip install infermap

Optional database extras:

pip install infermap[postgres]   # psycopg2-binary

pip install infermap[mysql] # mysql-connector-python pip install infermap[duckdb] # duckdb pip install infermap[all] # all extras

TypeScript / Next.js
npm install infermap

Zero runtime dependencies in the core entrypoint. Compatible with Next.js Server Components, Route Handlers, Server Actions, and the Edge Runtime out of the box. See the package README for the full reference.

Quick start

Python
import infermap

Map a CRM export CSV to a canonical customer schema

result = infermap.map("crm_export.csv", "canonical_customers.csv")

for m in result.mappings: print(f"{m.source} -> {m.target} ({m.confidence:.0%})")

fname -> first_name (97%)

lname -> last_name (95%)

email_addr -> email (91%)

Apply mappings to rename DataFrame columns

import polars as pl df = pl.read_csv("crm_export.csv") renamed = result.apply(df)

Save mappings to a reusable config file

result.to_config("my_mapping.yaml")

Reload later — no re-inference needed

saved = infermap.from_config("my_mapping.yaml")

TypeScript
import { map } from "infermap";

const crm = [ { fname: "John", lname: "Doe", email_addr: "j@d.co" }, { fname: "Jane", lname: "Smith", email_addr: "j@s.co" }, ];

const canonical = [ { first_name: "", last_name: "", email: "" }, ];

const result = map({ records: crm }, { records: canonical });

for (const m of result.mappings) { console.log(${m.source} → ${m.target} (${m.confidence.toFixed(2)})); } // fname → first_name (0.44) // lname → last_name (0.48) // email_addr → email (0.69)

For Next.js, drop it directly into a Route Handler — works on Edge Runtime with zero config:

// app/api/infer/route.ts

import { map } from "infermap"; export const runtime = "edge";

export async function POST(req: Request) { const { sourceCsv, targetCsv } = await req.json(); const result = map({ csvText: sourceCsv }, { csvText: targetCsv }); return Response.json(result); }

How it works

Each field pair runs through a pipeline of 7 scorers. Each scorer returns a score in [0.0, 1.0] or abstains (None/null). The engine combines scores via weighted average (requiring at least 2 contributors), then uses the Hungarian algorithm for optimal one-to-one assignment.

ScorerWeightWhat it detects
ExactScorer1.0Case-insensitive exact name match
AliasScorer0.95Known field aliases (fname ↔ first_name, tel ↔ phone) + domain dictionaries
InitialismScorer0.75Abbreviation-style names (assay_id ↔ ASSI, confidence_score ↔ CONSC)
PatternTypeScorer0.7Semantic type from sample values — email, date_iso, phone, uuid, url, zip, currency
ProfileScorer0.5Statistical profile similarity — dtype, null rate, unique rate, length, cardinality
FuzzyNameScorer0.4Jaro-Winkler similarity on normalized field names (with common-prefix canonicalization)
LLMScorer0.8Pluggable LLM-backed scorer (stubbed by default)

The engine also applies common-prefix canonicalization — automatically stripping schema-wide prefixes like prospect_ so that City vs prospect_City is compared as City vs City. And optional confidence calibration transforms raw scores into calibrated probabilities post-assignment (ECE from 0.46 to 0.005 on real-world data).

Read the full architecture →

Features

PythonTypeScript
7 built-in scorers✅✅
Hungarian assignment✅ (scipy)✅ (vendored)
Custom scorers@infermap.scorerdefineScorer()
Domain dictionaries✅ (YAML)✅ (inlined)
Confidence calibration✅ (Identity/Isotonic/Platt)✅
Score matrix inspection✅✅
In-memory dataPolars, Pandas, list[dict]Array
File providersCSV, Parquet, XLSXCSV, JSON
Schema definition filesYAML + JSONJSON
Database providersSQLite, Postgres, DuckDBSQLite, Postgres, DuckDB
Engine configYAMLJSON
Saved mapping formatYAMLJSON
CLI✅ (Typer)✅ (node:util)
Apply to DataFrame✅❌ (CSV rewrite via CLI)
Edge-runtime compatible❌✅
Zero runtime depsn/a✅
Accuracy benchmark✅ (162 cases, F1 0.84)✅ (parity within 0.0005)

Full feature parity matrix →

Which package should I use?

If you are…Use
Building a Python data pipeline or notebookPython
Building a Next.js app, Node service, or browser toolTypeScript
Running mapping in a serverless edge functionTypeScript (zero Node built-ins)
Doing ad-hoc CSV exploration on the command linePython CLI has more features; TS CLI is leaner
Both — Python backend + Next.js admin UIBoth — outputs are interoperable via the JSON config format

What's new in v0.3

+18.3pp F1 on real-world data from four compounding improvements:

v0.2 baseline    F1 0.657
  • min_conf 0.2 F1 0.765 (+10.8pp — empirically tuned threshold)
  • prefix-strip F1 0.821 (+5.6pp — City vs prospect_City now works)
  • InitialismScorer F1 0.840 (+1.9pp — ASSI, CONSC, RELATIT now work)

New features:

  • Domain dictionaries — MapEngine(domains=["healthcare"]) loads curated aliases for your domain. Ships: generic (default), healthcare, finance, ecommerce. See examples/09_domain_dictionaries.py.
  • Confidence calibration — MapEngine(calibrator=cal) transforms raw scores into calibrated probabilities. Ships: IsotonicCalibrator, PlattCalibrator. Valentine ECE: 0.46 → 0.005. See examples/10_calibration.py.
  • InitialismScorer — matches abbreviation-style column names (assay_id ↔ ASSI). ChEMBL F1: 0.524 → 0.819.
  • Common-prefix canonicalization — automatically strips prospect_, assays_, etc. before fuzzy matching.
  • Valentine corpus — 82 real-world schema-matching cases from the Valentine benchmark for accuracy testing.
  • Full TypeScript parity — all new features ported. 186 TS tests. Benchmark F1 within 0.0005 of Python.

Custom scorers

Python
import infermap

from infermap.types import FieldInfo, ScorerResult

@infermap.scorer("prefix_scorer", weight=0.8) def prefix_scorer(source: FieldInfo, target: FieldInfo) -> ScorerResult | None: if source.name[:3].lower() != target.name[:3].lower(): return None return ScorerResult(score=0.85, reasoning=f"Shared prefix '{source.name[:3]}'")

from infermap.engine import MapEngine from infermap.scorers import default_scorers

engine = MapEngine(scorers=[*default_scorers(), prefix_scorer])

TypeScript
import { MapEngine, defaultScorers, defineScorer, makeScorerResult } from "infermap";

const prefixScorer = defineScorer( "prefix_scorer", (source, target) => { if (source.name.slice(0, 3).toLowerCase() !== target.name.slice(0, 3).toLowerCase()) { return null; } return makeScorerResult(0.85, Shared prefix '${source.name.slice(0, 3)}'); }, 0.8 // weight );

const engine = new MapEngine({ scorers: [...defaultScorers(), prefixScorer], });

CLI examples

The CLI works the same way in both packages:

# Map two files and print a report

infermap map crm_export.csv canonical_customers.csv

Map and save the config (Python: --save, TS: -o)

infermap map crm_export.csv canonical_customers.csv -o mapping.json

Apply a saved mapping to rename columns

infermap apply crm_export.csv --config mapping.json --output renamed.csv

Inspect the schema of a file or DB table

infermap inspect crm_export.csv infermap inspect "sqlite:///mydb.db" --table customers

Validate a saved config against a source

infermap validate crm_export.csv --config mapping.json --required email,id --strict

Config reference

Both packages accept an engine config (scorer weight overrides + alias extensions). Python uses YAML, TypeScript uses JSON; the shape is identical.

# Python: infermap.yaml

domains:

  • healthcare
  • finance

scorers: LLMScorer: enabled: false FuzzyNameScorer:

只显示了开头部分;其余内容请在仓库中阅读