Expose FastMCP object to allow for use of FastMCP Features#49
Open
pazzelli wants to merge 5 commits intoMariaDB:mainfrom
Open
Expose FastMCP object to allow for use of FastMCP Features#49pazzelli wants to merge 5 commits intoMariaDB:mainfrom
pazzelli wants to merge 5 commits intoMariaDB:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
The purpose of this change is to expose the
FastMCPobject contained insideserver.pyto the outside world by refactoring the startup logic in theif __name__ == "__main__"block.This allows use of public features on the
FastMCPobject (e.g. Resources) by exposing theserver.mcpobject using code such as:The example above would allow providing a consumer with additional text-based context on the underlying MariaDB schema, which could help an LLM to make better decisions about which data to use at query time.
Change Summary
if __name__ == "__main__"block into two new public members:MariaDBServer.start(transport, host, port, path)— a new, synchronous entry point that wrapsrun_async_server()get_arg_parser()->ArgumentParser— returns the CLI argument parser so callers can add their own custom args (if necessary) before parsing and passing tostart()src/tests/test_custom_resource.py— instantiatesMariaDBServer, registers a customschema://context resourceon the exposedmcpobject, then uses aFastMCPClient to verify the resource appears in the resource list and that its content can be read correctlyThis was previously impossible since the entire server startup lifecycle was buried inside
if __name__ == "__main__"Tests
test_custom_resource_is_listed—schema://contextappears inlist_resources()test_custom_resource_content—read_resource("schema://context")returns the expected stringTest Results (local)
In MCP Inspector: