Add story-style examples suite (27 stories + harness + CI) (#2957)

This commit is contained in:
Max 2026-06-26 12:02:27 +02:00 • committed by GitHub
commit 4caa41f6d5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,39 @@
"""Register a vendor-prefixed JSON-RPC method on the low-level Server.
`MCPServer` has no public surface for arbitrary method registration, so this
story's `server.py` is lowlevel-native (no `server_lowlevel.py` sibling).
"""
from typing import Any
import mcp_types as types
from mcp.server.context import ServerRequestContext
from mcp.server.lowlevel import Server
from stories._hosting import run_server_from_args
class SearchParams(types.RequestParams):
"""Subclass `RequestParams` so `_meta` (and the 2026 envelope keys) parse uniformly."""
query: str
limit: int = 10
class SearchResult(types.Result):
items: list[str]
def build_server() -> Server[Any]:
server = Server("custom-methods-example")
async def search(ctx: ServerRequestContext[Any], params: SearchParams) -> SearchResult:
items = [f"{params.query}-{i}" for i in range(params.limit)]
return SearchResult(items=items)
server.add_request_handler("acme/search", SearchParams, search)
return server
if __name__ == "__main__":
run_server_from_args(build_server)