Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion temporalio/contrib/openai_agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,7 @@ from temporalio.contrib.openai_agents import (
)
from temporalio.worker import Worker


async def main():
# Create the MCP server provider
filesystem_server = StatelessMCPServerProvider(
Expand All @@ -403,7 +404,7 @@ async def main():
model_params=ModelActivityParameters(
start_to_close_timeout=timedelta(seconds=60)
),
mcp_servers=[filesystem_server],
mcp_server_providers=[filesystem_server],
),
],
)
Expand All @@ -415,6 +416,7 @@ async def main():
)
await worker.run()


if __name__ == "__main__":
asyncio.run(main())
```
Expand Down
14 changes: 7 additions & 7 deletions temporalio/contrib/openai_agents/_temporal_openai_agents.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ class OpenAIAgentsPlugin(temporalio.client.Plugin, temporalio.worker.Plugin):
of model calls. If None, default parameters will be used.
model_provider: Optional model provider for custom model implementations.
Useful for testing or custom model integrations.
mcp_servers: Sequence of MCP servers to automatically register with the worker.
mcp_server_providers: Sequence of MCP servers to automatically register with the worker.
The plugin will wrap each server in a TemporalMCPServer if needed and
manage their connection lifecycles tied to the worker lifetime. This is
the recommended way to use MCP servers with Temporal workflows.
Expand All @@ -223,7 +223,7 @@ class OpenAIAgentsPlugin(temporalio.client.Plugin, temporalio.worker.Plugin):
>>> # Create plugin with MCP servers
>>> plugin = OpenAIAgentsPlugin(
... model_params=model_params,
... mcp_servers=[filesystem_server]
... mcp_server_providers=[filesystem_server]
... )
>>>
>>> # Use with client and worker
Expand All @@ -242,7 +242,7 @@ def __init__(
self,
model_params: Optional[ModelActivityParameters] = None,
model_provider: Optional[ModelProvider] = None,
mcp_servers: Sequence[
mcp_server_providers: Sequence[
Union["StatelessMCPServerProvider", "StatefulMCPServerProvider"]
] = (),
) -> None:
Expand All @@ -253,7 +253,7 @@ def __init__(
of model calls. If None, default parameters will be used.
model_provider: Optional model provider for custom model implementations.
Useful for testing or custom model integrations.
mcp_servers: Sequence of MCP servers to automatically register with the worker.
mcp_server_providers: Sequence of MCP servers to automatically register with the worker.
Each server will be wrapped in a TemporalMCPServer if not already wrapped,
and their activities will be automatically registered with the worker.
The plugin manages the connection lifecycle of these servers.
Expand All @@ -276,7 +276,7 @@ def __init__(

self._model_params = model_params
self._model_provider = model_provider
self._mcp_servers = mcp_servers
self._mcp_server_providers = mcp_server_providers

def init_client_plugin(self, next: temporalio.client.Plugin) -> None:
"""Set the next client plugin"""
Expand Down Expand Up @@ -340,13 +340,13 @@ def configure_worker(self, config: WorkerConfig) -> WorkerConfig:
]
new_activities = [ModelActivity(self._model_provider).invoke_model_activity]

server_names = [server.name for server in self._mcp_servers]
server_names = [server.name for server in self._mcp_server_providers]
if len(server_names) != len(set(server_names)):
raise ValueError(
f"More than one mcp server registered with the same name. Please provide unique names."
)

for mcp_server in self._mcp_servers:
for mcp_server in self._mcp_server_providers:
new_activities.extend(mcp_server._get_activities())
config["activities"] = list(config.get("activities") or []) + new_activities

Expand Down
4 changes: 2 additions & 2 deletions tests/contrib/openai_agents/test_openai.py
Original file line number Diff line number Diff line change
Expand Up @@ -2438,7 +2438,7 @@ async def get_prompt(
model_provider=TestModelProvider(TrackingMCPModel())
if use_local_model
else None,
mcp_servers=[server],
mcp_server_providers=[server],
)
]
client = Client(**new_config)
Expand Down Expand Up @@ -2548,7 +2548,7 @@ def override_get_activities() -> Sequence[Callable]:
start_to_close_timeout=timedelta(seconds=120)
),
model_provider=TestModelProvider(TrackingMCPModel()),
mcp_servers=[server],
mcp_server_providers=[server],
)
]
client = Client(**new_config)
Expand Down
Loading