> ## Documentation Index
> Fetch the complete documentation index at: https://si.easyaf.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# IMcpServerBuilder

> Extension methods for IMcpServerBuilder from ModelContextProtocol

## Definition

**Assembly:** ModelContextProtocol.dll

**Namespace:** Microsoft.Extensions.DependencyInjection

## Syntax

```csharp theme={"dark"}
Microsoft.Extensions.DependencyInjection.IMcpServerBuilder
```

## Summary

This type is defined in ModelContextProtocol.

## Methods

### &#x20;WithCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_McpServerBuilderExtensions`

Enables MCP Tasks backed by [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithCosmosTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, string userId, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;WithCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_McpServerBuilderExtensions`

Enables MCP Tasks backed by [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithCosmosTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_McpServerBuilderExtensions`

Enables MCP Tasks backed by [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md), resolving the user from a principal.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithCosmosTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithCosmosTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Cosmos_McpServerBuilderExtensions`

Enables MCP Tasks backed by [CosmosMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Cosmos/Tasks/CosmosMcpTaskStore.md),
resolving the user from services already registered in the built [IServiceProvider](https://learn.microsoft.com/dotnet/api/system.iserviceprovider).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithCosmosTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. ASP.NET Core hosts call |
| `AddHttpContextAccessor()` and pass | | |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Cosmos.Tasks.CosmosMcpTaskStoreOptions>?` | Optional store options (TTL, database and container ids). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_McpServerBuilderExtensions`

Enables MCP Tasks backed by [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, string userId, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;WithPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_McpServerBuilderExtensions`

Enables MCP Tasks backed by [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_McpServerBuilderExtensions`

Enables MCP Tasks backed by [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md),
resolving the user from a [ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithPostgreSqlTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_PostgreSQL_McpServerBuilderExtensions`

Enables MCP Tasks backed by [PostgreSqlMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/PostgreSQL/Tasks/PostgreSqlMcpTaskStore.md),
resolving the user from services already registered in the built [IServiceProvider](https://learn.microsoft.com/dotnet/api/system.iserviceprovider).
Register `NpgsqlDataSource` as a singleton first.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithPostgreSqlTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. ASP.NET Core hosts call |
| `AddHttpContextAccessor()` and pass | | |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.PostgreSQL.Tasks.PostgreSqlMcpTaskStoreOptions>?` | Optional store options (TTL, table, listen channel). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options. |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_McpServerBuilderExtensions`

Enables MCP Tasks backed by [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithRedisTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, string userId, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;WithRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_McpServerBuilderExtensions`

Enables MCP Tasks backed by [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithRedisTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_McpServerBuilderExtensions`

Enables MCP Tasks backed by [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md),
resolving the user from a [ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithRedisTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithRedisTasks Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Redis_McpServerBuilderExtensions`

Enables MCP Tasks backed by [RedisMcpTaskStore](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Redis/Tasks/RedisMcpTaskStore.md),
resolving the user from services already registered in the built [IServiceProvider](https://learn.microsoft.com/dotnet/api/system.iserviceprovider).
Register `IConnectionMultiplexer` as a singleton first.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithRedisTasks(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. ASP.NET Core hosts call |
| `AddHttpContextAccessor()` and pass | | |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Redis.Tasks.RedisMcpTaskStoreOptions>?` | Optional store options (TTL, key prefix, replica wait). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

#### Examples

```csharp theme={"dark"}
builder.Services.AddHttpContextAccessor();
builder.Services.AddSingleton&lt;IConnectionMultiplexer&gt;(
    _ =&gt; ConnectionMultiplexer.Connect(connectionString));
builder.Services.AddMcpServer()
    .WithHttpTransport()
    .WithRedisTasks(
        sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User,
        o =&gt; o.DefaultTimeToLive = TimeSpan.FromMinutes(5));
```

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_McpServerBuilderExtensions`

Enables MCP Tasks and selects a plus store provider.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreBuilder> configure, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreBuilder>` | Selects `UseInMemory` or a provider `Use*` method. |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *configure* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `InvalidOperationException` | Thrown when *configure* did not call a `Use*` method. |

#### Examples

```csharp theme={"dark"}
builder.Services.AddMcpServer()
    .WithHttpTransport()
    .WithTasksPlus(tasks =&gt; tasks.UseInMemory("local-user"));
```

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_McpServerBuilderExtensions`

Enables MCP Tasks backed by [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md) for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, string userId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_McpServerBuilderExtensions`

Enables MCP Tasks backed by [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_McpServerBuilderExtensions`

Enables MCP Tasks backed by [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md), resolving the user from a [ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Invoked on each client-facing task operation. |
| Use the [McpTasksOptions})](https://learn.microsoft.com/dotnet/api/microsoft.extensions.dependencyinjection.mcpessentials_core_mcpserverbuilderextensions.withtasksplus\(microsoft.extensions.dependencyinjection.imcpserverbuilder,system.func\{system.iserviceprovider,system.security.claims.claimsprincipal},system.action\{cloudnimble.mcpessentials.core.tasks.mcptaskstoreoptions},system.action\{modelcontextprotocol.extensions.tasks.mcptasksoptions}\)) | | |
| overload when the principal comes from DI. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_Core_McpServerBuilderExtensions`

Enables MCP Tasks backed by [InMemoryMcpTaskStorePlus](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/Core/Tasks/InMemoryMcpTaskStorePlus.md), resolving the
user from services already registered in the built [IServiceProvider](https://learn.microsoft.com/dotnet/api/system.iserviceprovider).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null)
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. Invoked on each client-facing task operation. |
| ASP.NET Core hosts call `AddHttpContextAccessor()` and pass | | |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.Core.Tasks.McpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

#### Examples

```csharp theme={"dark"}
builder.Services.AddHttpContextAccessor();
builder.Services.AddMcpServer()
    .WithHttpTransport()
    .WithTasksPlus(
        sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User,
        o =&gt; o.DefaultTimeToLive = TimeSpan.FromMinutes(5));
```

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_McpServerBuilderExtensions`

Enables MCP Tasks backed by `EFCoreMcpTaskStore`1\` for a single user.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus<TContext>(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, string userId, System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `userId` | `string` | The owner stamped on every task this process creates. |
| `configure` | `System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |
| `ArgumentException` | Thrown when *userId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) or whitespace. |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_McpServerBuilderExtensions`

Enables MCP Tasks backed by `EFCoreMcpTaskStore`1\`.

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus<TContext>(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<string> getCurrentUserId, System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getCurrentUserId` | `System.Func<string?>` | Returns the current user identifier, or [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when unauthenticated. |
| `configure` | `System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getCurrentUserId* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_McpServerBuilderExtensions`

Enables MCP Tasks backed by `EFCoreMcpTaskStore`1\`,
resolving the user from a [ClaimsPrincipal](https://learn.microsoft.com/dotnet/api/system.security.claims.claimsprincipal).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus<TContext>(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. |
| `configure` | `System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

### &#x20;WithTasksPlus Extension

> [!NOTE]
>
> Extension method from `Microsoft.Extensions.DependencyInjection.McpEssentials_EntityFrameworkCore_McpServerBuilderExtensions`

Enables MCP Tasks backed by `EFCoreMcpTaskStore`1\`,
resolving the user from services already registered in the built [IServiceProvider](https://learn.microsoft.com/dotnet/api/system.iserviceprovider).

#### Syntax

```csharp theme={"dark"}
public static Microsoft.Extensions.DependencyInjection.IMcpServerBuilder WithTasksPlus<TContext>(Microsoft.Extensions.DependencyInjection.IMcpServerBuilder builder, System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal> getPrincipal, System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions> configure = null, System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions> configureTasks = null) where TContext : Microsoft.EntityFrameworkCore.DbContext
```

#### Parameters

| Name | Type | Description |
| - | - | - |
| `builder` | `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder` | The MCP server builder. |
| `getPrincipal` | `System.Func<System.IServiceProvider, System.Security.Claims.ClaimsPrincipal?>` | Returns the principal for the current request. ASP.NET Core hosts call |
| `AddHttpContextAccessor()` and pass | | |
| `sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User`. | | |
| `configure` | `System.Action<CloudNimble.McpEssentials.EntityFrameworkCore.Tasks.EFCoreMcpTaskStoreOptions>?` | Optional store options (TTL, poll interval). |
| `configureTasks` | `System.Action<ModelContextProtocol.Extensions.Tasks.McpTasksOptions>?` | Optional SDK Tasks options (execution-mode selector, and so on). |

#### Returns

Type: `Microsoft.Extensions.DependencyInjection.IMcpServerBuilder`
The server builder.

#### Type Parameters

* `TContext` - The host [DbContext](https://learn.microsoft.com/dotnet/api/microsoft.entityframeworkcore.dbcontext) that maps [McpTaskEntity](https://si.easyaf.dev/mcpessentials/api-reference/CloudNimble/McpEssentials/EntityFrameworkCore/Tasks/McpTaskEntity.md).

#### Exceptions

| Exception | Description |
| - | - |
| `ArgumentNullException` | Thrown when *builder* or *getPrincipal* is [`null`](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null). |

#### Examples

```csharp theme={"dark"}
builder.Services.AddHttpContextAccessor();
builder.Services.AddDbContext&lt;AppDbContext&gt;(o =&gt; o.UseSqlServer(connectionString));
builder.Services.AddMcpServer()
    .WithHttpTransport()
    .WithTasksPlus(tasks =&gt; tasks.UseEntityFramework&lt;AppDbContext&gt;(
        sp =&gt; sp.GetRequiredService&lt;IHttpContextAccessor&gt;().HttpContext?.User));
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.