Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
149490 stories
·
33 followers

Daily Reading List – November 21, 2025 (#671)

1 Share

I refill by pouring myself into others. But I probably overdid it this week, and definitely crave some selfish time this weekend to work on some projects or read quietly in a corner of the house. We’ll see if it happens!

[article] What process inefficiencies have the biggest impact on developer satisfaction? AI and better tools won’t necessarily fix some of these issues. Don’t paper over them by shoving more tech at your teams. Fix these fundamentals!

[blog] Build a multi-agent AI system using CrewAI, Gemini, and CircleCI. Good to see this combo of technologies, and a set of agent tests that aren’t just checking “correctness” but behavior too.

[blog] Critical Thinking during the age of AI. Careless, lazy thinking won’t pass muster anymore. AI can do it better than us. Now is the time for us to recommit to more thoughtful practices and deeper understanding of our work.

[blog] Practical Guide on how to build an Agent from scratch with Gemini 3. You absolutely can build your own AI agent without incorporating an existing agent framework.

[blog] Save Tokens with TOON using Google Antigravity and the Gemini CLI. I hadn’t heard of TOON, but seems like a useful way to reduce the number of tokens you’re sending into a model.

[blog] Building AI Agents with Google Gemini 3 and Open Source Frameworks. I’m glad we worked with projects like LangChain, AI SDK, n8n, and others to make Gemini 3 great in their frameworks.

[blog] Announcing Angular v21. Check out what’s new in this mature, yet constantly improving, web framework.

[blog] From interaction to insight: Announcing BigQuery Agent Analytics for the Google ADK. This is excellent. One line of code to stream valuable agent telemetry into BigQuery for analysis.

Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:



Read the whole story
alvinashcraft
3 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Reading List 350

1 Share

This reading list is courtesy of Vivaldi browser, who pay me decent money to fight for a better web and don’t moan at me for reading all this stuff. We’ve just released Vivaldi 7.7 for desktop and mobile, with features requested by users rather than planet-burning plagiarism-filled Generative AI.

Read the whole story
alvinashcraft
3 hours ago
reply
Pennsylvania, USA
Share this story
Delete

MCP Apps: Extending servers with interactive user interfaces

1 Share

Today we’re proposing an MCP extension to standardize support for interactive user interfaces in the Model Context Protocol. This addresses one of the most requested features from the MCP community and builds on proven work from MCP-UI and OpenAI Apps SDK.

MCP Apps is an optional extension that enables servers to deliver interactive user interfaces to hosts. It introduces a standardized pattern for declaring UI resources, linking them to tools, and enabling bidirectional communication between embedded interfaces and the host application.

Example of an inline chat app with interactive UI for permission management

The SEP was authored by MCP core maintainers at OpenAI and Anthropic, together with the MCP-UI creators and lead maintainers of the MCP UI Community Working Group.

Standardization for interactive interfaces

Currently, MCP servers are limited to exchanging text and structured data with hosts. While this works well for many use cases, it creates friction when tools need to present visual information or gather complex user input.

Consider a data visualization server that returns chart data as JSON. The host application must interpret that data and render it, a burden that falls on every client implementation. Or imagine a configuration tool that needs to collect multiple related settings from users. Without UI support, these interactions become awkward exchanges of text prompts and responses.

The community has been creative in working around these limitations, but different implementations use different approaches, making it harder for servers to work consistently across hosts. With lack of standardization, there’s a real risk of fragmentation in the ecosystem.

Building together

The MCP-UI project, created by Ido Salomon and Liad Yosef and maintained by a dedicated community, spearheaded the vision of agentic apps with interactive interfaces. The project developed patterns for delivering rich user interfaces as first-class MCP resources, proving that agentic apps fit naturally within MCP’s architecture. Backed by a large community and providing rich SDKs, it drove adoption at leading companies and projects such as Postman, Shopify, HuggingFace, Goose, and ElevenLabs.

The OpenAI Apps SDK further validated the demand for rich UI experiences within conversational AI interfaces. The Apps SDK enables developers to build rich, interactive applications inside ChatGPT using MCP as its backbone. To ensure interoperability and establish consistent security and usage patterns across the ecosystem, we (Anthropic, OpenAI and MCP-UI) are collaborating to create an official MCP extension for interactive interfaces.

Example of a fullscreen app with a rich data table interface

MCP Apps specification

We’re proposing a specification for UI resources in MCP, but the implications go further. MCP Apps is starting to look like an agentic app runtime: a foundation for novel interactions between AI models, users, and applications. The proposal is intentionally lean, starting with core patterns that we plan on expanding over time.

Key design decisions

Predeclared resources

UI templates are resources with the ui:// URI scheme, then referenced in tool metadata.

// Server registers UI resource
{
  uri: "ui://charts/bar-chart",
  name: "Bar Chart Viewer",
  mimeType: "text/html+mcp"
}

// Tool references it in metadata
{
  name: "visualize_data_as_bar_chart",
  description: "Plots some data as a bar chart",
  inputSchema: {
    type: "object",
    properties: {
      series: { type: "array", items: .... }
    }
  },
  _meta: {
    "ui/resourceUri": "ui://charts/bar-chart",
  }
}

This approach enables hosts to prefetch and review templates before tool execution, improving both performance and security. It also separates static presentation (the template) from dynamic data (tool results), enabling better caching.

MCP transport for communication

Instead of inventing a custom message protocol, UI components communicate with hosts using MCP’s existing JSON-RPC base protocol over postMessage. This means:

  • UI developers can use the standard @modelcontextprotocol/sdk
  • All communication is structured and auditable
  • Future MCP features automatically work with the UI extension

Starting with HTML

The initial specification supports only text/html content, rendered in sandboxed iframes. This provides:

  • Universal browser support
  • Well-understood security model
  • Screenshot and preview generation capabilities
  • A clear baseline for future extensions

Other content types such as external URLs, remote DOM and native widgets are explicitly deferred to future iterations.

Security first

Hosting interactive content from MCP servers requires careful security consideration. The proposal addresses this through multiple layers:

  1. Iframe sandboxing: All UI content runs in sandboxed iframes with restricted permissions
  2. Predeclared templates: Hosts can review HTML content before rendering
  3. Auditable messages: All UI-to-host communication goes through loggable JSON-RPC
  4. User consent: Hosts can require explicit approval for UI-initiated tool calls

These mitigations create defense in depth against malicious servers while preserving the flexibility developers need.

Backward compatibility

MCP Apps is an optional extension. Existing implementations continue working without changes, and hosts can gradually adopt UI support at their own pace. Servers should provide text-only fallback for all UI-enabled tools and return meaningful content even when UI is unavailable, so they can serve both UI-capable and text-only hosts.

What’s next

The UI Community Working Group has been instrumental in shaping this proposal through extensive feedback and discussion. We have built an early access sdk to demonstrate the patterns & types described in the SEP. The MCP-UI client and server SDKs support these patterns.

We invite you to:

  • Review the full specification in SEP-1865
  • Share feedback and concerns in the GitHub issue
  • Join the discussion in the #ui-cwg channel on MCP Discord
  • Test prototype implementations and share your experience

Acknowledgements

This proposal wouldn’t exist without the work of the maintainers at MCP-UI, OpenAI and Anthropic.

Ido Salomon and Liad Yosef, through MCP-UI and moderation of #ui-cwg, incubated and championed many of the patterns that MCP Apps now standardizes, and together with contributors demonstrated that UI resources can be a natural part of MCP. Sean Strong, Olivier Chafik, Anton Pidkuiko and Jerome Swannack from Anthropic helped steer the initiative and drive the collaboration. Nick Cooper, Alexei Christakis, and Bryan Ashley from OpenAI have provided valuable direction from their experience building the Apps SDK.

Special thanks to the UI Community Working Group members and everyone who contributed to the discussions that shaped this proposal.

Read the whole story
alvinashcraft
3 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Adopting the MCP Bundle format (.mcpb) for portable local servers

1 Share

The MCP Bundle format (MCPB) is now part of the Model Context Protocol project. This distribution format simplifies how developers package and share local MCP servers, enabling users to install them across any compatible client, including the Claude desktop app, Claude Code, and MCP for Windows.

What are MCP Bundles?

MCP Bundles are ZIP archives containing a local MCP server and a manifest.json that describes the server and its capabilities. The format is similar to Chrome extensions (.crx) or VS Code extensions (.vsix), enabling end users to install local MCP servers with a single click.

A basic bundle structure looks like:

bundle.mcpb (ZIP file)
├── manifest.json      # Required: Bundle metadata and configuration
├── server/            # Server implementation
│   └── index.js
├── node_modules/      # Bundled dependencies
└── icon.png           # Optional: Bundle icon

The format supports servers written in Node.js, Python, or compiled binaries, giving developers flexibility in how they build their integrations, while maintaining a consistent distribution mechanism for users.

Why move MCPB to the MCP project?

Anthropic originally developed MCPB (previously called DXT) for Claude’s desktop applications. However, we believe the local MCP server ecosystem benefits when portability extends beyond any single client. By moving the bundle specification, CLI tooling, and reference implementation to the MCP project, we’re enabling:

  • Cross-client compatibility: A bundle created for one MCP-compatible application should work in any other that implements the specification. Developers can distribute their work once and reach users across the ecosystem.
  • Ecosystem-wide tooling: The mcpb CLI and associated libraries are now open for the community to extend, improve, and build upon. Client developers can adopt standardized code for loading and verifying bundles.
  • User-friendly installation: End users benefit from a consistent installation experience regardless of which AI application they prefer. Configuration variables, permissions, and updates can be handled uniformly.
  • Shared community: MCPB contributors can now collaborate in the open with the rest of the MCP community.

What this means for developers

This transition is mostly a logistical change, but also brings some benefits to implementers. For those that are building:

  • Servers: You can use MCPB to package your local MCP servers for distribution across multiple clients. The mcpb CLI helps you create a manifest.json and package your server into a .mcpb file. Once packaged, users can install your server with a single click in any client that supports MCP Bundles.
  • Clients: You can add support for MCP Bundles to your application using the open source toolchain. The repository includes the schemas and key functions used by Claude for macOS and Windows to implement bundle support, which you can adapt for your own client.

Getting started

Check out the repo to get started: modelcontextprotocol/mcpb. We encourage feedback and contributions!

Acknowledgements

Thanks to the MCP contributors and maintainers involved in making this happen, including:

Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Improving Issue discoverability and triage clarity

1 Share

Hi everyone,

We're doing a targeted clean-up of our issue labels to streamline triage and make it easier for contributors to find the right home for their work. We will also be providing clear descriptions to any existing area- labels that lack them and update others to ensure they accurately reflect how they should be used.

This cleanup is scheduled for December 5. Please share any comments, questions, or suggestions here; we’ll review everything before taking action.

What we're doing:

  • Retiring 17 legacy labels used in this repository.
  • Rehoming closed issues that had no remaining tags to appropriate areas or marking them as external when they're out of scope
  • Ensuring zero open issues remain under the retired areas; any new work will be triaged under the active, focused labels.
  • Adding descriptions to remaining labels that do not have descriptions today.
  • Updating descriptions to remaining labels that previous had descriptions to ensure accuracy.

Impact on GitHub community:

  • Faster routing and clearer expectations Contributors will spend less time guessing where an issue belongs and more time building, testing and reviewing.
  • Better signal for maintainers with fewer, more focused labels, triage queues become more predictable and reviews more timely.
  • Smoother collaboration across repositories Consolidating certain concerns under WinUI or marking them external helps align discussions with the right engineering teams.

Next Steps:

  • we'll monitor triage velocity and adjust labels as needed
  • If you spot an issue that feels misclassified after the change, please comment on the issue and we'll re-route it.

Impacted labels:

Label Reason for retirement Comment
area-AppAttach No new issues; older issues have been moved to external Previously removed
area-clipboard UWP APIs are out of scope for Windows App SDK
area-ComCtl32 No issues
area-Composition Consolidated under microsoft/microsoft-ui-xaml GitHub repository
area-DragAndDrop Consolidated under microsoft/microsoft-ui-xaml GitHub repository
area-Fonts No new issues; older issues have been moved to external Previously removed
area-Hardware Out of scope for Windows App SDK
area-Input Consolidated under microsoft/microsoft-ui-xaml GitHub repository
area-Interop Too generic
area-Media Out of scope for Windows App SDK
area-Networking No new issues; older issues have been moved to external
area-OtherFrameworks No new issues; older issues have been moved to external Previously removed
area-Printing Out of scope for Windows App SDK
area-UWP UWP is out of scope for Windows App SDK
area-Win32 Too generic
area-WinForms No new issues; older issues have been moved to external Previously removed
area-Workload No new issues; older issues have been moved to external Previously removed
Read the whole story
alvinashcraft
4 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Despite Chinese hacks, Trump’s FCC votes to scrap cybersecurity rules for phone and internet companies

1 Share
Two Trump-appointed FCC officials voted to undo the telecom industry's cybersecurity rules. One Democratic commissioner dissented, saying the decision leaves the United States "less safe" at a time when threats are increasing.
Read the whole story
alvinashcraft
15 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories