`describe_entities` should merge config fields with DB columns for tables/views
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
这个 Issue 还没有评估数据。
描述
Summary
For stored-procedure entities, describe_entities now uses the database as the source of truth for parameters and treats config as an overlay (#3400). The same merge does not yet happen for tables and views: the fields array surfaced to MCP agents comes from entity.Fields in config alone, and the database columns are ignored.
Why this matters
Most users do not list every column under entities.<entity>.fields in config — that block is typically used only when a column needs an alias, a description, or a primaryKey override. As a result, today:
- A table or view entity with no
fields:block in config emits an emptyfieldsarray to MCP agents. The agent has no way to see what columns the entity actually has. - A table or view entity with a partial
fields:block (e.g. only one column described for an alias) emits only that column — the rest of the table is hidden from the agent.
This is the same class of agent-can't-see-required-inputs bug that #3400 fixed for stored-procedure parameters.
Where the gap lives
DescribeEntitiesTool.BuildFieldMetadataInfo:
private static List<object> BuildFieldMetadataInfo(List<FieldMetadata>? fields)
{
List<object> result = new();
if (fields != null)
{
foreach (FieldMetadata field in fields)
{
result.Add(new
{
name = field.Alias ?? field.Name,
description = field.Description ?? string.Empty
});
}
}
return result;
}
The DB-side equivalent lives at SourceDefinition.Columns (a Dictionary<string, ColumnDefinition>) on the resolved DatabaseObject — same access pattern the SP parameter merge uses.
Proposed merge rules (mirroring #3400)
For table and view entities:
name: from DB (Columns.Keys); configAliasoverrides for the surfaced name.description: config-only (no reliable DB-side column description in MSSQL/PostgreSQL/MySQL metadata).primaryKey: from DB (SourceDefinition.PrimaryKey); configPrimaryKeyoverrides if present.- (Optional) type info: surface
ColumnDefinition.SystemType/DbTypeso agents know the column shape. - DB columns not listed in config are still surfaced (with no alias/description) so agents see the full schema.
- Fall back to emitting config fields as-is when DB metadata is unavailable (same degraded path as the SP parameter merge).
Acceptance criteria
- Tables and views with no
fields:config block surface all DB columns todescribe_entities. - Config
Alias,Description, andPrimaryKeyoverlay correctly when present. - DB columns not listed in config are still surfaced.
- Degraded fallback: when DB metadata is unavailable, config-declared fields are emitted as-is.
- Unit tests mirror the SP parameter merge tests in
DescribeEntitiesStoredProcedureParametersTests.
Related
- #3400 — original SP parameter merge issue
- PR #_____ — SP parameter merge implementation (introduced
McpMetadataHelper.TryResolveDatabaseObject, which this work can reuse)
- 主要语言
- C#
- 星标
- 1.5k
- 派生
- 372
- 平均合并
- 9 天 1 小时
- 30 天内合并 PR
- 13
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Azure/data-api-builder 的其他 Issue
-
pgsql
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3598 ·
维护者通常 1 天内回复
-
2.x cli mcp-server
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3576 ·
维护者通常 1 天内回复
-
2.x health-endpoint
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3570 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3564 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 70/100
Azure/data-api-builder#3562 ·
维护者通常 1 天内回复
查看 Azure/data-api-builder 的全部 Issue
相似的 Issue
-
ci-failure-cause test-failure
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
-
area:frontend bug FE hotspot:css mvp P3
难度 1/5 1 小时以内 新手友好度 90/100
klasolsson81/jobbliggaren#1856 ·
维护者通常 1 天内回复
-
Area: App+Library Build
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
Aaronontheweb/freshdesk-cli#148 ·