Skip to content

Commit 0b974f1

Browse files
authored
Ensure all entities rebuild with forward references before starting the server (#149)
1 parent 04c9531 commit 0b974f1

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/enrichmcp/app.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ def __init__(
8888
# Register built-in resources
8989
self._register_builtin_resources()
9090

91+
def rebuild_models(self) -> None:
92+
"""Rebuild all registered models to resolve forward references."""
93+
for entity_cls in self.entities.values():
94+
entity_cls.model_rebuild()
95+
9196
def data_model_tool_name(self) -> str:
9297
"""Return the name of the built-in data model exploration tool."""
9398

@@ -516,6 +521,10 @@ def run(
516521
f"Define resolvers with @Entity.relationship.resolver"
517522
)
518523

524+
# Resolve any forward references now that all entities are registered
525+
for entity_cls in self.entities.values():
526+
entity_cls.model_rebuild()
527+
519528
# Forward transport options to FastMCP
520529
if transport is not None:
521530
options.setdefault("transport", transport)

src/enrichmcp/relationship.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,12 @@ def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
106106
name=resource_name,
107107
description=resource_description,
108108
)
109-
return self.app._register_tool_def(func, tool_def)
109+
try:
110+
return self.app._register_tool_def(func, tool_def)
111+
except Exception:
112+
if hasattr(self.app, "rebuild_models"):
113+
self.app.rebuild_models()
114+
return self.app._register_tool_def(func, tool_def)
110115

111116
return func
112117

0 commit comments

Comments
 (0)