gramps-ez-mcp
一个易于使用的MCP(模型上下文协议)服务器,用于与Gramps家谱树进行交互。该软件包在人工智能助手和Gramps数据库之间架起了一座桥梁,支持对家谱进行自然语言查询。
安装
使用pip安装软件包:
pip install gramps-ez-mcp概述
gramps-ez-mcp 是一个MCP服务器,通过标准化协议公开您的Gramps家谱数据库。它允许人工智能助手和聊天机器人使用自然语言查询和探索您的家谱数据。
服务器提供以下工具:
- 按姓名搜索人员
- 检索人员详细信息(出生、死亡、事件等)
- 引导家庭关系(父母、子女、配偶)
- 访问家庭和活动信息
- 查询家庭成员
配置
设置
您将需要以下内容:
- 来自模型提供者的API密钥(如OpenAI、Anthropic等)
- 安装Gramps并使用家谱(可能还需要
pip install gramps)
例如,您的环境中可能存在:
export OPENAI_API_KEY="sk-..."基本配置
MCP服务器可以使用命令行参数或通过MCP客户端配置文件进行配置。
命令行用法
gramps-ez-mcp DBNAME [OPTIONS]论据:
DBNAME:要打开的Gramps数据库树的名称(必需)
选项:
--transport {stdio,sse}:要使用的传输方法(默认值:stdio)--host HOST:SSE传输主机(默认值:localhost)--port PORT:SSE传输端口(默认值:8000)
示例:
# Use stdio transport with a database
gramps-ez-mcp "Gramps Example"
# Specify a custom database name
gramps-ez-mcp "My Family Tree"
# Use SSE transport on a custom port
gramps-ez-mcp "Gramps Example" --transport sse --port 9000MCP客户端配置
用于MCP兼容客户端(如 ez-mcp-chatbot、游标等),您将需要一个配置文件。
例如,对于 ez-mcp-chatbot:
例子: ez-config.json
{
"model": "openai/gpt-4o-mini",
"model_parameters": {
"temperature": 0.0
},
"mcp_servers": [
{
"name": "gramps-ez-mcp",
"description": "Gramps EZ MCP server for genealogy chats",
"command": "gramps-ez-mcp",
"args": ["Gramps Example"]
}
]
}替换 "Gramps Example" 使用您的实际Gramps数据库名称。
使用示例
与ez-mcp聊天机器人一起使用
这 ez-mcp-chatbot 是一个可以与MCP服务器交互的命令行聊天机器人。以下是如何使用它 gramps-ez-mcp:
- 安装ez-mcp聊天机器人 (如果尚未安装):
pip install ez-mcp-toolbox- 创建配置文件 (例如。,
examples/ez-config.json):
{
"model": "openai/gpt-4o-mini",
"model_parameters": {
"temperature": 0.0
},
"mcp_servers": [
{
"name": "gramps-ez-mcp",
"description": "Gramps EZ MCP server for genealogy chats",
"command": "gramps-ez-mcp",
"args": ["Gramps Example"]
}
]
}- 运行聊天机器人:
ez-mcp-chatbot --config examples/ez-config.json- 您可以问的示例查询:
- “谁是我家谱中的家庭成员?” - “搜索名为约翰·史密斯的人” - “他的出生日期是什么时候?” - “约翰的孩子是谁?” - “找到莎拉·安德森的母亲”
LLM日志记录、调试和可观察性
如果你愿意 ez-mcp-chatbot 要创建MCP服务器正在做什么的日志,可以记录交互 通过以下方式获得法学硕士学位:
pip install opik然后,您可以从https://www.comet.com/docs/opik/quickstart 并设置它:
export OPIK_API_KEY="..."对话示例
You: Who is the home person in my family tree?
Assistant: I'll look up the home person for you.
[Uses get_home_person tool]
The home person is John Doe (born 1950-01-15).
You: Who are their children?
Assistant: Let me find the children of John Doe.
[Uses get_children_of_person tool]
John Doe has 2 children:
- Jane Doe (handle: abc123)
- Bob Doe (handle: def456)可用工具
MCP服务器提供以下工具:
个人工具
get_person(person_handle: str)
- 按句柄获取一个人的完整数据字典 - 返回:包含所有人员数据的字典
search_people_by_name(name: str, page: int = 1, page_size: int = 10)
- 按姓名搜索人员(部分匹配,不区分大小写) - 支持分页 - 返回:匹配人员词典列表
get_home_person()
- 从数据库中获取家庭成员数据 - 返回:包含家庭成员数据的词典
关系工具
get_father_of_person(person_handle: str)
- 获取某人父亲的数据 - 返回:包含父亲数据的词典
get_mother_of_person(person_handle: str)
- 获取某人的母亲数据 - 返回:包含母亲数据的字典
get_children_of_person(person_handle: str)
- 获取一个人主要家庭的儿童句柄列表 - 返回:子句柄列表(字符串)
日期和地点工具
get_person_birth_date(person_handle: str)
- 以字符串形式获取出生日期 - 返回:出生日期字符串
get_person_death_date(person_handle: str)
- 以字符串形式获取死亡日期 - 返回:死亡日期字符串
get_person_birth_place(person_handle: str)
- 以字符串形式获取出生地 - 返回:出生地字符串
get_person_death_place(person_handle: str)
- 以字符串形式获取死亡地点 - 返回:死亡地点字符串
家庭和活动工具
get_family(family_handle: str)
- 按家庭句柄获取家庭数据 - 注意:家庭手柄与个人手柄不同 - 返回:包含族数据的字典
get_person_event_list(person_handle: str)
- 获取与某人关联的事件句柄列表 - 返回:事件句柄列表(字符串)
get_event(event_handle: str)
- 按事件句柄获取事件数据 - 返回:包含事件数据的字典
get_event_place(event_handle: str)
- 获取与活动相关的地点 - 返回:放置字符串
需求
- Python 3.8或更高版本
- Gramps(家谱软件)
- MCP兼容客户端(用于使用服务器)
故障排除
未找到数据库
如果出现找不到数据库的错误:
- 验证数据库名称是否完全匹配(区分大小写)
- 检查数据库是否存在于Gramps数据目录中
- 使用Gramps中显示的确切名称
许可证
本项目根据GNU通用公共许可证版本2(GPL-2.0)获得许可。有关详细信息,请参阅LICENSE文件。
贡献
欢迎投稿!请随时提交问题或拉取请求。
链接
- 首页: https://github.com/dsblank/gramps-ez-mcp
- 仓库: https://github.com/dsblank/gramps-ez-mcp
- 缺陷跟踪系统: https://github.com/dsblank/gramps-ez-mcp/issues
