teams-anthropic-integration
Use @youdotcom-oss/teams-anthropic to add Anthropic Claude models (Opus, Sonnet, Haiku) to Microsoft Teams.ai applica.
Installation
npx clawhub@latest install teams-anthropic-integrationView the full skill documentation and source below.
Documentation
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
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]()
# 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:
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:
import { AnthropicChatModel, AnthropicModel } from '@youdotcom-oss/teams-anthropic';
Replace your existing model:
const model = new AnthropicChatModel({
model: AnthropicModel.CLAUDE_SONNET_4_5,
apiKey: process.env.ANTHROPIC_API_KEY,
});
A5. Choose Your Model
// 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
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
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]()
- You.com API key: [you.com/platform/api-keys]()
# 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:
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:
npm install @microsoft/teams.mcpclient
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';
if (!process.env.YDC_API_KEY) {
throw new Error('YDC_API_KEY environment variable is required');
}
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());
const result = await prompt.send(activity.text);
B5. Test MCP Integration
npm start
Ask Claude a question that requires web search:
- "What are the latest developments in AI?"
- "Search for React documentation"
- "Extract content from "
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
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
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
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"
npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk
"ANTHROPIC_API_KEY environment variable is required"
- Get key from:
- 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:
- Add to .env:
YDC_API_KEY=your-key-here
"MCP connection fails"
- Verify API key is valid at
- Check network connectivity
- Review logger output for details
"Cannot find module @microsoft/teams.mcpclient"
npm install @microsoft/teams.mcpclient
getYouMcpConfig() Utility
Automatically configures You.com MCP connection:
- URL:
- **Authentication**: Bearer token fromYDC_API_KEY` - User-Agent: Includes package version for telemetry
// Option 1: Use environment variable (recommended)
getYouMcpConfig()
// Option 2: Custom API key
getYouMcpConfig({ apiKey: 'your-custom-key' })
Resources
- Package:
- You.com MCP:
- Anthropic API:
- You.com API Keys: