Skip to content

Conversation

@MQ37
Copy link
Contributor

@MQ37 MQ37 commented Aug 19, 2025

closes #215

Important changes

  • I had to make the call-actor tool two step since the LLM would refuse to fetch Actor details with input schema first and would hallucinate input. There is now new param step (info (default) and call), the info returns the Actor details card same as fetch-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)

  • tools can include categories or specific tools: You can configure the server to load full categories or individual tools.
    Example: tools=storage,runs loads two categories; tools=add-actor loads just one tool.

  • enableAddingActors=true maps to tools=add-actor: The legacy flag is deprecated. It’s replaced by tools=add-actor (now part of the experimental category). For backward compatibility, the old flag is mapped internally.

  • actors merged into tools: Previously always enabled; now part of the tools param logic. If no tools param is passed, the category remains enabled by default.

  • call-actor enabled by default: Previously behind preview, it now loads automatically when no tools param is provided. We’ll improve its description for better UX.

  • CLI still uses --tools and 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

  • Reworked processInput to:
    • Normalize actors/tools from strings or arrays.
    • Deprecate and map enableActorAutoLoadingenableAddingActors.
    • Merge actors into tools so selection lives in one place (actors now behave like tool selectors).
    • Make enableAddingActors default to false and rely on explicit tools=add-actor or the experimental category.
  • Updated URL parsing: actors= query now populates tools selectors.

• Server and Startup

  • createExpressApp(host) no longer accepts mcpServerOptions. The server reads request-level inputs (including tools) rather than global startup options.
  • ActorsMcpServer is constructed without the prior options bag; configuration is derived per request via normalized inputs.
  • Standby mode simplified: it starts the app and defers tool selection to per-request parameters.

• Tools and Categories

  • Introduced single-tool selection (e.g., tools=add-actor).
  • experimental category can include add-actor; selecting the category or the tool directly loads it even if enableAddingActors is false.
  • call-actor is enabled by default when no tools param is present.
  • Reworked exports to use addTool from src/tools/helpers.ts; removed legacy addRemoveTools export.

• Tests and Internal Utilities

  • Updated integration and unit tests to the new selection semantics.
  • Adjusted expectations: no longer rely on counts that included default actors or legacy add/remove tools; assert named presence instead.
  • Improved resilience of input parsing and tool merging behavior.

• Rename

  • Tool get-actor-detailsfetch-actor-details (rename noted here and will be finalized shortly).

Breaking Changes

  • createExpressApp no longer accepts the mcpServerOptions object; callers should rely on per-request tools selection (via URL/CLI/env).
  • enableAddingActors is now default false; use tools=add-actor (or include experimental) to expose it.
  • actors is no longer a separate always-on path; it’s merged into tools.

Notable Files Touched

  • src/input.ts
  • src/mcp/server.ts
  • src/actor/server.ts
  • src/main.ts
  • src/tools/helpers.ts
  • src/tools/index.ts
  • src/utils/tools-loader.ts
  • tests/** — updated to reflect new semantics

@MQ37 MQ37 self-assigned this Aug 21, 2025
@MQ37 MQ37 changed the title feat: vibe new mcp input spec feat: implement the new internal MCP configuration spec Aug 21, 2025
@MQ37 MQ37 marked this pull request as ready for review August 21, 2025 13:46
@MQ37
Copy link
Contributor Author

MQ37 commented Aug 21, 2025

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

Copy link
Collaborator

@jirispilka jirispilka left a 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.

jirispilka and others added 5 commits August 24, 2025 20:14
fix: Delete clients (in examples). They are not used and outdated anyway. Also update README.md
Co-authored-by: Jiří Spilka <[email protected]>
@MQ37 MQ37 requested a review from jirispilka August 26, 2025 06:49
@MQ37 MQ37 merged commit fa5a747 into feat/tools-actors-input-allow-empty Aug 26, 2025
3 checks passed
@MQ37 MQ37 deleted the feat/vibe-mcp-spec branch August 26, 2025 07:44
@MQ37 MQ37 removed the request for review from jirispilka August 26, 2025 07:44
MQ37 added a commit that referenced this pull request Aug 26, 2025
… 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants