Skip to content

MCP Tool annotations adding #3

Description

@IvanMurzak

McpPluginToolAttribute had been updated, not it supports optional new inputs. Adding them below:

        /// <summary>
        /// If true, the tool only reads or queries data and does not modify system state.
        /// When not set, null is passed to the MCP SDK, which will apply its own default.
        /// </summary>
        public bool ReadOnlyHint
        {
            get => _readOnlyHint;
            set { _readOnlyHint = value; _readOnlyHintSet = true; }
        }

        /// <summary>
        /// If true, the tool may perform destructive updates (e.g., deleting data, overwriting files).
        /// When not set, null is passed to the MCP SDK, which will apply its own default.
        /// </summary>
        public bool DestructiveHint
        {
            get => _destructiveHint;
            set { _destructiveHint = value; _destructiveHintSet = true; }
        }

        /// <summary>
        /// If true, calling the tool multiple times with the same arguments will have no additional effect
        /// on its environment beyond the first call.
        /// When not set, null is passed to the MCP SDK, which will apply its own default.
        /// </summary>
        public bool IdempotentHint
        {
            get => _idempotentHint;
            set { _idempotentHint = value; _idempotentHintSet = true; }
        }

        /// <summary>
        /// If true, the tool may interact with an "open world" of external entities
        /// (e.g., the web, external APIs, or real-world systems).
        /// When not set, null is passed to the MCP SDK, which will apply its own default.
        /// </summary>
        public bool OpenWorldHint
        {
            get => _openWorldHint;
            set { _openWorldHint = value; _openWorldHintSet = true; }
        }

You need to go through all MCP tools in the project and to read their descriptions above to analyze what they are doing. Based on that information you need to set the true value to needed arguments. If you are not sure about some value, leave it default, don't set it. Let it to apply it's own default in that case.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions