MCP server exposing FlowKI Club's live blog knowledge base (articles, pillars) to MCP clients.
Four tools with clear verb-noun naming (list_*, search_*, get_*, all action-oriented). Descriptions are present and substantive (100-200 chars), explaining WHAT and WHEN. Input schemas use Zod with proper types, min/max constraints, and descriptions. However, output schemas are undocumented, LLMs cannot predict response structure. Error handling is minimal: get_article returns isError flag but lacks recovery guidance. No parameter examples in descriptions (good), but no enum constraints where applicable (e.g., category filter). Missing tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Overall solid foundation with gaps in output documentation and error guidance.
Fetch the full text (as Markdown) of one FlowKI Club article by slug. Fetches the live rendered blog page — always current, independent of any local content mirror.
List recent articles from the FlowKI Club blog (flowki-club.de), newest first. Fetches live metadata from the site — no local mirror.
List the 8 content pillars ("Magazin-Säulen") of the FlowKI Club blog, each with title, description, and URL. Fetched live from flowki-club.de.
Full-text search over article titles and summaries on the FlowKI Club blog. Simple keyword matching, not semantic search.
Output schemas undocumented. Tools return JSON via textResult() but LLMs cannot predict field names, types, or structure. list_articles returns array of articles with fields like 'title', 'summary', 'category', 'publishedAt', 'slug', none documented. Forces LLMs to guess or fail on downstream field extraction.
Error handling lacks recovery guidance. get_article returns isError=true with message 'Article not found: {slug}' but does not suggest alternatives (e.g., 'Try search_articles() to find the correct slug'). Agents cannot self-correct without explicit hints.
No tool annotations. All four tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. Agents cannot infer safety properties and may incorrectly treat them as stateful or destructive.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Category parameter in list_articles lacks enum constraint. Description mentions examples ('ki-pentesting', 'security', 'business-mit-ki') but does not declare valid values formally. LLMs may hallucinate invalid categories. Should use enum or provide exhaustive list.
list_pillars accepts empty input schema ({}). While correct, the tool description does not explain that it always returns the same 8 pillars or that no parameters affect behavior. Agents may incorrectly assume filtering options exist.