Model Context Protocol server implementation for Azure Functions with multiple hosting options: binding extension, self-hosted SDK, and queue-based patterns
Mixed quality across 4 tools. say_hello and read_blob have complete schemas with proper descriptions and parameter types. get_weather has a well-formed schema and clear description. summarise_document lacks visible schema definition in source, only inferred from ToolInvocationMessage.cs. Descriptions range from adequate (read_blob: 95 chars) to minimal (say_hello: 88 chars). No parameter descriptions for latitude/longitude in get_weather. No error handling guidance. No tool annotations (readOnlyHint, etc.). Output schemas undocumented. Average tool score: 52.
Returns the current temperature and weather code for a location given its latitude and longitude. Uses Open-Meteo (no API key required).
Reads the text content of a blob from Azure Blob Storage. Requires container name and blob name.
Returns a greeting. Use this to verify the MCP server connection is working.
Reads the text content of a blob from Azure Blob Storage and returns a summary.
say_hello and summarise_document lack visible input schemas in source code. say_hello has no parameters but schema not explicitly declared. summarise_document inferred from ToolInvocationMessage.cs without explicit schema registration visible.
get_weather parameters (latitude, longitude) lack descriptions in the schema. Parameter descriptions are critical for LLM reasoning, 'Latitude of the location (e.g. 52.37 for Amsterdam)' appears in code but not in the inputSchema properties.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields without knowing return structure. read_blob returns string; get_weather returns TextContent; summarise_document returns string, none formally specified.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. read_blob returns plain error strings ('Error: blob not found') without actionable next steps. get_weather returns TextContent with error text but no structured error classification (retryable vs user-fixable).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are READ_ONLY but this is not declared in schema, LLMs cannot infer safety properties without explicit hints.