Edward Irby

Build Teams.ai Apps with Anthropic Claude

Developmentv1.1.0
By Edward IrbyUpdated 2026-05-112 versions · latest released 2026-02-01teams-anthropic-integration@clawhub_edwardirby/teams-anthropic-integration
Code GenerationBackend#Web Search

According to AlphaMoat, as of 2026-09, Build Teams.ai Apps with Anthropic Claude has 2,973 downloads and 1 stars — ranked #3,750 of 5,078 AI skills overall, and #475 of 577 in Development.

Installs
188
Downloads
3.0K
Stars
1
Overall Rank
#3,750
Top 74% overall · Top 83% in Development
PlatformInstallsDownloadsStarsComments
ClawHub ↗882.8K1-
SkillHub ↗1883.0K1—

Platforms count differently and update at different times.

What this skill does

Uses @youdotcom-oss/teams-anthropic to configure Claude chat, streaming, function calls and conversation memory in new or existing Teams.ai apps. Add the You.com MCP branch and its dependencies only when web search and content extraction are needed.

Profile published 2026-10-26

What you can do with it

  • Configure Claude conversations in a Teams app

When to use it

  • When building or extending a Teams.ai application

Example prompts

Generated from the skill’s documentation as examples; not results of actual runs.

Add Claude to this existing Teams.ai app using the basic path without search

Requirements

Compiled from what the skill’s documentation declares; not verified by installing or running it.

Authentication notes
The basic path needs ANTHROPIC_API_KEY; the You.com MCP branch additionally needs YDC_API_KEY.
Configuration
  • Requires Node.js 18 or later and Teams.ai packages. Only the search branch adds @microsoft/teams.mcpclient and getYouMcpConfig().

Monthly Trend

Downloads3.0K
1.9K2.5K3.1K2026-03 · Downloads 2.0K2026-05 · Downloads 2.2K2026-06 · Downloads 2.3K2026-07 · Downloads 2.5K2026-08 · Downloads 2.7K2026-09 · Downloads 3.0K26-0326-09
Stars1
0122026-03 · Stars 12026-05 · Stars 12026-06 · Stars 12026-07 · Stars 12026-08 · Stars 12026-09 · Stars 126-0326-09

The counting method changed in 2026-09: skills with the same name are now counted separately by author, and the full catalog is covered. Dashed lines show months before the change; they are not compared with later months, and no growth is computed across the change.

MonthDownloadsMoMStars
2026-093.0K—1
2026-082.7K+7.4%1
2026-072.5K+7.1%1
2026-062.3K+4.9%1
2026-052.2K—1
2026-032.0K—1

SKILL.md (original)

The author’s original file, shown as plain text without edits or review by AlphaMoat. Links are not clickable; check commands before running them. Fetched 2026-10-23.

11 KB · ClawHub v1.1.0
---
name: teams-anthropic-integration
description: Use @youdotcom-oss/teams-anthropic to add Anthropic Claude models (Opus, Sonnet, Haiku) to Microsoft Teams.ai applications. Optionally integrate You.com MCP server for web search and content extraction.
license: MIT
compatibility: Node.js 18+, @microsoft/teams.ai
metadata:
  author: youdotcom-oss
  category: enterprise-integration
  version: "1.1.0"
  keywords: microsoft-teams,teams-ai,anthropic,claude,mcp,you.com,web-search,content-extraction
Show all (419 lines)
---

# Build Teams.ai Apps with Anthropic Claude

Use `@youdotcom-oss/teams-anthropic` to add Claude models (Opus, Sonnet, Haiku) to Microsoft Teams.ai applications. Optionally integrate You.com MCP server for web search and content extraction.

## Choose Your Path

**Path A: Basic Setup** (Recommended for getting started)
- Use Anthropic Claude models in Teams.ai
- Chat, streaming, function calling
- No additional dependencies

**Path B: With You.com MCP** (For web search capabilities)
- Everything in Path A
- Web search and content extraction via You.com
- Real-time information access

## Decision Point

**Ask: Do you need web search and content extraction in your Teams app?**

