Follow these instructions when adding new tools, prompts, or other capabilities
to the dart_mcp_server.
1. Locate or Create a Mixin
All server features are implemented as mixins on the DartMCPServer at
pkgs/dart_mcp_server/lib/src/server.dart.
- Check existing mixins: Look under
pkgs/dart_mcp_server/lib/src/mixins/to see if your feature fits into an existing category (e.g.,analyzer.dart,pub.dart). - Create a new mixin: If your feature is distinct, create a new file in that directory, following the patterns in existing mixins. Make sure to include a copyright header at the top of the file, with the current year.
2. Implementation Details
- Registration: Tools, prompts, etc should be registered in the
initializemethod of the mixin, which is an override and must callsuper.initialize(). - Parameter Names: When adding new arguments to tools or prompts, always
add a constant to the
ParameterNamesextension inpkgs/dart_mcp_server/lib/src/utils/names.dartand use that constant instead of hardcoding string literals in your tool parsing and schema. - Analytics: Never send raw strings from the client to analytics. Tools
with a
commandparameter must declare its values with anenum(for exampleEnumSchema.untitledSingleSelect), because only those values are included in the logged tool name. Similarly, new prompts must be added to thePromptNamesenum, because only those prompt names are logged. Create analytics events withcreateDartMCPEventfrompkgs/dart_mcp_server/lib/src/utils/analytics.dart, which sanitizes the client info.
3. Testing
Always add tests for any new features.
- Test Harness: Use the
TestHarnessclass located inpkgs/dart_mcp_server/test/test_harness.dart. - Existing Tests: Look at
pkgs/dart_mcp_server/test/tools/for examples of how to test specific tools. - Enhance Harness: If the current
TestHarnesslacks functionality needed for your test, feel free to add it.
4. Verification
- Run tests
- Run analysis
- Format the code
5. Documentation
- Run the
pkgs/dart_mcp_server/tool/update_readme.dartscript to update theREADME.mdfile with any new features, it must be ran from thepkgs/dart_mcp_serverdirectory. - Apply any other manual edits to the
README.mdfile as needed. - Update the
CHANGELOG.mdfile to include any user facing updates.
6. Update this skill
- Update this
SKILL.mdfile if that would be helpful for future features.