Skip to main content
Glama
darrenjrobinson

microsoft-ai-roundup-mcp

Microsoft AI Roundup MCP Server

npm version npm downloads license

A Model Context Protocol (MCP) server for searching the archive of Merill's Weekly Microsoft AI Roundup — a curated weekly Substack newsletter by Merill Fernando (with Joanne Hayek) covering Microsoft AI: Copilot, GitHub, Azure AI, M365 AI integrations, and the surrounding ecosystem.

Ask natural-language questions like "When did Copilot get feature X?", "What did the roundup say about Build?", or "Which GitHub projects has it highlighted?" and get sourced answers with issue numbers, dates, and links.

Sister project to entra-news-mcp.

Quick Start

No installation, no API keys, no configuration required:

npx microsoft-ai-roundup-mcp

On first run the server downloads a pre-built search index (SQLite database) from this repo's GitHub Releases and caches it locally. It checks for an updated index at most once every 7 days.

Requires Node.js 22 or later — the server uses Node's built-in node:sqlite module (no native dependencies). Node 20 will not work.

Related MCP server: openresearch-mcp

Client Configuration

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "microsoft-ai-roundup": {
      "command": "npx",
      "args": ["microsoft-ai-roundup-mcp"]
    }
  }
}

Claude Code

claude mcp add microsoft-ai-roundup -- npx microsoft-ai-roundup-mcp

Cursor / VS Code / Copilot Studio

{
  "mcpServers": {
    "microsoft-ai-roundup": {
      "command": "npx",
      "args": ["-y", "microsoft-ai-roundup-mcp"]
    }
  }
}

Keyword search works with zero configuration. For semantic (meaning-based) search, add an OpenAI API key:

{
  "mcpServers": {
    "microsoft-ai-roundup": {
      "command": "npx",
      "args": ["microsoft-ai-roundup-mcp"],
      "env": { "OPENAI_API_KEY": "sk-..." }
    }
  }
}

Without a key the server degrades gracefully to keyword-only search.

Tools

Tool

Description

search_microsoft_ai_roundup

Search the full archive with natural language or keywords. Hybrid semantic + keyword search; returns sourced excerpts with issue number, date, and URL. Args: query (required), limit (default 10, max 50), mode (hybrid | semantic | keyword).

get_issue

Retrieve the full content of an issue by issue_number or date (YYYY-MM-DD or YYYY-MM), with section headings preserved.

list_issues

Browse the archive with optional year/month filtering and pagination.

find_tool_mentions

Find community tools, GitHub projects, and Microsoft AI products/features mentioned across issues, with surrounding context. Optional query filter.

Example queries

  • "Search the Microsoft AI roundup for Copilot Studio agent announcements"

  • "Get issue #4 of the Microsoft AI roundup"

  • "List all roundup issues from May 2026"

  • "What GitHub projects has the Microsoft AI roundup mentioned?"

How It Works

