-
Notifications
You must be signed in to change notification settings - Fork 78
feat: implement the new internal MCP configuration spec #226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: implement the new internal MCP configuration spec #226
Conversation
…by import of getActorsAsTools and pass it as internal tool arg instead.
|
sorry guys, quite a large PR with a bit of refactoring. The main thing is to thoroughly review the test cases and see if they make sense in context of the new spec and if we are not missing any scenario @jirispilka @MichalKalita |
jirispilka
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like it. Thank you, great job.
My only concern is with getActorsTools, which is being passed to addTool. Please try to remove this.
Please also update manifest.json so that it corresponds to the new tools specs.
fix: Delete clients (in examples). They are not used and outdated anyway. Also update README.md
Co-authored-by: Jiří Spilka <[email protected]>
Co-authored-by: Jiří Spilka <[email protected]>
Co-authored-by: Jiří Spilka <[email protected]>
… exposed tools (#218) * feat(input): allow empty tools and actors to allow greater control of exposed tools * revert internals * more robust input processing * fix(docs): update tool categories and add usage notes in README * fix(manifest): update default values for tool categories and dynamic Actor adding * feat: implement the new internal MCP configuration spec (#226) * feat: refactor and unify input handling, remove unnecessary logic * feat: vibe new mcp input spec * fix: remove unnecessary addTool in mcp/server.ts * fix: fix stdio.only add-actor tool related circular dependency cause by import of getActorsAsTools and pass it as internal tool arg instead. * fix test suite, clean up * fix tests and logic to adhere to the new spec * refactor code * lint * rename to fetch-actor-details * improve readme * update stdio help * improve test case names * fix and improve the call-actor generic tool * more spec new spec complience tests * lint * one more test, just in case * address pr comment and refactor the process input func * fix: Delete example clients, update Readme (#239) fix: Delete clients (in examples). They are not used and outdated anyway. Also update README.md * Update tests/unit/input.test.ts Co-authored-by: Jiří Spilka <[email protected]> * Update tests/unit/input.test.ts Co-authored-by: Jiří Spilka <[email protected]> * Update README.md Co-authored-by: Jiří Spilka <[email protected]> * address review comments * clean up imports and update comments for clarity, export functions for internal repo --------- Co-authored-by: Jiří Spilka <[email protected]> * update dxt manifest --------- Co-authored-by: Jiří Spilka <[email protected]>
closes #215
Important changes
call-actortool two step since the LLM would refuse to fetch Actor details with input schema first and would hallucinate input. There is now new paramstep(info(default) andcall), the info returns the Actor details card same asfetch-actor-details(yes, it is duplicite but I think it makes sense, what is user adds just this tool - it should be self-contained) and in step call it runs the actual Actor with the provided input.Generated Summary
This PR aligns the server configuration with the new tools configuration spec, simplifying how tools and actors are selected and making defaults more predictable. It also reworks tool categories and deprecates legacy flags.
TL;DR (New Spec)
toolscan include categories or specific tools: You can configure the server to load full categories or individual tools.Example:
tools=storage,runsloads two categories;tools=add-actorloads just one tool.enableAddingActors=truemaps totools=add-actor: The legacy flag is deprecated. It’s replaced bytools=add-actor(now part of theexperimentalcategory). For backward compatibility, the old flag is mapped internally.actorsmerged intotools: Previously always enabled; now part of thetoolsparam logic. If notoolsparam is passed, the category remains enabled by default.call-actorenabled by default: Previously behind preview, it now loads automatically when notoolsparam is provided. We’ll improve its description for better UX.CLI still uses
--toolsand now supports tool names: No format change; you can specify tool names in addition to category names.Tool categories reworked: Categories were cleaned up to match the new selection model.
What Changed
• Input Normalization and Selection
processInputto:actors/toolsfrom strings or arrays.enableActorAutoLoading→enableAddingActors.actorsintotoolsso selection lives in one place (actorsnow behave like tool selectors).enableAddingActorsdefault tofalseand rely on explicittools=add-actoror theexperimentalcategory.actors=query now populatestoolsselectors.• Server and Startup
createExpressApp(host)no longer acceptsmcpServerOptions. The server reads request-level inputs (includingtools) rather than global startup options.ActorsMcpServeris constructed without the prior options bag; configuration is derived per request via normalized inputs.• Tools and Categories
tools=add-actor).experimentalcategory can includeadd-actor; selecting the category or the tool directly loads it even ifenableAddingActorsisfalse.call-actoris enabled by default when notoolsparam is present.addToolfromsrc/tools/helpers.ts; removed legacyaddRemoveToolsexport.• Tests and Internal Utilities
• Rename
get-actor-details→fetch-actor-details(rename noted here and will be finalized shortly).Breaking Changes
createExpressAppno longer accepts themcpServerOptionsobject; callers should rely on per-request tools selection (via URL/CLI/env).enableAddingActorsis now defaultfalse; usetools=add-actor(or includeexperimental) to expose it.actorsis no longer a separate always-on path; it’s merged intotools.Notable Files Touched
src/input.tssrc/mcp/server.tssrc/actor/server.tssrc/main.tssrc/tools/helpers.tssrc/tools/index.tssrc/utils/tools-loader.tstests/**— updated to reflect new semantics