Definition
Assembly: Microsoft.OData.Mcp.Core.dll Namespace: Microsoft.OData.Mcp.Core.Tools Inheritance: System.ObjectSyntax
Summary
Factory for creating MCP tools dynamically from OData metadata.Remarks
This factory generates MCP tools based on the parsed OData model, creating tools for CRUD operations, queries, and navigation between entities. The tools are generated dynamically to match the structure and capabilities of the OData service.Constructors
.ctor
Initializes a new instance of the McpToolFactory class.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
logger | Microsoft.Extensions.Logging.ILogger<Microsoft.OData.Mcp.Core.Tools.McpToolFactory> | The logger instance. |
httpClientFactory | System.Net.Http.IHttpClientFactory | The HTTP client factory for OData requests. |
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when logger or httpClientFactory is null. |
.ctor Inherited
Inherited from
objectSyntax
Methods
BuildDefaultSelectForEntityType
Builds a default $select statement for an entity type, excluding binary and stream fields.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
entityType | Microsoft.OData.Mcp.Core.Models.EdmEntityType | The entity type to build the select for. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | The generation options. |
Returns
Type:string?
A comma-separated list of property names to select, or null if all properties should be included.
Equals Inherited Virtual
Inherited from
objectSyntax
Parameters
| Name | Type | Description |
|---|---|---|
obj | object? | - |
Returns
Type:bool
Equals Inherited
Inherited from
objectSyntax
Parameters
| Name | Type | Description |
|---|---|---|
objA | object? | - |
objB | object? | - |
Returns
Type:bool
FilterToolsForUser
Filters tools based on user authorization context.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
tools | System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition> | The tools to filter. |
userScopes | System.Collections.Generic.IEnumerable<string> | The user’s OAuth2 scopes. |
userRoles | System.Collections.Generic.IEnumerable<string> | The user’s roles. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for authorization filtering. |
Returns
Type:System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>
A collection of tools the user is authorized to access.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when tools is null. |
GenerateCrudToolsAsync
Generates CRUD operation tools for a specific entity type.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
entityType | Microsoft.OData.Mcp.Core.Models.EdmEntityType | The entity type to generate CRUD tools for. |
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The complete OData model for context. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of CRUD tool definitions.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when entityType or model is null. |
GenerateEntitySetToolsAsync
Generates tools for entity set operations (collection-level operations).Syntax
Parameters
| Name | Type | Description |
|---|---|---|
entitySet | Microsoft.OData.Mcp.Core.Models.EdmEntitySet | The entity set to generate tools for. |
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The complete OData model for context. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of entity set tool definitions.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when entitySet or model is null. |
GenerateEntityToolsAsync
Generates MCP tools for a specific entity type.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
entityType | Microsoft.OData.Mcp.Core.Models.EdmEntityType | The entity type to generate tools for. |
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The complete OData model for context. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of generated MCP tool definitions for the entity type.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when entityType or model is null. |
GenerateNavigationToolsAsync
Generates navigation tools for entity relationships.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
entityType | Microsoft.OData.Mcp.Core.Models.EdmEntityType | The entity type to generate navigation tools for. |
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The complete OData model for context. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of navigation tool definitions.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when entityType or model is null. |
GenerateQueryToolsAsync
Generates query tools for the OData model.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The OData model to generate query tools for. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of query tool definitions.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when model is null. |
GenerateToolsAsync
Generates all MCP tools for the specified OData model.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
model | Microsoft.OData.Mcp.Core.Models.EdmModel | The OData model to generate tools for. |
options | Microsoft.OData.Mcp.Core.Tools.McpToolGenerationOptions? | Options for tool generation. |
Returns
Type:System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition>>
A collection of generated MCP tool definitions.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when model is null. |
GetAvailableToolNames
Gets all available tool names.Syntax
Returns
Type:System.Collections.Generic.IEnumerable<string>
A collection of all tool names that have been generated.
GetHashCode Inherited Virtual
Inherited from
objectSyntax
Returns
Type:int
GetTool
Gets the tool definition by name.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
toolName | string | The name of the tool to retrieve. |
Returns
Type:Microsoft.OData.Mcp.Core.Tools.McpToolDefinition?
The tool definition if found; otherwise, null.
GetType Inherited
Inherited from
objectSyntax
Returns
Type:System.Type
IsBinaryOrStreamField
Determines if a property is a binary or stream field that should be excluded by default.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
property | Microsoft.OData.Mcp.Core.Models.EdmProperty | The property to check. |
Returns
Type:bool
True if the property is a binary or stream field; otherwise, false.
MemberwiseClone Inherited
Inherited from
objectSyntax
Returns
Type:object
ReferenceEquals Inherited
Inherited from
objectSyntax
Parameters
| Name | Type | Description |
|---|---|---|
objA | object? | - |
objB | object? | - |
Returns
Type:bool
ToString Inherited Virtual
Inherited from
objectSyntax
Returns
Type:string?
ValidateTools
Validates that the generated tools are compatible with the MCP specification.Syntax
Parameters
| Name | Type | Description |
|---|---|---|
tools | System.Collections.Generic.IEnumerable<Microsoft.OData.Mcp.Core.Tools.McpToolDefinition> | The tools to validate. |
Returns
Type:System.Collections.Generic.IEnumerable<string>
A collection of validation errors, or empty if all tools are valid.
Exceptions
| Exception | Description |
|---|---|
ArgumentNullException | Thrown when tools is null. |
Related APIs
- Microsoft.OData.Mcp.Core.Tools.IMcpToolFactory