Substack API (https://msai.ms/api/v1/posts)
     │
     ▼
TypeScript ingestion script (scripts/ingest.ts)
     │  weekly GitHub Action — Tuesdays 09:00 UTC
     ▼
OpenAI text-embedding-3-small embeddings (1536 dims)
     │
     ▼
SQLite via node:sqlite (Node 22 built-in — no native deps)
     │
     ▼
GitHub Release asset: microsoft-ai-roundup.db
     │
     ▼
NPX MCP Server (stdio)
  └─ Downloads DB on first run → caches in ~/.microsoft-ai-roundup-mcp/
  └─ Re-checks for updates weekly (7-day staleness + tag diff)
  └─ In-memory cosine similarity + SQL LIKE keyword search

Search implementation (honest version): semantic search loads all embedding vectors into memory at startup and ranks by cosine similarity in JavaScript; keyword search uses SQL LIKE (exact phrase first, then per-word fallback). Hybrid mode merges and de-duplicates both result sets. No sqlite-vec, no FTS5 — deliberately simple, and more than adequate at this archive's scale.

Automated Weekly Updates

A GitHub Actions workflow runs every Tuesday at 09:00 UTC (the morning after the newsletter's usual Monday publish). It incrementally ingests any new issues, verifies the database, and publishes it as a new GitHub Release tagged db-YYYY.MM.DD-NNNN. The NPX server picks up the new database automatically within a week (or immediately on a fresh install). A workflow_dispatch trigger provides a manual escape hatch for off-schedule publishes or full rebuilds.

Cache Locations

OS

Path

Windows

%USERPROFILE%\.microsoft-ai-roundup-mcp\

macOS / Linux

~/.microsoft-ai-roundup-mcp/

Delete the folder to force a fresh download of the latest database.

Local Development / Ingestion

git clone https://github.com/darrenjrobinson/microsoft-ai-roundup-mcp
cd microsoft-ai-roundup-mcp
npm install
npm run build

# Build the search index locally (requires an OpenAI API key for embeddings)
export OPENAI_API_KEY=sk-...
node dist/scripts/ingest.js               # full ingest
node dist/scripts/ingest.js --incremental # only new issues

# On Windows there's a PowerShell wrapper:
./scripts/ingest.ps1 -Incremental

# Run the server against your local database
MSAI_ROUNDUP_DB_PATH=./microsoft-ai-roundup.db npx microsoft-ai-roundup-mcp

Environment variable

Used by

Purpose

OPENAI_API_KEY

ingest + server

Embeddings (required for ingest; optional for the server's semantic search)

INGEST_DB_PATH

ingest

Output database path (default ./microsoft-ai-roundup.db)

MSAI_ROUNDUP_DB_PATH

server

Use a local database instead of downloading from GitHub Releases

Permissions & Licensing

Newsletter content is © Merill Fernando & Joanne Hayek. This project indexes the freely available public archive via the public Substack API (all posts are free, audience: "everyone") and always links back to the original issues. The code is MIT licensed.

Credits

Available Tools

4 tools
find_tool_mentionsA

Find community tools, GitHub projects, and Microsoft AI products/features mentioned in the Microsoft AI Roundup. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of tool mentions to return (default: 20)
queryNoOptional filter — search by tool name, technology, or description keyword (e.g. "Copilot", "Azure AI Foundry", "agents")

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return fields (tool names, descriptions, GitHub URLs, issue context) and the optional filter. It does not mention sorting or pagination, but for a read-oriented find tool, the description offers adequate behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action and scope. No redundant wording or unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two optional parameters, no output schema, and no annotations. The description covers what it does, what it returns, and how to filter. It is complete enough for an agent to determine if this tool fits the task.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (limit and query). The description only restates the query's search purpose ('find tools related to a specific technology or capability') without adding new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb 'Find' and explicit resources: community tools, GitHub projects, and Microsoft AI products/features mentioned in the Microsoft AI Roundup. This distinguishes it from siblings like get_issue and list_issues, which focus on issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it searches tool mentions within the Microsoft AI Roundup, with an optional keyword filter. However, it does not explicitly mention when to use an alternative like search_microsoft_ai_roundup, lacking direct exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_issueA

Retrieve the full content of a specific Microsoft AI Roundup issue by issue number or publication date. Returns the complete text of the newsletter with section headings preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD or YYYY-MM format to find the nearest issue (e.g. "2026-05" or "2026-05-18")
issue_numberNoIssue number (e.g. 4)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that the tool returns the complete text with section headings preserved, which is useful. However, it does not mention what happens when both parameters are provided, when neither is provided, or the 'nearest issue' behavior that is only in the parameter description. The description adds some behavioral context but not a comprehensive picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the action and resource. Every sentence contributes: the first states the purpose and parameters, the second describes the return value. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two optional parameters, and the output schema is absent, so the description helps by indicating the return format. However, it lacks important contextual details such as the requirement to provide at least one identifier and the conflict resolution if both are given. The description is adequate but has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for both parameters, so the baseline is 3. The description merely reiterates that the tool works by 'issue number or publication date', which adds no new meaning beyond the schema. It does not clarify that at least one parameter is needed, since none are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Retrieve the full content of a specific Microsoft AI Roundup issue.' It specifies the resource ('Microsoft AI Roundup issue') and the action ('retrieve') along with the two lookup methods (issue number or publication date). It also distinguishes itself from sibling tools like search or list by focusing on full content of a single issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use: when you want a specific issue identified by number or date. It implies that you should have one of these identifiers. It does not mention alternatives like list_issues for finding issue numbers, but the context is clear enough without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_issuesA

Browse the Microsoft AI Roundup (msai.ms) 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_microsoft_ai_roundup.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year (e.g. 2026)
limitNoMaximum issues to return (default: 50)
monthNoFilter by month number 1–12 (e.g. 5 for May). Requires year.
offsetNoPagination offset (default: 0)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It states the tool is for browsing (implying read-only) and returns a list with specified fields, but does not disclose pagination behavior, potential size limits, or ordering. It adds some context but not rich detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, and no unnecessary fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the return fields and positions itself against sibling tools. Since there is no output schema, it explains the return value (list with title, date, URL). However, it omits mention of pagination via offset/limit, which the schema supports, so it falls just short of being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter already has a description. The description reinforces that year/month are for filtering, but adds no new information beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool browses the Microsoft AI Roundup archive and returns a list of issues with title, date, and URL. It differentiates from siblings by explicitly mentioning use before get_issue or search_microsoft_ai_roundup, establishing its role as a discovery tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Use this to discover what issues exist before using get_issue or search_microsoft_ai_roundup.' This clearly indicates when to use this tool versus the alternatives, and the mention of optional filtering adds context for parameter usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_microsoft_ai_roundupA

Search the full Microsoft AI Roundup (msai.ms) 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 issues of Merill's weekly Microsoft AI roundup from May 2026 to present.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode: hybrid (default), semantic-only, or keyword-onlyhybrid
limitNoMaximum number of results to return (default: 10, max: 50)
queryYesNatural language question or keywords to search for

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well. It discloses the hybrid semantic+keyword search, the OPENAI_API_KEY dependency for semantic mode, coverage from May 2026, and the return format. Minor gaps remain (e.g., no mention of result sorting or error handling), but it's transparent for a read-only search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main action, and every sentence provides useful detail. No filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with 3 parameters and no output schema. The description adequately explains the return format, coverage, and dependencies. It doesn't mention pagination or relevance ordering, but the limit parameter and search nature make this acceptable. Overall, it's complete enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining that query can be natural language, and that semantic mode requires an API key, which is not in the schema. This enhances understanding of mode's behavior beyond the enum description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching the full Microsoft AI Roundup archive with natural language or keywords. It distinguishes itself from siblings like get_issue and list_issues by focusing on cross-issue content search, and specifies the output (sourced excerpts with issue number, date, URL).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when searching across the archive. It doesn't explicitly name alternatives or exclusions, but the search-focused wording implies differentiation from other sibling tools. A brief mention of when not to use it would elevate this further.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.1
    • First observedfind_tool_mentions
    • First observedget_issue
    • First observedlist_issues
    • First observedsearch_microsoft_ai_roundup

TDQS

A4.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a distinct purpose: listing issues, retrieving full content, searching across content, and specifically finding tool mentions. There is no overlap or ambiguity in their roles.

Naming Consistency4/5

Three tools follow a consistent verb_noun pattern (get_issue, list_issues, find_tool_mentions). The search tool includes the domain name, making it slightly longer but still clear and predictable.

Tool Count5/5

Four tools is well-scoped for a newsletter archive server, covering the core access and search needs without unnecessary bloat.

Completeness5/5

The set covers browsing, retrieving, searching, and specialized extraction (tool mentions), providing complete lifecycle coverage for read-only access to the newsletter archive. No obvious gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server for searching and citing ASTGL (As The Geek Learns) articles about MCP servers, local AI, and AI automation. Provides semantic search, direct Q\&A, and topic browsing across 20 authoritative articles with pre-computed embeddings.
    3
    101 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that aggregates AI news, academic papers from ArXiv, and trending GitHub repositories from multiple sources, enabling users to fetch, search, and filter recent AI content via natural language.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides AI-powered document processing and search capabilities, including PDF summarization, text extraction, metadata retrieval, and web search via Google Custom Search.
    -