- **NO** → Use **Path A: Basic Setup** (simpler, faster)
- **YES** → Use **Path B: With You.com MCP**

---

## Path A: Basic Setup

Use Anthropic Claude models in your Teams.ai app without additional dependencies.

### A1. Install Package

```bash
npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai
```

### A2. Get Anthropic API Key

Get your API key from [console.anthropic.com](https://console.anthropic.com/)

```bash
# Add to .env
ANTHROPIC_API_KEY=your-anthropic-api-key
```

### A3. Ask: New or Existing App?

- **New Teams app**: Use entire template below
- **Existing app**: Add Claude model to existing setup

### A4. Basic Template

**For NEW Apps:**

```typescript
import { App } from '@microsoft/teams.apps';
import { AnthropicChatModel, AnthropicModel } from '@youdotcom-oss/teams-anthropic';

if (!process.env.ANTHROPIC_API_KEY) {
  throw new Error('ANTHROPIC_API_KEY environment variable is required');
}

const model = new AnthropicChatModel({
  model: AnthropicModel.CLAUDE_SONNET_4_5,
  apiKey: process.env.ANTHROPIC_API_KEY,
  requestOptions: {
    max_tokens: 2048,
    temperature: 0.7,
  },
});

const app = new App();

app.on('message', async ({ send, activity }) => {
  await send({ type: 'typing' });

  const response = await model.send(
    { role: 'user', content: activity.text }
  );

  if (response.content) {
    await send(response.content);
  }
});

app.start().catch(console.error);
```

**For EXISTING Apps:**

Add to your existing imports:
```typescript
import { AnthropicChatModel, AnthropicModel } from '@youdotcom-oss/teams-anthropic';
```

Replace your existing model:
```typescript
const model = new AnthropicChatModel({
  model: AnthropicModel.CLAUDE_SONNET_4_5,
  apiKey: process.env.ANTHROPIC_API_KEY,
});
```

### A5. Choose Your Model

```typescript
// Most capable - best for complex tasks
AnthropicModel.CLAUDE_OPUS_4_5

// Balanced intelligence and speed (recommended)
AnthropicModel.CLAUDE_SONNET_4_5

// Fast and efficient
AnthropicModel.CLAUDE_HAIKU_3_5
```

### A6. Test Basic Setup

```bash
npm start
```

Send a message in Teams to verify Claude responds.

---

## Path B: With You.com MCP

Add web search and content extraction to your Claude-powered Teams app.

### B1. Install Packages

```bash
npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai @microsoft/teams.mcpclient
```

### B2. Get API Keys

- **Anthropic API key**: [console.anthropic.com](https://console.anthropic.com/)
- **You.com API key**: [you.com/platform/api-keys](https://you.com/platform/api-keys)

```bash
# Add to .env
ANTHROPIC_API_KEY=your-anthropic-api-key
YDC_API_KEY=your-you-com-api-key
```

### B3. Ask: New or Existing App?

- **New Teams app**: Use entire template below
- **Existing app**: Add MCP to existing Claude setup

### B4. MCP Template

**For NEW Apps:**

```typescript
import { App } from '@microsoft/teams.apps';
import { ChatPrompt } from '@microsoft/teams.ai';
import { ConsoleLogger } from '@microsoft/teams.common';
import { McpClientPlugin } from '@microsoft/teams.mcpclient';
import {
  AnthropicChatModel,
  AnthropicModel,
  getYouMcpConfig,
} from '@youdotcom-oss/teams-anthropic';

// Validate environment
if (!process.env.ANTHROPIC_API_KEY) {
  throw new Error('ANTHROPIC_API_KEY environment variable is required');
}

if (!process.env.YDC_API_KEY) {
  throw new Error('YDC_API_KEY environment variable is required');
}

// Configure logger
const logger = new ConsoleLogger('mcp-client', { level: 'info' });

// Create prompt with MCP integration
const prompt = new ChatPrompt(
  {
    instructions: 'You are a helpful assistant with access to web search and content extraction. Use these tools to provide accurate, up-to-date information.',
    model: new AnthropicChatModel({
      model: AnthropicModel.CLAUDE_SONNET_4_5,
      apiKey: process.env.ANTHROPIC_API_KEY,
      requestOptions: {
        max_tokens: 2048,
      },
    }),
  },
  [new McpClientPlugin({ logger })],
).usePlugin('mcpClient', getYouMcpConfig());

const app = new App();

app.on('message', async ({ send, activity }) => {
  await send({ type: 'typing' });

  const result = await prompt.send(activity.text);
  if (result.content) {
    await send(result.content);
  }
});

app.start().catch(console.error);
```

**For EXISTING Apps with Claude:**

If you already have Path A setup, add MCP integration:

1. **Install MCP dependencies:**
   ```bash
   npm install @microsoft/teams.mcpclient
   ```

2. **Add imports:**
   ```typescript
   import { ChatPrompt } from '@microsoft/teams.ai';
   import { ConsoleLogger } from '@microsoft/teams.common';
   import { McpClientPlugin } from '@microsoft/teams.mcpclient';
   import { getYouMcpConfig } from '@youdotcom-oss/teams-anthropic';
   ```

3. **Validate You.com API key:**
   ```typescript
   if (!process.env.YDC_API_KEY) {
     throw new Error('YDC_API_KEY environment variable is required');
   }
   ```

4. **Replace model with ChatPrompt:**
   ```typescript
   const logger = new ConsoleLogger('mcp-client', { level: 'info' });

   const prompt = new ChatPrompt(
     {
       instructions: 'Your instructions here',
       model: new AnthropicChatModel({
         model: AnthropicModel.CLAUDE_SONNET_4_5,
         apiKey: process.env.ANTHROPIC_API_KEY,
       }),
     },
     [new McpClientPlugin({ logger })],
   ).usePlugin('mcpClient', getYouMcpConfig());
   ```

5. **Use prompt.send() instead of model.send():**
   ```typescript
   const result = await prompt.send(activity.text);
   ```

### B5. Test MCP Integration

```bash
npm start
```

Ask Claude a question that requires web search:
- "What are the latest developments in AI?"
- "Search for React documentation"
- "Extract content from https://example.com"

---

## Available Claude Models

| Model | Enum | Best For |
|-------|------|----------|
| Claude Opus 4.5 | `AnthropicModel.CLAUDE_OPUS_4_5` | Complex tasks, highest capability |
| Claude Sonnet 4.5 | `AnthropicModel.CLAUDE_SONNET_4_5` | Balanced intelligence and speed (recommended) |
| Claude Haiku 3.5 | `AnthropicModel.CLAUDE_HAIKU_3_5` | Fast responses, efficiency |
| Claude Sonnet 3.5 | `AnthropicModel.CLAUDE_SONNET_3_5` | Previous generation, stable |

## Advanced Features

### Streaming Responses

```typescript
const response = await model.send(
  { role: 'user', content: 'Write a short story' },
  {
    onChunk: async (delta) => {
      // Stream each token as it arrives
      process.stdout.write(delta);
    },
  }
);
```

### Function Calling

```typescript
const response = await model.send(
  { role: 'user', content: 'What is the weather in San Francisco?' },
  {
    functions: {
      get_weather: {
        description: 'Get the current weather for a location',
        parameters: {
          location: { type: 'string', description: 'City name' },
        },
        handler: async (args: { location: string }) => {
          // Your API call here
          return { temperature: 72, conditions: 'Sunny' };
        },
      },
    },
  }
);
```

### Conversation Memory

```typescript
import { LocalMemory } from '@microsoft/teams.ai';

const memory = new LocalMemory();

// First message
await model.send(
  { role: 'user', content: 'My name is Alice' },
  { messages: memory }
);

// Second message - Claude remembers
const response = await model.send(
  { role: 'user', content: 'What is my name?' },
  { messages: memory }
);
// Response: "Your name is Alice."
```

## Validation Checklist

### Path A Checklist

- [ ] Package installed: `@youdotcom-oss/teams-anthropic`
- [ ] Environment variable set: `ANTHROPIC_API_KEY`
- [ ] Model configured with `AnthropicChatModel`
- [ ] Model selection chosen (Opus/Sonnet/Haiku)
- [ ] App tested with basic messages

### Path B Checklist

- [ ] All Path A items completed
- [ ] Additional package installed: `@microsoft/teams.mcpclient`
- [ ] Environment variable set: `YDC_API_KEY`
- [ ] Logger configured
- [ ] ChatPrompt configured with `getYouMcpConfig()`
- [ ] App tested with web search queries

## Common Issues

### Path A Issues

**"Cannot find module @youdotcom-oss/teams-anthropic"**
```bash
npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk
```

**"ANTHROPIC_API_KEY environment variable is required"**
- Get key from: https://console.anthropic.com/
- Add to .env: `ANTHROPIC_API_KEY=your-key-here`

**"Invalid model identifier"**
- Use enum: `AnthropicModel.CLAUDE_SONNET_4_5`
- Don't use string: `'claude-sonnet-4-5-20250929'`

### Path B Issues

**"YDC_API_KEY environment variable is required"**
- Get key from: https://you.com/platform/api-keys
- Add to .env: `YDC_API_KEY=your-key-here`

**"MCP connection fails"**
- Verify API key is valid at https://you.com/platform/api-keys
- Check network connectivity
- Review logger output for details

**"Cannot find module @microsoft/teams.mcpclient"**
```bash
npm install @microsoft/teams.mcpclient
```

## getYouMcpConfig() Utility

Automatically configures You.com MCP connection:
- **URL**: `https://api.you.com/mcp`
- **Authentication**: Bearer token from `YDC_API_KEY`
- **User-Agent**: Includes package version for telemetry

```typescript
// Option 1: Use environment variable (recommended)
getYouMcpConfig()

// Option 2: Custom API key
getYouMcpConfig({ apiKey: 'your-custom-key' })
```

## Resources

* **Package**: https://github.com/youdotcom-oss/dx-toolkit/tree/main/packages/teams-anthropic
* **You.com MCP**: https://documentation.you.com/developer-resources/mcp-server
* **Anthropic API**: https://console.anthropic.com/
* **You.com API Keys**: https://you.com/platform/api-keys

Popular in Development

GithubDevelopment

Interact with GitHub using the gh CLI. Use gh issue, gh pr, gh run, and gh api for issues, PRs, CI runs, and advanced queries.

↓ 386.6K★ 708Peter Steinberger
Multi Search EngineDevelopment

Multi search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...

↓ 162.1K★ 763g_pyAng
McporterDevelopment

Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.

↓ 80.3K★ 204Peter Steinberger
Mermaid DiagramDevelopment

Generate valid Mermaid diagrams like flowcharts, sequence diagrams, mind maps, ER diagrams, or user journeys from text or product descriptions.

↓ 73.4K★ 59pupujanet-eng
YouTubeDevelopment

YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the maton CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a YouTube connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a YouTube action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with YouTube examples; they add no YouTube capability - YouTube is not an event source, a trigger cannot read YouTube data, and the files under references/<source>/triggers.md are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).

↓ 61.6K★ 145byungkyu
GitHubDevelopment

GitHub API integration with managed OAuth. Access repositories, issues, pull requests, commits, branches, and users. Use this skill when users want to interact with GitHub repositories, manage issues and PRs, search code, or automate workflows. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the maton CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a GitHub connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a GitHub action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with GitHub examples; they add no GitHub capability - GitHub is itself an event source, so its own events are in references/github/triggers.md, and the files under references/<source>/triggers.md are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).

↓ 38.2K★ 53byungkyu
CodeDevelopment

A coding workflow skill covering planning, implementation, verification, and testing.

↓ 36.8K★ 66Iván
Docker EssentialsDevelopment

Essential Docker commands and workflows for container management, image operations, and debugging.

↓ 36.6K★ 42Arnarsson

Data month: 2026-09 · Downloads, stars and installs are aggregated monthly from public skill registries (ClawHub, SkillHub). See methodology.