关于 GOV Historical Gazetteer
面向德国及历史上德意志地区家谱研究的 GOV 历史地名录 MCP 服务,按年份查询地点名称、行政隶属、教区和民事登记处。结果附 GOV 条目引用信息,帮助研究者定位档案登记簿。
主要功能
- 01按名称搜索历史地点
- 02查询指定年份的行政区划
- 03查找教区与民事登记处
- 04获取带日期的地点隶属关系
- 05查看 GOV 条目引用信息
适用场景
- 01确认历史事件发生时所属的行政区
- 02查找某地点对应的教区登记簿
- 03构建按年代变化的家谱地点树
MCP 相关
通过 MCP over stdio 向客户端提供 GOV 地点查询工具。所有工具均为只读,并读取 GOV 的公开服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx gov-gazetteer-mcpGOV_GAZETTEER_CACHE_DIRDirectory for the on-disk response cache.GOV_GAZETTEER_TIMEOUTHTTP timeout in seconds for one request.GOV_GAZETTEER_MIN_INTERVALLeast seconds between two requests to GOV. Never below 1.GOV_GAZETTEER_CONTACTAn email address or URL appended to the User-Agent, so CompGen can reach whoever runs the server.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 地点名称,例如 'Quedlinburg'。每次调用使用一种拼写。 |
| limit | integer | 否 | 最多返回的候选项数(1-100)。 |
| within | string | 否 | 仅限 GOV 记录为在任意日期位于此对象内的地点:Kreis、省或州的 GOV ID,例如 'adm_133152'。 |
| refresh | boolean | 否 | 要求 GOV 重新查询,而不是使用 7 天缓存。 |
| place_type | string | 否 | 保留这些类型:ID、GOV 的德语名称('Dorf'、'Kirchspiel'、'Standesamt'),或 settlement、civil、parish、standesamt、court;以逗号分隔。 |
详细介绍
gov-gazetteer-mcp
一个面向 GOV(Geschichtliches Orts-Verzeichnis) 的 MCP 服务:GOV 是 Verein für Computergenealogie(CompGen)的历史地名录,收录约 120 万个地点,主要分布在德国以及曾属于德国或普鲁士的地区。GOV 会记录地点相关信息的历史变化:名称、地点类型,以及曾管辖该地点的所有民政和教会机构。
因此,它能回答德国系谱研究者关于每个德国村庄都会提出的问题:在事件发生的那一年,该村属于哪个 Kreis、哪个省和哪个州?哪些教区和 Standesamt 保存着相关登记簿? 波森的一个村庄在 1919 年以前属于普鲁士,1920 年以后属于波兰;波美拉尼亚的一个村庄则在 1945 年以前属于德国。Kreis 曾更名,Amt 曾解散,教区曾合并。该服务读取 GOV 的公共网络服务,按年份逐年查询,并提供有日期的管辖关系,帮助系谱软件构建在每个日期都准确的地点树。
它的工作方式和严谨的系谱研究者一样。地名录条目是检索线索,不是证据。 GOV 由志愿者编辑:教区或 Standesamt 的关联信息会指出应查阅哪个登记簿,而登记簿本身的标题才是确认依据。每条结果都会注明 GOV 和 CompGen,并附上 GOV 中每个对象页面的地址,因为引用时应引用该页面。
此处不会写入任何内容,也不会保存家谱。它可以与 familysearch-mcp 配合使用;后者的地点工具可以按日期解析地点,但不包含教区或 Standesamt 信息。也可以与 us-places-mcp 配合使用,后者是面向美国县的对应工具。
这是一个独立项目,与 Verein für Computergenealogie 无关,也未获其认可或支持。
工具
该服务提供六种工具,全部为只读工具。
| 工具 | 用途 |
|---|---|
gov_search | 按名称查找地点:GOV ID、名称、类型、坐标和当前上级地点。within 可将搜索范围限制在任意日期的某个 Kreis、省或州内;place_type 可筛选村庄、教区、Standesamt 等类型。 |
gov_object | 查看单个对象的完整信息:所有名称及其语言和日期、所有类型及其日期、坐标、外部 ID,以及每条 part-of、located-in 和 represents 关系及其日期和 GOV 的来源 ID。children 会列出该对象所包含的地点,例如教区内的村庄。可使用 GOV ID、GOV 页面地址或外部 ID(例如 geonames:2851465)查询。 |
gov_place_at_date | 查询某地点在某一年的情况:当时的名称,以及一直向上到州的民政管辖链;每一级都包含类型和关系日期。对于 GOV 未标注日期,或只在其他年份有佐证的关系,会特别标明。 |
gov_registers | 查询某地点在某一年所属的教区(如果 GOV 有记录,则按教派区分)和 Standesamt、可能保存各教区登记簿的上级机构,以及当地法院。若 GOV 未记录教区或 Standesamt,会明确说明。 |
gov_enclosures | 查询某地点及其每个上级民政地点的所有有日期的管辖关系,为按日期构建地点树提供数据:每个上级地点对应一条记录,并附有其时间范围,当前的记录排在最前;每条记录还包含类似 from 1871-01-01 to 1937-03-31 的 gramps_date,以及建议的 Gramps 地点类型。 |
cache_status | 按操作列出此会话对 GOV 的请求和缓存使用情况。不会发出请求。 |
设置
你需要 Python 3.11 或更高版本,以及 uv。无需申请密钥。
无需克隆。 uvx 会从 PyPI 获取并一步运行:
uvx gov-gazetteer-mcp
从克隆的仓库运行,如果你要修改它,就应该这样做:
git clone https://github.com/ianderso/gov-gazetteer-mcp
cd gov-gazetteer-mcp
uv sync
uv run gov-gazetteer-mcp # stdio server, usually launched by the client
无论采用哪种方式,服务都会通过 stdio 使用 MCP 通信,因此通常应让 MCP 客户端启动它,而不是手动运行。
Claude Desktop
{
"mcpServers": {
"gov": {
"command": "uvx",
"args": ["gov-gazetteer-mcp"]
}
}
}
桌面应用不一定会继承 shell 的 PATH。如果服务因找不到 uvx 而无法启动,请将 which uvx 输出的完整路径填入 command。
Claude Code
claude mcp add gov -- uvx gov-gazetteer-mcp
配置
无需进行任何配置。服务启动所在目录中的 .env 文件可以提供环境中未设置的值;服务只会读取该目录中的文件。
| 变量 | 含义 |
|---|---|
GOV_GAZETTEER_CACHE_DIR | 响应缓存目录。默认值为 ~/.cache/gov-gazetteer-mcp。 |
GOV_GAZETTEER_TIMEOUT | 单次请求的 HTTP 超时时间,单位为秒。默认值为 30。 |
GOV_GAZETTEER_MIN_INTERVAL | 向 GOV 发出的两次请求之间的最短间隔秒数。默认值为 1,且不会低于 1。 |
GOV_GAZETTEER_CONTACT | 添加到 User-Agent 中的电子邮件地址或 URL,以便在你的使用造成问题时,CompGen 能联系到你。可选,建议填写。 |
若某个值不可用,首次调用工具时会返回 not_configured 结果,并指出相应变量。服务不会写入任何文件,缓存除外。
做一位友好的访客
GOV 由志愿者在 CompGen 自有的服务器上运行。客户端一次只发送一个请求,两次请求间隔至少一秒;并发中的两个相同调用会共用一个请求。对象会缓存 30 天,搜索结果会缓存 7 天;每个答案包含的对象(搜索会返回完整对象,而非 ID)都会在本次会话中保留,因此已经查看过的地点不会再次请求。查询某一年的信息时,每个上级对象只会读取一次;之后查询另一年的同一地点无需再请求。每次遍历最多读取 40 个对象,若因此停止,会明确说明。遇到 429、5xx 或连接中断时会重试一次,并遵守 Retry-After;SOAP 故障就是 GOV 的答复,不会重试。User-Agent 会标明软件包名称、版本和此仓库。
使用条款
GOV 网站没有使用条款页面;页脚链接到 CompGen 的 Impressum 和 隐私声明。主页称该项目的启动初衷是“qualitativ hochwertige Daten für jedermann bereitzustellen”(为所有人提供高质量数据, gov.genealogy.net),并在 gov.genealogy.net/services 上公开其 SOAP 服务,无需密钥。CompGen 将 GOV 的数据描述为可自由获取的 Linked Open Data;GOV 在 GenWiki 上的文档设有机器人检查,因此本项目未查阅该文档。每条结果都会注明“GOV — Geschichtliches Orts-Verzeichnis, Verein für Computergenealogie (CompGen)”,并链接到相应对象的页面。
客观而言:GOV 的 robots.txt 禁止访问少数网站路径(编辑和历史记录页面、KML 和 GeoJSON 导出、距离搜索),并列出多个被完全屏蔽的爬虫;但其中没有提及 /services/,而本服务正是通过该 Web 服务运行。
如何解读返回结果
- 查询时使用事件发生年份。
gov_place_at_date和gov_registers会针对某一年作答。如果一个地方在该年内更换了县或所属州,结果会显示这两个行政单位及其对应日期;请根据事件的具体日期选择。 - 教区或民事登记处的链接只是线索。 GOV 由志愿者编辑。请在登记册本身中确认教区或登记处;登记册的标题或扉页会列出其名称及所服务的地方,并请引用该登记册。
- 结果会标明确定性。 链接标为
dated,表示其日期范围涵盖该年份;标为undated,表示 GOV 未提供日期,系统假定其在该年有效;标为attested in another year only,表示 GOV 仅在另一年份的名录中记录了该链接。优先采用第一种。 - 如果 GOV 未将教区链接到某个地方,
gov_registers会列出教堂位于该地方的教区,并说明这一点;这些通常是、但不总是该地方所属的教区。**如果 GOV 未将民事登记处链接到某个地方,**它会列出同一县内同名的民事登记处作为候选,并说明 GOV 并未将两者链接起来。在建模完善的地区(例如波美拉尼亚),GOV 会直接链接两者。 - 名称搜索按字面匹配。 搜索会匹配完整单词和单词开头,不区分大小写和重音符号(
Lubeck可以找到 Lübeck),但不会匹配拼写变体:德语、波兰语和旧拼法(Cöslin、Köslin、Koszalin)都需要分别查询。零结果仅适用于所搜索的拼写和区域。GOV 每次搜索最多返回 500 个对象。 - 名称随年份变化。 GOV 标注为 1945 年起使用的波兰语名称,不会用于 1900 年。对于当时有效的名称,
language(默认值为deu;波兰统治下的地方使用pol)会选择显示的名称;names_at_date会列出所有名称。 - 1874 年之前,普鲁士没有民事登记处(帝国其他地区为 1876 年;莱茵河左岸更早)。对于这些年份,
gov_registers会说明这一点。 - 不包含邦联组织。 GOV 将德意志邦联、莱茵邦联、国际联盟、欧盟和联合国的成员关系记录为包容关系;它们不是政府层级,因此层级链会在其下方终止,并附有说明。
- 引用对象页面。 请使用每条结果附带的
citation:其中包含来源署名、条目标题、GOV id 和地址、GOV 最近修改日期以及读取日期。
刻意不包含的内容
- 编辑 GOV。 GOV 的 ChangeService 需要账号;此服务不会为其构建信封。
- GenWiki 文档。 这些文档位于机器人验证(Anubis)之后,本项目不会绕过验证。本项目的所有内容均基于 WSDL 和 GOV 的实时响应构建;请参阅 docs/API-NOTES.md。
- 批量导出。 此服务一次读取一个地方,用于研究,而非读取整个区域。
安全
工具参数由模型编写,而模型会读取此服务无法控制的文本,包括 GOV 自身的名称和注释。服务假定这些文本可能会引导模型,并限制被引导的模型能够执行的操作。
- 单一地址。 每个请求都是对
gov.genealogy.net/services/ComplexService的 https POST 请求;请求钩子会拒绝 其他任何请求,参数只能选择要查询的内容,不能选择目标地址。 不跟随重定向。 - 仅限读取操作。 客户端仅为七种读取操作构建信封,不支持其他操作。
- 仅限公共地址。 连接只会指向经过检查的公共地址,因此如果 DNS 解析结果指向 私有网络,就会被拒绝。不会使用环境中的代理设置。
- 答案有界且为纯文本。 答案超过 10 MB 时,会在流式接收过程中被拒绝;包含文档类型声明的答案则会在解析前被拒绝。
- 参数经过验证(GOV ID、外部 ID、年份、类型名称) 后才会用于请求。
- GOV 的文本不可信。 名称和注释会原样传递给模型。服务的指令会告诉模型,将这些 文本视为需要权衡的材料,而非指令;但最终仍由模型决定,因此请审查它提出的操作。
如需报告漏洞,请参阅 SECURITY.md。
开发
uv sync --extra dev
uv run pytest # mocked with respx; never touches GOV
uv run ruff check .
uv run ruff format --check .
uv run python -m tests.live_check # paced calls to GOV itself
实时检查会向 GOV 发起查询,验证已记录的测试数据无法验证的内容:其答案是否仍符合服务读取的格式。有关测试套件的组织方式,请参阅 CONTRIBUTING.md;有关服务的观测结果及观测时间,请参阅 docs/API-NOTES.md;有关服务采用这种设计的原因,请参阅 docs/DESIGN.md。
致谢
数据属于 GOV——Geschichtliches Orts-Verzeichnis,这是 Verein für Computergenealogie e.V.(CompGen) 的一个项目,由其志愿者构建。GOV 的软件由 Jesper Zedlitz 编写。
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。