feat: build mcp server from workflow config
This commit is contained in:
@@ -7,6 +7,7 @@ from .discovery import (
|
||||
from .events import McpEvent, make_event
|
||||
from .server import (
|
||||
build_workflow_server_from_config,
|
||||
build_workflow_server_from_workflow_config,
|
||||
create_broker_server,
|
||||
workflow_server_from_service,
|
||||
)
|
||||
@@ -21,6 +22,7 @@ __all__ = [
|
||||
"WfMcpService",
|
||||
"build_service_from_config",
|
||||
"build_workflow_server_from_config",
|
||||
"build_workflow_server_from_workflow_config",
|
||||
"create_broker_server",
|
||||
"discover_connection_capabilities",
|
||||
"load_broker_config",
|
||||
|
||||
@@ -4,12 +4,13 @@ import json
|
||||
from pathlib import Path
|
||||
|
||||
from wf_api import file_workflow_stores
|
||||
from wf_config import WorkflowConfigFile
|
||||
|
||||
from ..control import BrokerConfigFile
|
||||
from ..models import BrokerConfig
|
||||
from ..runtime import McpRuntimePool, PersistentSessionFactory
|
||||
from ..sdk import McpSdkAdapter
|
||||
from ..source_registry import FileSourceRegistryStore
|
||||
from ..source_registry import FileSourceRegistryStore, workflow_mcp_source_to_connection_config
|
||||
from ..storage import FileStore
|
||||
from .service import WfMcpService
|
||||
|
||||
@@ -21,6 +22,18 @@ def load_broker_config(path: str | Path) -> BrokerConfig:
|
||||
return BrokerConfigFile.model_validate(data).to_runtime(config_path=config_path)
|
||||
|
||||
|
||||
def broker_config_from_workflow_config(config: WorkflowConfigFile) -> BrokerConfig:
|
||||
"""Create MCP broker runtime config from neutral workflow server config."""
|
||||
return BrokerConfig(
|
||||
store_root=config.server.store.root,
|
||||
connections=[
|
||||
workflow_mcp_source_to_connection_config(source)
|
||||
for source in config.server.sources
|
||||
if getattr(source, "kind", None) == "mcp"
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def build_service_from_config(config: BrokerConfig) -> WfMcpService:
|
||||
"""Create a broker service with SDK adapters for configured connections."""
|
||||
runtime_factory = PersistentSessionFactory()
|
||||
@@ -44,3 +57,10 @@ def build_service_from_config(config: BrokerConfig) -> WfMcpService:
|
||||
if connection.server not in service.adapters:
|
||||
service.register_adapter(connection.server, McpSdkAdapter())
|
||||
return service
|
||||
|
||||
|
||||
__all__ = [
|
||||
"broker_config_from_workflow_config",
|
||||
"build_service_from_config",
|
||||
"load_broker_config",
|
||||
]
|
||||
|
||||
@@ -12,8 +12,9 @@ from wf_api import (
|
||||
from wf_api.stores import WorkflowStores
|
||||
from wf_server import WorkflowServer, WorkflowServerConfig
|
||||
|
||||
from wf_config import WorkflowConfigFile
|
||||
from .artifact_tools import register_artifact_tools
|
||||
from .config import build_service_from_config
|
||||
from .config import broker_config_from_workflow_config, build_service_from_config
|
||||
from .prompts import register_broker_prompts
|
||||
from .resources import register_broker_resources
|
||||
from .service import WfMcpService
|
||||
@@ -101,8 +102,18 @@ def build_workflow_server_from_config(config: BrokerConfig) -> WorkflowServer:
|
||||
)
|
||||
|
||||
|
||||
def build_workflow_server_from_workflow_config(
|
||||
config: WorkflowConfigFile,
|
||||
) -> WorkflowServer:
|
||||
"""Build an MCP-backed WorkflowServer from neutral workflow config sources."""
|
||||
return build_workflow_server_from_config(
|
||||
broker_config_from_workflow_config(config)
|
||||
)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"build_workflow_server_from_config",
|
||||
"build_workflow_server_from_workflow_config",
|
||||
"create_broker_server",
|
||||
"workflow_server_from_service",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user