Skip to main content
Glama

STAC MCP Server

by BnJam
test_prompts_meta_consistency.py2.47 kB
import pytest from fastmcp.client import Client from stac_mcp.fast_server import app @pytest.fixture def test_app(): """Return a clean app for each test.""" original_tools = app._tool_manager._tools.copy() # noqa: SLF001 yield app app._tool_manager._tools = original_tools # noqa: SLF001 @pytest.mark.asyncio async def test_get_prompt_messages_include_machine_payload_for_all_prompts(test_app): """For each registered prompt, get_prompt() returns a PromptMessage with `_meta['machine_payload']` available so agents may call tools programmatically. """ client = Client(test_app) async with client: prompts = await client.list_prompts() # Collect prompt names names = [getattr(p, "name", None) for p in prompts] assert len(names) > 0 # Ensure each prompt's rendered message includes _meta.machine_payload for name in names: if not name: continue result = await client.get_prompt(name) assert hasattr(result, "messages"), f"get_prompt({name}) missing .messages" assert len(result.messages) > 0, ( f"get_prompt({name}) returned empty .messages" ) msg = result.messages[0] # PromptMessage should expose machine_payload on either `_meta` or `meta` machine_meta = getattr(msg, "_meta", None) or getattr(msg, "meta", None) assert machine_meta is not None, ( f"Prompt {name} did not include _meta or meta" ) assert "machine_payload" in machine_meta, ( f"Prompt {name} missing machine_payload in _meta/meta" ) @pytest.mark.asyncio async def test_list_prompts_descriptor_exposes_decorator_meta(test_app): """Ensure prompt descriptors returned by list_prompts expose the decorator-provided metadata as `.meta` so clients can discover schemas. """ client = Client(test_app) async with client: prompts = await client.list_prompts() assert isinstance(prompts, list), "list_prompts did not return a list" assert len(prompts) > 0, "list_prompts returned an empty list" # Every prompt descriptor should at least have a `.meta` attribute (may be empty) for p in prompts: meta = getattr(p, "meta", None) assert meta is not None, ( f"Prompt descriptor {getattr(p, 'name', '<no-name>')} missing .meta" )

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BnJam/stac-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server