From 452652a1907f579ae7cc268a278c0907d32dbb44 Mon Sep 17 00:00:00 2001 From: abhishekbhakat Date: Sun, 4 May 2025 10:30:40 +0000 Subject: [PATCH] fix: add resource and prompt listing endpoints to MCP server --- src/airflow_mcp_server/server.py | 20 +++++++++++++++++++- src/airflow_mcp_server/server_safe.py | 20 +++++++++++++++++++- src/airflow_mcp_server/server_unsafe.py | 20 +++++++++++++++++++- 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/src/airflow_mcp_server/server.py b/src/airflow_mcp_server/server.py index c9063b4..4e5103a 100644 --- a/src/airflow_mcp_server/server.py +++ b/src/airflow_mcp_server/server.py @@ -3,7 +3,7 @@ from typing import Any from mcp.server import Server from mcp.server.stdio import stdio_server -from mcp.types import TextContent, Tool +from mcp.types import Prompt, Resource, ResourceTemplate, TextContent, Tool from airflow_mcp_server.config import AirflowConfig from airflow_mcp_server.tools.tool_manager import get_airflow_tools, get_tool @@ -36,6 +36,24 @@ async def serve(config: AirflowConfig) -> None: logger.error("Failed to list tools: %s", e) raise + @server.list_resources() + async def list_resources() -> list[Resource]: + """List available resources (returns empty list).""" + logger.info("Resources list requested - returning empty list") + return [] + + @server.list_resource_templates() + async def list_resource_templates() -> list[ResourceTemplate]: + """List available resource templates (returns empty list).""" + logger.info("Resource templates list requested - returning empty list") + return [] + + @server.list_prompts() + async def list_prompts() -> list[Prompt]: + """List available prompts (returns empty list).""" + logger.info("Prompts list requested - returning empty list") + return [] + @server.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: try: diff --git a/src/airflow_mcp_server/server_safe.py b/src/airflow_mcp_server/server_safe.py index 543b3b5..5870073 100644 --- a/src/airflow_mcp_server/server_safe.py +++ b/src/airflow_mcp_server/server_safe.py @@ -3,7 +3,7 @@ from typing import Any from mcp.server import Server from mcp.server.stdio import stdio_server -from mcp.types import TextContent, Tool +from mcp.types import Prompt, Resource, ResourceTemplate, TextContent, Tool from airflow_mcp_server.config import AirflowConfig from airflow_mcp_server.tools.tool_manager import get_airflow_tools, get_tool @@ -27,6 +27,24 @@ async def serve(config: AirflowConfig) -> None: logger.error("Failed to list tools: %s", e) raise + @server.list_resources() + async def list_resources() -> list[Resource]: + """List available resources (returns empty list).""" + logger.info("Resources list requested - returning empty list") + return [] + + @server.list_resource_templates() + async def list_resource_templates() -> list[ResourceTemplate]: + """List available resource templates (returns empty list).""" + logger.info("Resource templates list requested - returning empty list") + return [] + + @server.list_prompts() + async def list_prompts() -> list[Prompt]: + """List available prompts (returns empty list).""" + logger.info("Prompts list requested - returning empty list") + return [] + @server.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: try: diff --git a/src/airflow_mcp_server/server_unsafe.py b/src/airflow_mcp_server/server_unsafe.py index 347db5c..2299206 100644 --- a/src/airflow_mcp_server/server_unsafe.py +++ b/src/airflow_mcp_server/server_unsafe.py @@ -3,7 +3,7 @@ from typing import Any from mcp.server import Server from mcp.server.stdio import stdio_server -from mcp.types import TextContent, Tool +from mcp.types import Prompt, Resource, ResourceTemplate, TextContent, Tool from airflow_mcp_server.config import AirflowConfig from airflow_mcp_server.tools.tool_manager import get_airflow_tools, get_tool @@ -27,6 +27,24 @@ async def serve(config: AirflowConfig) -> None: logger.error("Failed to list tools: %s", e) raise + @server.list_resources() + async def list_resources() -> list[Resource]: + """List available resources (returns empty list).""" + logger.info("Resources list requested - returning empty list") + return [] + + @server.list_resource_templates() + async def list_resource_templates() -> list[ResourceTemplate]: + """List available resource templates (returns empty list).""" + logger.info("Resource templates list requested - returning empty list") + return [] + + @server.list_prompts() + async def list_prompts() -> list[Prompt]: + """List available prompts (returns empty list).""" + logger.info("Prompts list requested - returning empty list") + return [] + @server.call_tool() async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]: try: