Microsoft Teams SDK Adds HTTP Server Adapter for Existing AI Agents

The Microsoft Teams SDK now provides an HTTP server adapter that allows developers to connect existing AI agents to Microsoft Teams without modifying their core code. This approach lets agents built for other platforms like Slack or LangChain run in Teams with minimal changes.
The Pattern
The core pattern involves three steps using the Teams TypeScript SDK:
import { App as TeamsApp, ExpressAdapter } from '@microsoft/teams.apps';
const adapter = new ExpressAdapter(expressApp); // 1. wrap your server
const teamsApp = new TeamsApp({ httpServerAdapter: adapter }); // 2. create the app
teamsApp.on('message', async ({ send, activity }) => {
// 3. handle messages
await send(/* your agent's response */);
});
await teamsApp.initialize(); // registers POST /api/messages on your server
The SDK injects a POST /api/messages route into your existing Express app. This is the endpoint Teams uses to deliver messages to your bot. Your server remains unchanged otherwise; the SDK just adds that one endpoint.
Scenario 1: Slack Bot Integration
If you have a Slack bot built with Bolt, you can run both Slack and Teams bots on the same Express server. The Teams SDK mounts at /api/messages while Slack uses /slack/events, allowing shared agent logic (LLM calls, database lookups, business rules) to live in plain functions that both handlers call.
Scenario 2: LangChain Integration
For existing LangChain chains, you can create a bridge file that imports your chain and connects it to Teams. The Teams message handler can invoke your LangChain chain and return responses to Teams users.
The SDK handles verification of incoming requests to ensure they're legitimately from Teams before invoking your handler, and automatically routes messages to the correct event handlers.
📖 Read the full source: HN AI Agents
👀 See Also
Claude Code v2.1.251: Model Switch Hooks, Spend Limit Bar, and Security Fixes
Claude Code v2.1.251 adds PreModelSwitch/PostModelSwitch hooks, live subagent streaming to Remote Control, a Spend limit bar in /usage, and fixes symlink and path-traversal vulnerabilities.

SIDJUA v0.9.7: Open Source Multi-Agent AI with Pre-Action Governance Enforcement
SIDJUA v0.9.7 is a self-hosted, open source multi-agent AI framework that enforces governance rules before agents act, blocking unauthorized actions like budget overruns or scope violations. It supports multiple LLM providers, runs on 4GB RAM, and includes a desktop GUI built with Tauri v2.

State of Local Deep Research Tools: GPT Researcher and Local Deep Research Lead, STORM and LangChain Projects Stagnant
A Reddit survey of local deep research projects as of May 2026 finds GPT Researcher and LearningCircuit's Local Deep Research most active; STORM and LangChain's Open Deep Research abandoned or semi-abandoned.
Mergetrain: A Local Merge Queue for Parallel Claude Code Sessions That Prevents Trampled Pushes
Mergetrain is a local merge queue that prevents parallel Claude Code sessions from trampling each other's pushes. It uses worktrees, a pre-push hook, and a single runner that assembles branches into a train, runs tests, then atomically pushes.