Two MCP stdio servers in .NET 10: Microsoft Teams (teams, channels, chats, messages, search) via Microsoft Graph, and Azure DevOps (work items, pull requests, pipelines, repos, search) via its REST API. Interactive Entra ID sign-in instead of PATs; read-only by default with opt-in write and send gates.
MCPpedia last refreshed this data
MCP Dotnet is an MCP server that two MCP stdio servers in .NET 10: Microsoft Teams (teams, channels, chats, messages, search) via Microsoft Graph, and Azure DevOps (work items, pull requests, pipelines, repos, search) via its REST API. Interactive Entra ID sign-in instead of PATs; read-only by default with opt-in write and send gates. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 42/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"teams": {
"env": {
"TEAMS_MCP_CLIENT_ID": "11111111-1111-1111-1111-111111111111",
"TEAMS_MCP_TENANT_ID": "00000000-0000-0000-0000-000000000000",
"TEAMS_MCP_ALLOW_SEND": "true"
},
"type": "stdio",
"command": "teams-mcp"
},
"azuredevops": {
"env": {
"ADO_MCP_ORG_URL": "https://dev.azure.com/contoso",
"ADO_MCP_PROJECT": "Core",
"ADO_MCP_CLIENT_ID": "22222222-2222-2222-2222-222222222222",
"ADO_MCP_TENANT_ID": "00000000-0000-0000-0000-000000000000",
"ADO_MCP_ALLOW_WRITE": "true"
},
"type": "stdio",
"command": "ado-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Two MCP stdio servers on .NET 10. Both are built on the official ModelContextProtocol C# SDK and sign in to Entra ID through Azure.Identity.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in developer-tools / cloud
Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
XcodeBuildMCP provides tools for Xcode project management, simulator management, and app utilities.
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
MCP Security Weekly
Get CVE alerts and security updates for Mcp Dotnet and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Two MCP stdio servers on .NET 10. Both are built on the official ModelContextProtocol C# SDK and sign in to Entra ID through Azure.Identity.
teams-mcp): Microsoft Teams via Microsoft Graph. Read teams, channels, chats and
messages, search, wait for new messages, and send behind an opt-in gate.ado-mcp): projects, repositories, pull requests, work items, pipelines and
search (code, work items, wiki) via the REST API, plus gated work item writes and pull request
comments.Each server works on its own, so install only the one you need. Design documentation is in
docs/. Everything from here to Teams server is what it takes to get
running.
Four steps. You need the .NET 10 SDK and an Entra ID app registration in your own tenant. App registrations says what it has to be. There is no way around that step, because the servers sign in as you against your own organization. There is no shared id to hand out.
1. Install the servers from nuget.org. This puts teams-mcp and ado-mcp on your PATH.
dotnet tool install --global JasonBright.Mcp.Teams
dotnet tool install --global JasonBright.Mcp.AzureDevOps
2. Point them at your tenant. Nothing here is secret. Tenant and client ids are public OAuth identifiers. Set them at user scope and every client picks them up, because an MCP server is a child process of the client that launches it.
[Environment]::SetEnvironmentVariable('TEAMS_MCP_TENANT_ID', '<tenant-guid>', 'User')
[Environment]::SetEnvironmentVariable('TEAMS_MCP_CLIENT_ID', '<app-guid>', 'User')
[Environment]::SetEnvironmentVariable('ADO_MCP_TENANT_ID', '<tenant-guid>', 'User')
[Environment]::SetEnvironmentVariable('ADO_MCP_CLIENT_ID', '<app-guid>', 'User')
[Environment]::SetEnvironmentVariable('ADO_MCP_ORG_URL', 'https://dev.azure.com/contoso', 'User')
[Environment]::SetEnvironmentVariable('ADO_MCP_PROJECT', 'Core', 'User')
On Linux and macOS these are export lines in your shell profile. Terminals that are already open
keep the old values, so start a new one.
Both servers are read-only until you also set a gate. See Enabling writes. Every other variable has a default, and each server's section below lists them.
3. Install the plugin in Claude Code. It registers both servers and brings three skills that
use them (teams-message, teams-watcher, mcp-reauth).
/plugin marketplace add jgbright/mcp-dotnet
/plugin install mcp-dotnet@mcp-dotnet
On VS Code or Cursor, or if you would rather keep the config in one repository, write it yourself.
See a .mcp.json by hand. You can also have the server write it for you with
teams-mcp install or ado-mcp install. See
Registering a server in a repository.
4. Sign in once, then check it. Sign-in is interactive and console-only. The server itself never prompts, because it has nowhere to prompt over stdio.
teams-mcp auth # device-code sign-in, once per machine
teams-mcp selftest # silent-auth path plus one real Graph call, raw errors on the console
ado-mcp auth
ado-mcp selftest
Restart the MCP client and the tools are there. If something is wrong, run selftest first. It
tells you whether the problem is sign-in or the tool.
call invokes one tool per run without an MCP client on the other end — the server is the real
one, driven over in-memory pipes, so a call that works here works under MCP too. The result JSON
is the only thing on stdout (logs go to stderr and the log file), and a tool error exits non-zero,
so the output pipes cleanly into ConvertFrom-Json or jq.
ado-mcp call
... [View full README on GitHub](https://github.com/jgbright/mcp-dotnet#readme)