MCP Liam(中文可译为):MCP(可能指某种角色或职位,如“主要角色”、“管理控制程序”等,具体需根据上下文确定)利亚姆
这是一台MCP服务器,用于分析由(某系统/工具)生成的数据库架构 Liam ERD(注:ERD通常代表“实体关系图”(Entity-Relationship Diagram),但在此上下文中,如果“ERD”是专有名词或特定项目/系统的缩写,则应根据具体语境翻译。若仅作为普通缩写,则可译为“Liam 实体关系图”或根据具体情境调整)。
概述
这个MCP服务器读取 schema.json 由Liam ERD生成的文件,提供以下功能:
- 检索表列表
- 获取详细的表结构
- 按名称搜索表和列
- 分析表之间的关系
- 分析模型依赖关系
设置
1. 安装依赖项
由于这个脚本使用了 bundler/inline所需的宝石将自动安装。
2. 设置执行权限
chmod +x mcp_liam/mcp_liam.rb3. MCP配置
在您的Claude代码配置文件中添加以下配置:~/.config/claude/mcp.json 或者 .claude/mcp.json):
{
"mcpServers": {
"liam": {
"command": "ruby",
"args": ["/absolute/path/to/mcp_liam.rb"],
"env": {
"SCHEMA_PATH": "/absolute/path/to/schema.json"
}
}
}
}注:
- 路径必须指定为绝对路径。
- (该)的价值为
SCHEMA_PATH应该指向(或指向到)路径的schema.json由Liam ERD生成的文件。
请同时参考示例配置文件 .mcp.json.example。
提供的工具
1. 列出表(或:查看表列表)
检索所有表的列表。
参数:
pattern(可选):用于过滤表名的模式(不区分大小写)。
示例:
// Get all tables
list_tables()
// Get tables that contain "user"
list_tables(pattern: "user")2. 获取表结构
检索特定表的详细模式。
参数:
table_name(必填):表的名称。
示例:
get_table_schema(table_name: "users")输出内容包括:
- 列列表(数据类型、约束、注释)
- 索引列表
- 约束(主键、外键、唯一约束)
3. 搜索表(search_tables)
按表名或列名搜索表。
参数:
query(必填):搜索查询字符串。
示例:
search_tables(query: "email")
search_tables(query: "exercise")4. 获取表关系
获取与指定表相关的外键关系。
参数:
table_name(必填):表的名称。
示例:
get_table_relations(table_name: "exercise_works")输出内容包括:
- 外键:此表所引用的表
- 引用自:其他表引用此表的关系
5. 分析模型依赖关系
对模型进行全面的依赖分析。
参数:
table_name(必填):表的名称。
示例:
analyze_model_dependencies(table_name: "exercises")输出包括:
- 基本信息(列数、索引)
- 此表所依赖的表
- 依赖于此表的表
- 详细的关系信息
验证
验证MCP服务器是否正常工作:
# Set the schema file path via environment variable
export SCHEMA_PATH=/path/to/schema.json
# Retrieve the list of tables
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_tables","arguments":{}}}' | ruby mcp-server-schema/mcp_schema.rb
# Retrieve schema for a specific table
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_table_schema","arguments":{"table_name":"users"}}}' | ruby mcp-server-schema/mcp_schema.rb用例
理解数据模型
AI: "Tell me about the structure of the exercises table."
→ get_table_schema(table_name: "exercises")检查关系
AI: "Which tables are related to exercise_works?"
→ get_table_relations(table_name: "exercise_works")搜索表格
AI: "Find all tables related to users."
→ search_tables(query: "user")依赖分析
AI: "Analyze the dependencies of the lessons table."
→ analyze_model_dependencies(table_name: "lessons")故障排除
未找到模式文件
错误信息:
Schema file not found: /path/to/schema.json解决方案:
- 确保
SCHEMA_PATH环境变量已正确设置。 - 验证模式文件的路径是否为绝对路径。
JSON解析错误
错误信息:
Invalid JSON in schema file解决方案:
- 检查位于(某处的)模式文件
dist/schema.json已损坏。 - 重新生成模式文件。
技术细节
所使用的技术
- Ruby(罗比/鲁比,人名或地名等专有名词,具体根据上下文确定)
- MCP宝石 - 模型上下文协议SDK(软件开发工具包)
- JSON - 用于解析模式文件
建筑
mcp_schema.rb
├── SchemaLoader: Loads and searches schema files
├── ListTablesTool: Retrieves list of tables
├── GetTableSchemaTool: Fetches detailed table schema
├── SearchTablesTool: Searches tables
├── GetTableRelationsTool: Fetches table relationships
└── AnalyzeModelDependenciesTool: Performs dependency analysis模式文件格式
{
"tables": {
"table_name": {
"name": "table_name",
"comment": "Table comment",
"columns": { ... },
"indexes": { ... },
"constraints": { ... }
}
}
}