Entra

Entra News MCP Server

I’ve just published an MCP server that turns Merill & Joshua’s weekly Entra News newsletter into a searchable knowledge base you can query directly from tools like Claude Desktop, Cursor, and any MCP‑capable host. I built it because I found myself often searching for something I’d read in the weekly newsletter. But which issue, what was the title?

What is it?

Entra News is a high‑signal, curated weekly digest of Microsoft Entra news, features, and community tools, published since mid‑2023. The MCP server wraps the full public archive and exposes it via a set of tools you can call from your AI assistant.

​Under the hood, it downloads a compact SQLite database (around 15–20 MB) that’s kept up to date via a GitHub Actions workflow, so you don’t need to run or host anything yourself.

The server currently exposes four tools:

  • search_entra_news – Hybrid semantic + keyword search across all issues, returning sourced excerpts.
  • get_issue – Pull the full content of a specific issue by number or date.
  • list_issues – Browse the archive, optionally filtered by year and month.
  • find_tool_mentions – Discover community tools and GitHub projects that have been featured.

A typical flow is:

  • ask a natural language question,
  • get back citations,
  • then pivot into a specific issue or tool for deeper context.

Why I built it

A lot of Entra‑specific “what changed, when, and where was that announced?” knowledge ends up locked inside people’s inboxes or buried in past Entra News issues. I wanted a lightweight, zero‑infrastructure way to bring that archive into my AI workflows so I can:

  • Ask targeted questions like “What did Entra News cover about Conditional Access in 2024?” or “Has Verified ID been covered recently?” and get precise, sourced answers
  • Quickly list all issues for a given time period when I’m reconstructing a change timeline (for example, “List all new features from 2024”)
  • Discover community tools and GitHub projects that have been highlighted over time using find_tool_mentions

Building this as an MCP server makes it easy to plug into multiple hosts (Claude Desktop, Cursor, Copilot Studio, etc.) without per‑user APIs, hosting, or scheduled jobs.

How it works

At a high level, the architecture looks like this:

  • A Node.js ingestion script pulls content from the public Entra News Substack API (entra.news/api/v1/posts)
  • Content is embedded using OpenAI’s text-embedding-3-small model and stored in a SQLite database with sqlite-vec plus FTS5 for hybrid semantic/keyword search
  • The database is published as a GitHub Release asset and updated weekly by a GitHub Actions workflow that runs every Sunday
  • When you run the MCP server via npx, it downloads the latest database on first run, caches it locally, and checks for updates once a week

Local Cache behaviour

On first launch, the MCP server downloads the database and caches it locally:

  • Windows: %USERPROFILE%.entra-news-mcp\
  • macOS / Linux: ~/.entra-news-mcp/

The server checks for a new database release once a week. To force an immediate refresh (for example, after a new issue has been ingested), you can delete the cache directory and restart your MCP host.

Getting Started

Claude Desktop

Add the MCP server to your Claude Desktop configuration file (claude_desktop_config.json)

{
   "mcpServers": {
      "entra-news-mcp": {
         "command": "npx",
         "args": [
           "entra-news-mcp"
         ]
      }
   }
}

Restart Claude Desktop and the database will download on first use.

Cursor, Copilot Studio, and other MCP hosts

{
  "mcpServers": {
    "entra-news-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "entra-news-mcp"
      ]
    }
  }
}

Optional: enable semantic search

Keyword search (BM25 via FTS5) works out of the box, but you can enable higher‑quality semantic search by setting your OpenAI API key in the MCP server configuration.

{
  "mcpServers": {
    "entra-news-mcp": {
      "command": "npx",
      "args": [
        "entra-news-mcp"
      ],
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Once that’s set, the server uses hybrid semantic + keyword search to improve result quality.

You can find the code and full README here:

Huge thanks to Merill and Joshua for a fantastic resource.

Darren Robinson

Bespoke learnings from a Microsoft Identity and Access Management Architect using lots of Microsoft Identity Manager, Azure Active Directory, PowerShell, SailPoint IdentityNow and Lithnet products and services.

Recent Posts

Entra ECMA2Host Tools PowerShell Module

If you've ever worked with the ECMA2Host for Entra Outbound Provisioning you'll be immediately presented…

3 months ago

PowerShell 7 Support Arrives for the Granfeldt PowerShell Management Agent

For over a decade, the Granfeldt PowerShell Management Agent (PSMA) has been the bedrock for…

5 months ago

PowerShell MCP Azure Function Server

Recently under the experimental Azure Functions build Microsoft Developer Advocates have shown enabling Azure Functions…

6 months ago

EntraPulse – Your AI-Powered Gateway to Microsoft Graph & Docs

Today, I’m super excited to finally announce the Beta release of EntraPulse Lite – a…

8 months ago

Lokka MCP Authentication Enhancements

I'm excited to share some significant authentication enhancements I've contributed to the Lokka MCP Server…

9 months ago

AI Inception: Building AI Solutions with AI for AI

Last month I had the pleasure of speaking at the Sydney event for Global Azure.…

9 months ago

This website uses cookies.