Preliminary support for MCP - #145
Draft
djperrefort wants to merge 10 commits into
Draft
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.


Adds preliminary support for the Model Context Protocol (MCP). Uses FastMCP and its
from_fastapifunctionality to optionally generate an MCP app from the dynamically built FastAPI application.Future work:
from_fastapi()generates tool names fromoperation_ids, which FastAPIauto-generates as things like
fetch_multiple_records_from_the_table__db__users__get. Thoseare functional but not great for LLM reasoning. Adding explicit
operation_idvalues to eachroute in
create_table_routerwould directly improve how well an LLM understands what eachtool does.
FastAPI uses the handler's docstring as the tool description.
The current handlers have docstrings but they're generic: "Fetch a list of records from the
database". This doesn't tell the LLM anything about which table or what the data represents. Passing
table-aware descriptions into the handlers would help significantly.