McpServerToolCreateOptions miss MarshalResult option.

Aperta
#1,602 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
68/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
csharp

Direzione di ricerca

Inizia da McpServerToolCreateOptions, AIFunctionFactoryOptions, McpServerTool.Create, DeriveOptions e CreateAIFunctionFactoryOptions per tracciare come fluiscono le impostazioni di creazione. Aggiungi un modo supportato per configurare MarshalResult tramite le opzioni di creazione dello strumento, quindi verifica che il callback configurato raggiunga AIFunctionFactoryOptions senza reflection.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement P2 ready for work

Is your feature request related to a problem? Please describe.
i need MarshalResult for AIFunctionFactoryOptions, but the CreateAIFunctionFactoryOptions assign the MarshalResult=new ValueTask(result).
i without any solution to reset it, i just can to create a AIFunction,then use the AIFunction to create McpServerTool.

but i will loss many settings from DeriveOptions and CreateAIFunctionFactoryOptions(private methods).

Describe the solution you'd like
please add a MarhsalResult option in McpServerToolCreateOptions, then i can initialize the AIFunctionFactoryOptions.MarshalResult.

or add a Action< AIFunctionFactoryOptions > initailizeAIFunctionOptions, then call after CreateAIFunctionFactoryOptions, give me a chance to update the aifunction options.

        public new static AIFunctionMcpServerResource Create(MethodInfo method, object? target, McpServerResourceCreateOptions? options
            , Action<AIFunctionFactoryOptions> initializeAIFunctionFactoryOptions = null)
        {
            Throw.IfNull(method, "method");
            options = DeriveOptions(method, options);

            var aioptions = CreateAIFunctionFactoryOptions(method, options);
            initializeAIFunctionFactoryOptions?.Invoke(aioptions);

            return Create(AIFunctionFactory.Create(method, target, aioptions), options);
        }
        public new static AIFunctionMcpServerTool Create(MethodInfo method, object? target, McpServerToolCreateOptions? options
            , Action<AIFunctionFactoryOptions> initializeAIFunctionFactoryOptions = null)
        {
            Throw.IfNull(method, "method");
            options = DeriveOptions(method, options);

            var aioptions = CreateAIFunctionFactoryOptions(method, options);
            initializeAIFunctionFactoryOptions?.Invoke(aioptions);

            return Create(AIFunctionFactory.Create(method, target, aioptions), options);
        }`
        public new static AIFunctionMcpServerPrompt Create(MethodInfo method, object? target, McpServerPromptCreateOptions? options
            , Action<AIFunctionFactoryOptions> initializeAIFunctionFactoryOptions = null)
        {
            Throw.IfNull(method, "method");
            options = DeriveOptions(method, options);

            var aioptions = CreateAIFunctionFactoryOptions(method, options);
            initializeAIFunctionFactoryOptions?.Invoke(aioptions);

            return Create(AIFunctionFactory.Create(method, target, aioptions), options);
        }

Describe alternatives you've considered
currently , i just can use reflection to invoke DeriveOptions and CreateAIFunctionFactoryOptions,
but this was not stable in the future version. please add a standard MarshalResult options for my feature.

                    var createoptions = new McpServerToolCreateOptions()
                    {
                        Name = mcpname,
                        SerializerOptions = serializeroptions,
                    };
                    createoptions = (McpServerToolCreateOptions)DummyInstance.Value.Tool_DeriveOptions.Invoke(null, [mcpmethod, createoptions]);

                    var aifuncoptions = (AIFunctionFactoryOptions)DummyInstance.Value.Tool_CreateAIFunctionFactoryOptions.Invoke(null, [mcpmethod, createoptions]);
                    aifuncoptions.MarshalResult = OnToolMarshalResult;

                    var aifunc = AIFunctionFactory.Create(mcpmethod, instance, aifuncoptions);
                    var tool = McpServerTool.Create(aifunc, createoptions);
                    log.Info($"McpTool 已建立 - tool:{tool}。\r\n{mcpmethod}");

                    tools.Add(tool);

Lingua principale
C#
Stelle
4.5k
Fork
814
Merge medio
9g 19h
PR unite (30g)
4

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di modelcontextprotocol/csharp-sdk

Tutte le issue di modelcontextprotocol/csharp-sdk

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.