MCP server for searching the Entra.news newsletter archive — a curated weekly digest of Microsoft Entra news
The Entra News MCP Server defines 4 well-structured tools with clear, specific names and good descriptions. All tools follow verb_noun naming convention (search_*, get_*, list_*, find_*). Descriptions are comprehensive (120-280 chars), explaining WHAT the tool does and WHEN to use it. Input schemas are present with typed parameters and mostly good descriptions. However, there are consistent gaps: (1) Required/optional parameter status is not always explicit in schema; (2) Output schemas are undocumented, responses are returned as formatted text strings rather than structured objects; (3) No error handling documentation visible; (4) No tool annotations (readOnlyHint, etc.) despite all tools being read-only. These are fixable gaps that prevent a higher score.
Find community tools, GitHub projects, and open-source resources mentioned in Entra.news. Returns tool names, descriptions, GitHub URLs, and the issue context where they appeared. Optionally filter by keyword to find tools related to a specific technology or capability.
Retrieve the full content of a specific Entra.news issue by issue number or publication date. Returns the complete text of the newsletter with section headings preserved.
Browse the Entra.news archive with optional year/month filtering. Returns a list of issues with title, date, and URL. Use this to discover what issues exist before using get_issue or search_entra_news.
Search the full Entra.news archive using natural language or keywords. Returns sourced excerpts from past issues with issue number, date, and URL. Supports hybrid semantic + keyword search (semantic requires OPENAI_API_KEY). Covers all Entra.news issues from mid-2023 to present.
Output schemas are undocumented. All tools return formatted text strings; LLMs cannot plan downstream calls or extract structured data. LLMs need to know what fields to expect so they can plan downstream tool calls and extract the right data.'
Required vs optional parameters not explicitly declared in schema. get_issue has two properties (issue_number, date) with no 'required' array, LLMs cannot determine which one is mandatory.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All 4 tools are read-only and should be marked with readOnlyHint: true per current MCP spec (2026-07-28). Spec Alignment reward for tool annotations is not claimed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 59 | - | v1 |
No error handling documentation. Error cases (invalid issue number, malformed date, no results, API failures, etc.) are not mentioned in tool descriptions or schemas. E.g. 'If issue not found, call list_issues() to discover valid issue numbers.'
get_issue requires either issue_number OR date, but both are optional in the schema. Mutually exclusive dependency is undocumented. 'user_id' vs 'email'), state this in descriptions.'