refactor: move mcp sdk protocols to wf_sources_mcp

This commit is contained in:
lda
2026-06-07 01:30:40 +07:00 Verified
parent 9bef0b0f63
commit 1385f935ca
21 changed files with 904 additions and 116 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
from wf_sources_mcp.sdk import BackendAdapter, ToolCallResult
from .adapter import McpSdkAdapter
from .base import BackendAdapter, ToolCallResult
__all__ = ["BackendAdapter", "McpSdkAdapter", "ToolCallResult"]
+1 -1
View File
@@ -19,9 +19,9 @@ from pydantic import AnyUrl
from wf_sources_mcp.auth import AuthRecord, mcp_auth_env, mcp_auth_headers
from wf_sources_mcp.catalog import DiscoveredPrompt, DiscoveredResource, DiscoveredTool
from wf_sources_mcp.sdk import BackendAdapter, ToolCallResult
from ..models import ConnectionConfig
from .base import BackendAdapter, ToolCallResult
from .converters import (
prompt_to_discovered,
resource_to_discovered,
+10 -78
View File
@@ -1,81 +1,13 @@
"""Compatibility shim for MCP upstream SDK protocol/result types.
Canonical implementation lives in `wf_sources_mcp.sdk`.
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Protocol
from wf_sources_mcp.sdk import BackendAdapter, ToolCallResult
from wf_sources_mcp.catalog import DiscoveredPrompt, DiscoveredResource, DiscoveredTool
from ..auth import AuthRecord
from ..models import ConnectionConfig
@dataclass(slots=True)
class ToolCallResult:
outcome: str
output: dict[str, Any] = field(default_factory=dict)
meta: dict[str, Any] = field(default_factory=dict)
class BackendAdapter(Protocol):
async def list_tools(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
) -> list[DiscoveredTool]: ...
async def list_resources(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
) -> list[DiscoveredResource]: ...
async def list_prompts(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
) -> list[DiscoveredPrompt]: ...
async def get_connection_metadata(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
) -> dict[str, Any]: ...
async def read_resource(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
uri: str,
) -> dict[str, Any]: ...
async def get_prompt(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
prompt_name: str,
arguments: dict[str, str] | None = None,
) -> dict[str, Any]: ...
async def invoke_method(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
method: str,
params: dict[str, Any] | None = None,
) -> dict[str, Any]: ...
async def send_notification(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
method: str,
params: dict[str, Any] | None = None,
) -> None: ...
async def call_tool(
self,
connection: ConnectionConfig,
auth: AuthRecord | None,
tool_name: str,
payload: dict[str, Any],
) -> ToolCallResult: ...
__all__ = [
"BackendAdapter",
"ToolCallResult",
]
+1 -2
View File
@@ -8,8 +8,7 @@ from mcp.types import Resource as McpResource
from mcp.types import Tool as McpTool
from wf_sources_mcp.catalog import DiscoveredPrompt, DiscoveredResource, DiscoveredTool
from .base import ToolCallResult
from wf_sources_mcp.sdk import ToolCallResult
def tool_to_discovered(tool: McpTool) -> DiscoveredTool: