At Uber, we've been using GenAI to debug task failures and suggest further
mitigation steps to our users. We would love to collaborate on this project
and share our learnings & contribute.

On Mon, Jun 2, 2025 at 11:09 AM Amogh Desai <amoghdesai....@gmail.com>
wrote:

> I agree that a use case driven approach is the way to go too.
>
> When we go full-blown, it is easy to lose track of the intention we started
> with.
>
> Some of the use cases related to debuggability improvements is something we
> already
> had a north star for in:https://github.com/apache/airflow/issues/40975,
> with a good amount of
> analysis already done. Maybe you can get some data here that will be
> useful.
>
>
> Thanks & Regards,
> Amogh Desai
>
>
> On Fri, May 30, 2025 at 9:27 PM Avi <a...@astronomer.io.invalid> wrote:
>
> > Hi All,
> >
> > Had a chat with @Kaxil. And we discussed on use-case first approach
> rather
> > than opening up to all possibilities, on building and maintaining the MCP
> > server.
> >
> > A few use-cases which I had in mind were:
> > - Debugging task failures
> > - Schedule sparse across all dags for better resource utilization.
> > - Recommend provider usage in place of native python codes.
> > - Cross-DAG Dependency Analysis
> > - Migration/Refactor Planning
> >
> > We would need an ongoing effort on this, as every other day something new
> > comes up. Could be more optimization, or newer use-cases. We also need to
> > maintain the security aspect of if. Like, where do we recommend running,
> > auth and transport methods, etc.
> >
> > I made a new release today with FastMCP and discovery of tools based on
> > category. After seeing today that FastMCP mount and sending refresh the
> > tools list notification is working (*which it wasn't 3 months back*).
> >
> > Things I have on my roadmap:
> > - HTTP based transport specifically for OAuth currently it is stdio only
> > for it to be installed in a plugin (*airflow-wingman*) as a dependency.
> > - Waiting for search tools to be implemented.
> > - Decide to bake prompts with the server, perhaps.
> > - Very minimal Docs as a resource which tells about recent changes in
> > Airflow behavior (Example: *every LLM till date still tries to write
> > schedule_interval instead of schedule*)
> >
> > @Shahar feel free to take a lead and see if there are things you would
> like
> > to cherry-pick from it.
> >
> > Thanks,
> > Avi
> >
> > On Fri, May 30, 2025 at 9:57 AM Avi <a...@astronomer.io> wrote:
> >
> > > 💯 agreed
> > >
> > > On Fri, May 30, 2025 at 9:52 AM Kaxil Naik <kaxiln...@gmail.com>
> wrote:
> > >
> > >> Agreed
> > >>
> > >> On Fri, 30 May 2025 at 15:18, Jarek Potiuk <ja...@potiuk.com> wrote:
> > >>
> > >> > Yeah, I think none of us want to just publish the code and be "done"
> > >> with
> > >> > it ... There is a real work to be done to make MCP much more useful
> > and
> > >> "AI
> > >> > friendly" and the examples you gave Brian are cool, because I think
> we
> > >> need
> > >> > to (and this is mostly the ask from maintainers for the users to
> come
> > >> and
> > >> > participate in the design phase of what the MCP can do).
> > >> > It looks like that "backbone" of the MCP and the glue between the
> REST
> > >> API
> > >> > and MCP can be done in a simple (and easy to maintain) way. But the
> > >> added
> > >> > value is indeed in figuring out what would be useful missing things
> -
> > >> > starting from what broad use cases we want to address - and  whether
> > >> some
> > >> > help for the agent can be described as prompts, better description
> of
> > >> the
> > >> > API and examples or maybe we need more aggregated, new APIs (maybe
> > >> simply
> > >> > new REST API calls we need) that will allow the agents to reason
> > better
> > >> and
> > >> > faster. All of that is possible.
> > >> >
> > >> > J
> > >> >
> > >> > On Fri, May 30, 2025 at 11:29 AM Kaxil Naik <kaxiln...@gmail.com>
> > >> wrote:
> > >> >
> > >> > > You can easily add as many tools you want:
> > >> > > https://gofastmcp.com/servers/tools
> > >> > >
> > >> > > I would be surprised if there is a thing you can't do with FastMCP
> > >> 2.0+
> > >> > > that you can do with the MCP Python SDK.
> > >> > >
> > >> > > Like I said earlier: This is a simplistic example :) but the gist
> is
> > >> we
> > >> > > should be using the newer abstractions which I am happy to comment
> > >> during
> > >> > > the development phase too. Like everything else we need to ensure
> > >> > > maintainability is worth the value we create.
> > >> > >
> > >> > >
> > >> > >
> > >> > > On Fri, 30 May 2025 at 14:48, Kaxil Naik <kaxiln...@gmail.com>
> > wrote:
> > >> > >
> > >> > > > Btw we don’t need to use FastMCP just for create MCP from
> OpenApi
> > >> spec.
> > >> > > > Many of you mighht already be aware - FastMCP 1.0 was adopted in
> > the
> > >> > > > official mcp python sdk since 1.2 and is recommended high-level
> > >> server
> > >> > > > framework.
> > >> > > >
> > >> > > > Check:
> > >> > > >
> > >>
> https://github.com/modelcontextprotocol/python-sdk/releases/tag/v1.2.0
> > >> > > >
> > >> > > > @Bryan Coder: I will be surprised if you can’t do the use-case
> you
> > >> > > > mentioned with FastMCP - either the one donated to MCP Python
> SDK
> > or
> > >> > > > FastMCP 2.0 - have you tried that? It isn’t just a wrapper!
> > >> > > >
> > >> > > > On Fri, 30 May 2025 at 13:16, Avi <a...@astronomer.io.invalid>
> > >> wrote:
> > >> > > >
> > >> > > >> Yeah FastMCP is nice, I didn't select fast mcp for this
> specific
> > >> > reason:
> > >> > > >> - The sheer number of tools that are created using OpenAPI spec
> > >> > doesn't
> > >> > > >> need to be passed to AI every single message.
> > >> > > >> - Instead, we can do a hierarchical tool discovery based on
> > >> > categories.
> > >> > > >> And
> > >> > > >> let AI select a particular category and then get tools only for
> > >> that
> > >> > > >> category.
> > >> > > >>
> > >> > > >> python3 -c "
> > >> > > >> > import json
> > >> > > >> > with open('path/to/openapi.json') as f:
> > >> > > >> >     spec = json.load(f)
> > >> > > >> >
> > >> > > >> > tags = {}
> > >> > > >> > for path, methods in spec['paths'].items():
> > >> > > >> >     for method, details in methods.items():
> > >> > > >> >         if 'tags' in details:
> > >> > > >> >             for tag in details['tags']:
> > >> > > >> >                 tags[tag] = tags.get(tag, 0) + 1
> > >> > > >> >
> > >> > > >> > print('Tags and their counts:')
> > >> > > >> > for tag, count in sorted(tags.items(), key=lambda x: x[1],
> > >> > > >> reverse=True):
> > >> > > >> >     print(f'{tag}: {count}')
> > >> > > >> > "
> > >> > > >> Tags and their counts:
> > >> > > >> Task Instance: 19
> > >> > > >> Asset: 13
> > >> > > >> Connection: 8
> > >> > > >> DagRun: 8
> > >> > > >> Backfill: 7
> > >> > > >> DAG: 7
> > >> > > >> Pool: 6
> > >> > > >> Variable: 6
> > >> > > >> XCom: 4
> > >> > > >> Config: 2
> > >> > > >> Event Log: 2
> > >> > > >> Import Error: 2
> > >> > > >> Plugin: 2
> > >> > > >> Task: 2
> > >> > > >> DagVersion: 2
> > >> > > >> Login: 2
> > >> > > >> DagSource: 1
> > >> > > >> DagStats: 1
> > >> > > >> DagReport: 1
> > >> > > >> DagWarning: 1
> > >> > > >> Extra Links: 1
> > >> > > >> Job: 1
> > >> > > >> Provider: 1
> > >> > > >> DAG Parsing: 1
> > >> > > >> Monitor: 1
> > >> > > >> Version: 1
> > >> > > >>
> > >> > > >> My last attempt to do a hierarchical discovery with FastMCP
> > didn't
> > >> go
> > >> > as
> > >> > > >> expected.
> > >> > > >> But this could be short term. There is something cooking in the
> > >> model
> > >> > > >> context protocol repo for search of a tool. Ref:
> > >> > > >>
> > >> https://github.com/modelcontextprotocol/modelcontextprotocol/pull/322
> > >> > > >>
> > >> > > >> I'll give this a try with FastMCP to see if I can get the
> > >> > > >> hierarchical discovery working.
> > >> > > >>
> > >> > > >> - Avi
> > >> > > >>
> > >> > > >> On Fri, May 30, 2025 at 1:33 AM Bryan Corder <
> > >> bryancor...@gmail.com>
> > >> > > >> wrote:
> > >> > > >>
> > >> > > >> > In order to bring value, we might want to think beyond just
> > >> wrapping
> > >> > > the
> > >> > > >> > API. As Kaxil just showed, it's easy to create something with
> > 10
> > >> > lines
> > >> > > >> of
> > >> > > >> > code and FastMCP.
> > >> > > >> >
> > >> > > >> > However, the Airflow API was made for Airflow operators'
> > >> > consumption,
> > >> > > >> not
> > >> > > >> > necessarily for LLM consumption. When you have an endpoint
> > called
> > >> > > >> "Delete
> > >> > > >> > DAG" with a description "Delete a specific DAG" that's very
> > easy
> > >> for
> > >> > > any
> > >> > > >> > user who has already navigated to the Airflow API spec to
> > >> > understand,
> > >> > > >> but
> > >> > > >> > maybe not the best tool description for an LLM. I think we'd
> > >> want to
> > >> > > >> either
> > >> > > >> > exclude that or add additional context for the LLM to know
> it's
> > >> > > >> > destructive.
> > >> > > >> >
> > >> > > >> > In addition, LLMs can struggle with tool selection when you
> > give
> > >> it
> > >> > 80
> > >> > > >> > tools to work with. Things in the middle sometimes get lost
> in
> > >> the
> > >> > > >> context.
> > >> > > >> > There are ways to customize the FastMCP (
> > >> > > >> > https://gofastmcp.com/servers/openapi#custom-route-maps) to
> > cut
> > >> > down
> > >> > > >> the
> > >> > > >> > list of options, should you choose.
> > >> > > >> >
> > >> > > >> > However, it may be better to create something more tailored
> to
> > >> LLMs.
> > >> > > >> > Thinking about the use case of getting LLM assistance with
> > >> > debugging a
> > >> > > >> > failed run, one of the things my teams do is put the "run
> book"
> > >> for
> > >> > > prod
> > >> > > >> > support in the doc_md notes right with the DAG, so if a file
> > >> never
> > >> > > >> shows up
> > >> > > >> > they know exactly what to do in that situation (potentially,
> do
> > >> > > >> nothing).
> > >> > > >> > We also include other information like, "xx task can be
> flaky.
> > If
> > >> > you
> > >> > > >> get
> > >> > > >> > this error, rerunning it will usually resolve it." The goal
> is
> > >> for
> > >> > any
> > >> > > >> > engineer armed with the stack trace and the run book to be
> able
> > >> to
> > >> > > solve
> > >> > > >> > any error. My team has all that information right in the UI.
> To
> > >> get
> > >> > > that
> > >> > > >> > information, the LLM would need to know to hit the DAG
> Details
> > >> > > endpoint
> > >> > > >> for
> > >> > > >> > one minor attribute amongst several for the doc_md and get
> the
> > >> > correct
> > >> > > >> dag
> > >> > > >> > id, run id, task id and try number to grab the stack trace
> from
> > >> the
> > >> > > >> failed
> > >> > > >> > run. It would then need to go elsewhere to find the DAG code
> to
> > >> > > debug. I
> > >> > > >> > think it would be better to just create a "debug_failed_task"
> > >> tool
> > >> > an
> > >> > > >> LLM
> > >> > > >> > could call from an MCP server that would string those calls
> > >> together
> > >> > > and
> > >> > > >> > serve them up to the LLM on a silver platter. The LLM could
> > focus
> > >> > all
> > >> > > >> its
> > >> > > >> > "reasoning" efforts on solving the problem instead of
> figuring
> > >> out
> > >> > how
> > >> > > >> to
> > >> > > >> > get the information it needs to even begin.
> > >> > > >> >
> > >> > > >> > Again, if we just want to wrap the API in FastMCP, we can
> share
> > >> > > Kaxil's
> > >> > > >> 10
> > >> > > >> > lines of code in a Medium article and be done. I think the
> real
> > >> > value
> > >> > > >> is in
> > >> > > >> > providing an implementation of a limited set of more complex
> > base
> > >> > > tools
> > >> > > >> > like debug_failed_task (described above),
> pause_all_active_DAGs
> > >> > > (because
> > >> > > >> > I'm about to upgrade!), describe_DAG (grabs only the
> > description,
> > >> > > >> > dependencies, converts cron schedule to human readable if
> > >> > applicable,
> > >> > > >> etc)
> > >> > > >> > and giving people a way to extend the server.
> > >> > > >> >
> > >> > > >> > The above is tool focused. As Avi pointed out, there are also
> > >> > > resources
> > >> > > >> and
> > >> > > >> > prompts, but I've only personally worked with tools and have
> > >> nothing
> > >> > > to
> > >> > > >> add
> > >> > > >> > there.
> > >> > > >> >
> > >> > > >> > With all the LLM tools quickly advancing on the development
> > side
> > >> > (e.g.
> > >> > > >> code
> > >> > > >> > generation/review), it's great to see the community working
> on
> > >> > > building
> > >> > > >> > tools to help with the operational side.
> > >> > > >> >
> > >> > > >> > Bryan
> > >> > > >> >
> > >> > > >> >
> > >> > > >> > On Thu, May 29, 2025, 4:50 PM Kaxil Naik <
> kaxiln...@gmail.com>
> > >> > wrote:
> > >> > > >> >
> > >> > > >> > > One more comment: MCP SDKs have advanced quite a bit and I
> > was
> > >> > able
> > >> > > to
> > >> > > >> > get
> > >> > > >> > > an Airflow MCP Server working with just the following code
> > >> block.
> > >> > I
> > >> > > >> was
> > >> > > >> > > successfully able to pause/unpause a DAG from Claude and
> > other
> > >> MCP
> > >> > > >> client
> > >> > > >> > > as an example. So as much as possible we should utilize
> > higher
> > >> > level
> > >> > > >> > > abstraction like FastMCP which allows creating client from
> > >> OpenAPI
> > >> > > >> spec
> > >> > > >> > > <https://gofastmcp.com/servers/openapi#openapi-integration
> >:
> > >> > > >> > >
> > >> > > >> > >     import os
> > >> > > >> > >
> > >> > > >> > >     import httpx
> > >> > > >> > >     from fastmcp import FastMCP
> > >> > > >> > >
> > >> > > >> > >     token = os.environ.get("AF_ACCESS_TOKEN")
> > >> > > >> > >     client = httpx.AsyncClient(
> > >> > > >> > >         base_url="http://localhost:28080";,
> > >> > > >> > >         headers={"Authorization": f"Bearer {token}"},
> > >> > > >> > >     )
> > >> > > >> > >
> > >> > > >> > >     openapi_spec = httpx.get("
> > >> http://localhost:28080/openapi.json
> > >> > > >> > ").json()
> > >> > > >> > >
> > >> > > >> > >     mcp = FastMCP.from_openapi(
> > >> > > >> > >         openapi_spec=openapi_spec,
> > >> > > >> > >         client=client,
> > >> > > >> > >         name="Airflow 3.0 API Server"
> > >> > > >> > >     )
> > >> > > >> > >
> > >> > > >> > >     if __name__ == "__main__":
> > >> > > >> > >         mcp.run()
> > >> > > >> > >
> > >> > > >> > >
> > >> > > >> > >
> > >> > > >> > > On Thu, 29 May 2025 at 20:32, Avi
> <a...@astronomer.io.invalid
> > >
> > >> > > wrote:
> > >> > > >> > >
> > >> > > >> > > > @Shahar -- Yes. Definitely. Feel free to reachout if you
> > need
> > >> > > >> anything.
> > >> > > >> > > >
> > >> > > >> > > > I totally agree, it to live as a separate repo.
> > >> > > >> > > >
> > >> > > >> > > > - Avi
> > >> > > >> > > >
> > >> > > >> > > > On Thu, May 29, 2025 at 12:50 PM Kaxil Naik <
> > >> > kaxiln...@gmail.com>
> > >> > > >> > wrote:
> > >> > > >> > > >
> > >> > > >> > > > > @Shahar -- Absolutely, I think you are driving it with
> > this
> > >> > > email.
> > >> > > >> > So I
> > >> > > >> > > > > think you can lead it from here and whoever wants to
> join
> > >> can
> > >> > > >> co-lead
> > >> > > >> > > or
> > >> > > >> > > > > join in development.
> > >> > > >> > > > >
> > >> > > >> > > > > Please feel free to drive :)
> > >> > > >> > > > >
> > >> > > >> > > > > On Thu, 29 May 2025 at 17:07, Aaron Dantley <
> > >> > > >> aarondant...@gmail.com>
> > >> > > >> > > > > wrote:
> > >> > > >> > > > >
> > >> > > >> > > > > > Hey All!
> > >> > > >> > > > > >
> > >> > > >> > > > > > I’d be grateful to be included in the AIP discussions
> > to
> > >> > help
> > >> > > if
> > >> > > >> > > > possible
> > >> > > >> > > > > > too! Like Shahar, I’ve never worked on any of these
> > >> items so
> > >> > > >> it’d
> > >> > > >> > be
> > >> > > >> > > > > great
> > >> > > >> > > > > > to see how work gets assigned and goes through a
> whole
> > >> > > >> development
> > >> > > >> > > > cycle!
> > >> > > >> > > > > >
> > >> > > >> > > > > > Looking forward to it!
> > >> > > >> > > > > > Aaron
> > >> > > >> > > > > >
> > >> > > >> > > > > > On Thu, May 29, 2025 at 7:32 AM Shahar Epstein <
> > >> > > >> sha...@apache.org>
> > >> > > >> > > > > wrote:
> > >> > > >> > > > > >
> > >> > > >> > > > > > > If it's ok, I would like to lead the AIP effort (or
> > at
> > >> > least
> > >> > > >> > > > co-lead),
> > >> > > >> > > > > as
> > >> > > >> > > > > > > I've never written an AIP before. I could start
> > >> drafting
> > >> > it
> > >> > > >> > during
> > >> > > >> > > > the
> > >> > > >> > > > > > next
> > >> > > >> > > > > > > week.
> > >> > > >> > > > > > > Avi - please let me know if it works for you.
> > >> > > >> > > > > > >
> > >> > > >> > > > > > >
> > >> > > >> > > > > > > Shahar
> > >> > > >> > > > > > >
> > >> > > >> > > > > > >
> > >> > > >> > > > > > > On Thu, May 29, 2025, 13:09 Kaxil Naik <
> > >> > kaxiln...@gmail.com
> > >> > > >
> > >> > > >> > > wrote:
> > >> > > >> > > > > > >
> > >> > > >> > > > > > > > Yes separate repo, please and we would need
> someone
> > >> to
> > >> > > lead
> > >> > > >> > this
> > >> > > >> > > > > effort
> > >> > > >> > > > > > > on
> > >> > > >> > > > > > > > the proposal & development too. Avi - you are
> > >> probably
> > >> > > well
> > >> > > >> > > > equipped
> > >> > > >> > > > > to
> > >> > > >> > > > > > > > lead it and I am sure more folks like Aaraon
> would
> > be
> > >> > > eager
> > >> > > >> to
> > >> > > >> > > work
> > >> > > >> > > > > on
> > >> > > >> > > > > > > its
> > >> > > >> > > > > > > > development and on-going maintenance.
> > >> > > >> > > > > > > >
> > >> > > >> > > > > > > > Regards,
> > >> > > >> > > > > > > > Kaxil
> > >> > > >> > > > > > > >
> > >> > > >> > > > > > > > On Thu, 29 May 2025 at 15:25, Jarek Potiuk <
> > >> > > >> ja...@potiuk.com>
> > >> > > >> > > > wrote:
> > >> > > >> > > > > > > >
> > >> > > >> > > > > > > > > Yep. Having MCP is cool and drawing our
> > >> implementation
> > >> > > >> from
> > >> > > >> > > > > > experiences
> > >> > > >> > > > > > > > and
> > >> > > >> > > > > > > > > usage of other MCP servers out there is even
> > cooler
> > >> > > >> > (especially
> > >> > > >> > > > > that
> > >> > > >> > > > > > we
> > >> > > >> > > > > > > > can
> > >> > > >> > > > > > > > > have some insights how people already use them
> > with
> > >> > > >> Airflow)
> > >> > > >> > -
> > >> > > >> > > if
> > >> > > >> > > > > we
> > >> > > >> > > > > > > can
> > >> > > >> > > > > > > > > bring together a few of those, put some nice,
> > >> relevant
> > >> > > >> > Airflow
> > >> > > >> > > > > > prompts.
> > >> > > >> > > > > > > > > Ideally we could have some examples of how MCP
> > can
> > >> be
> > >> > > used
> > >> > > >> > > taken
> > >> > > >> > > > > from
> > >> > > >> > > > > > > > those
> > >> > > >> > > > > > > > > who are using airflow (the debugging example by
> > >> Avi is
> > >> > > >> cool)
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > > > I am not sure implementing it as provider is
> > really
> > >> > "the
> > >> > > >> way"
> > >> > > >> > > > > though
> > >> > > >> > > > > > -
> > >> > > >> > > > > > > I
> > >> > > >> > > > > > > > > would rather see `apache-airflow-mcp" separate
> > >> repo -
> > >> > > >> it's so
> > >> > > >> > > > > > different
> > >> > > >> > > > > > > > and
> > >> > > >> > > > > > > > > distinct from airflow it does not really
> require
> > >> any
> > >> > of
> > >> > > >> > Airflow
> > >> > > >> > > > > > > internals
> > >> > > >> > > > > > > > > and code to be implemented - it makes very
> little
> > >> > sense
> > >> > > >> to be
> > >> > > >> > > the
> > >> > > >> > > > > > part
> > >> > > >> > > > > > > of
> > >> > > >> > > > > > > > > airflow "workspace" where we would develop it
> > >> together
> > >> > > >> with
> > >> > > >> > > > > airflow -
> > >> > > >> > > > > > > > > because if it will talk over the REST api, all
> we
> > >> need
> > >> > > is
> > >> > > >> the
> > >> > > >> > > > > > `client`
> > >> > > >> > > > > > > > that
> > >> > > >> > > > > > > > > might be just a dependency. And there is even
> no
> > >> > reason
> > >> > > >> for
> > >> > > >> > MCP
> > >> > > >> > > > and
> > >> > > >> > > > > > > > airflow
> > >> > > >> > > > > > > > > to be installed and developed together (that's
> > the
> > >> > main
> > >> > > >> > reason
> > >> > > >> > > > why
> > >> > > >> > > > > we
> > >> > > >> > > > > > > > want
> > >> > > >> > > > > > > > > providers to be kept in monorepo.
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > > > J.
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > > > On Thu, May 29, 2025 at 8:37 AM Amogh Desai <
> > >> > > >> > > > > > amoghdesai....@gmail.com>
> > >> > > >> > > > > > > > > wrote:
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > > > > Seems like a promising area to invest in
> given
> > >> the
> > >> > > >> benefits
> > >> > > >> > > it
> > >> > > >> > > > > can
> > >> > > >> > > > > > > > > provide
> > >> > > >> > > > > > > > > > to
> > >> > > >> > > > > > > > > > the users as mentioned by Shahar and
> Abhishek.
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > Abhishek also has a promising talk submitted
> > >> which i
> > >> > > am
> > >> > > >> > > looking
> > >> > > >> > > > > > > forward
> > >> > > >> > > > > > > > > to
> > >> > > >> > > > > > > > > > this year at the summit.
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > In any case, this seems to be one of the
> first
> > of
> > >> > the
> > >> > > >> very
> > >> > > >> > > few
> > >> > > >> > > > > > > > > > implementations of trying
> > >> > > >> > > > > > > > > > to integrate Airflow officially /
> unofficially
> > >> with
> > >> > an
> > >> > > >> MCP
> > >> > > >> > > > > server.
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > Thanks & Regards,
> > >> > > >> > > > > > > > > > Amogh Desai
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > On Thu, May 29, 2025 at 2:56 AM Aaron
> Dantley <
> > >> > > >> > > > > > > aarondant...@gmail.com>
> > >> > > >> > > > > > > > > > wrote:
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > > Hey!
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > I also think this is a great idea!
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > Would it be possible to be included in the
> > >> > > development
> > >> > > >> > > > process?
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > Sorry I’m new to this group, but would
> > >> appreciate
> > >> > > any
> > >> > > >> > > > > suggestions
> > >> > > >> > > > > > > on
> > >> > > >> > > > > > > > > how
> > >> > > >> > > > > > > > > > to
> > >> > > >> > > > > > > > > > > contribute to the MCP server development!
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > Regards!
> > >> > > >> > > > > > > > > > > Aaron
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > On Wed, May 28, 2025 at 2:57 PM Avi
> > >> > > >> > > > <a...@astronomer.io.invalid
> > >> > > >> > > > > >
> > >> > > >> > > > > > > > wrote:
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > Nice to see the idea to incorporate an
> > >> official
> > >> > > MCP
> > >> > > >> > > server
> > >> > > >> > > > > for
> > >> > > >> > > > > > > > > > > > Airflow. It's been really magical to see
> > >> what a
> > >> > > >> simple
> > >> > > >> > > LLM
> > >> > > >> > > > > can
> > >> > > >> > > > > > do
> > >> > > >> > > > > > > > > with
> > >> > > >> > > > > > > > > > an
> > >> > > >> > > > > > > > > > > > Airflow MCP server built just from APIs.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > A few things that I noticed in my
> > experience:
> > >> > > >> > > > > > > > > > > > - The number of tools that the OpenAPI
> spec
> > >> > > >> generates
> > >> > > >> > is
> > >> > > >> > > > > quite
> > >> > > >> > > > > > > > huge.
> > >> > > >> > > > > > > > > > Most
> > >> > > >> > > > > > > > > > > > tools (*Claude, VS Code with GitHub
> > Copilot,
> > >> > > Cursor,
> > >> > > >> > > > > Windsurf*)
> > >> > > >> > > > > > > > which
> > >> > > >> > > > > > > > > > > uses
> > >> > > >> > > > > > > > > > > > mcp-client limits it to a number of 100
> > >> tools.
> > >> > > (*The
> > >> > > >> > > > > read-only
> > >> > > >> > > > > > > mode
> > >> > > >> > > > > > > > > > > creates
> > >> > > >> > > > > > > > > > > > less tools in comparison*.)
> > >> > > >> > > > > > > > > > > > - MCP server are just not tools. There
> are
> > >> other
> > >> > > >> things
> > >> > > >> > > as
> > >> > > >> > > > > > well,
> > >> > > >> > > > > > > > like
> > >> > > >> > > > > > > > > > > > resources and prompts. Prompts are super
> > >> helpful
> > >> > > in
> > >> > > >> > case
> > >> > > >> > > of
> > >> > > >> > > > > > > > debugging
> > >> > > >> > > > > > > > > > for
> > >> > > >> > > > > > > > > > > > example. It is a way of teaching LLM
> about
> > >> > > Airflow.
> > >> > > >> > Say I
> > >> > > >> > > > > want
> > >> > > >> > > > > > to
> > >> > > >> > > > > > > > > have
> > >> > > >> > > > > > > > > > a
> > >> > > >> > > > > > > > > > > > failing task investigated. A prompt can
> be
> > >> > helpful
> > >> > > >> in
> > >> > > >> > > > letting
> > >> > > >> > > > > > LLM
> > >> > > >> > > > > > > > > know
> > >> > > >> > > > > > > > > > a
> > >> > > >> > > > > > > > > > > > step-by-step process of carrying out the
> > >> > > >> investigation.
> > >> > > >> > > > > > > > > > > > - Where do you run the MCP server? I
> > wouldn't
> > >> > want
> > >> > > >> my
> > >> > > >> > > > laptop
> > >> > > >> > > > > to
> > >> > > >> > > > > > > do
> > >> > > >> > > > > > > > > the
> > >> > > >> > > > > > > > > > > > heavy processing, which would want us to
> go
> > >> for
> > >> > > the
> > >> > > >> SSE
> > >> > > >> > > > > instead
> > >> > > >> > > > > > > of
> > >> > > >> > > > > > > > > > stdio.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > This is why I chose two different path of
> > >> using
> > >> > > mcp
> > >> > > >> > > server
> > >> > > >> > > > > with
> > >> > > >> > > > > > > > > > airflow,
> > >> > > >> > > > > > > > > > > > which I intend to talk about at the
> summit.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > 1. AI-Augmented Airflow - This helped me
> > add
> > >> a
> > >> > > chat
> > >> > > >> > > > interface
> > >> > > >> > > > > > > > inside
> > >> > > >> > > > > > > > > > > > Airflow using a plugin to talk to an
> > Airflow
> > >> > > >> instance
> > >> > > >> > > (read
> > >> > > >> > > > > > only
> > >> > > >> > > > > > > > > mode).
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > 2. Airflow-Powered AI - Experimenting
> with
> > >> this
> > >> > > has
> > >> > > >> > been
> > >> > > >> > > > > > totally
> > >> > > >> > > > > > > > > > magical,
> > >> > > >> > > > > > > > > > > > how powerful AI can become when it has
> > >> access to
> > >> > > >> > airflow.
> > >> > > >> > > > > > Also, a
> > >> > > >> > > > > > > > > > > directory
> > >> > > >> > > > > > > > > > > > structure to maintain the DAGs, and it
> can
> > >> write
> > >> > > >> DAGs
> > >> > > >> > on
> > >> > > >> > > > the
> > >> > > >> > > > > > > fly. I
> > >> > > >> > > > > > > > > > > totally
> > >> > > >> > > > > > > > > > > > see a need where LLMs eventually will
> need
> > a
> > >> > > >> scheduler,
> > >> > > >> > > > > > although
> > >> > > >> > > > > > > a
> > >> > > >> > > > > > > > > > > complete
> > >> > > >> > > > > > > > > > > > airflow just for an LLM might seem a bit
> > >> > overkill
> > >> > > to
> > >> > > >> > the
> > >> > > >> > > > rest
> > >> > > >> > > > > > of
> > >> > > >> > > > > > > > the
> > >> > > >> > > > > > > > > > > > community.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > I chose to build this on top of open API
> is
> > >> > > because
> > >> > > >> > that
> > >> > > >> > > > was
> > >> > > >> > > > > > the
> > >> > > >> > > > > > > > only
> > >> > > >> > > > > > > > > > way
> > >> > > >> > > > > > > > > > > > to get proper RBAC enabled.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > I have so many points to discuss. Would
> > love
> > >> to
> > >> > > hear
> > >> > > >> > from
> > >> > > >> > > > the
> > >> > > >> > > > > > > > > community
> > >> > > >> > > > > > > > > > > and
> > >> > > >> > > > > > > > > > > > then take it forward.
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > Thanks,
> > >> > > >> > > > > > > > > > > > Avi
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > On Wed, May 28, 2025 at 6:32 PM Aritra
> > Basu <
> > >> > > >> > > > > > > > > aritrabasu1...@gmail.com>
> > >> > > >> > > > > > > > > > > > wrote:
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > I definitely think there's potential to
> > >> > interact
> > >> > > >> with
> > >> > > >> > > an
> > >> > > >> > > > > > > airflow
> > >> > > >> > > > > > > > > MCP
> > >> > > >> > > > > > > > > > > > > server. Though I think I'd be
> interested
> > to
> > >> > see
> > >> > > >> how
> > >> > > >> > > many
> > >> > > >> > > > > and
> > >> > > >> > > > > > > how
> > >> > > >> > > > > > > > > > > > frequently
> > >> > > >> > > > > > > > > > > > > people are making use of MCP servers in
> > the
> > >> > wild
> > >> > > >> > before
> > >> > > >> > > > > > > investing
> > >> > > >> > > > > > > > > > > effort
> > >> > > >> > > > > > > > > > > > in
> > >> > > >> > > > > > > > > > > > > building and maintaining one for
> airflow.
> > >> I'm
> > >> > > sure
> > >> > > >> > the
> > >> > > >> > > > data
> > >> > > >> > > > > > is
> > >> > > >> > > > > > > > > > > available
> > >> > > >> > > > > > > > > > > > > out there, just needs finding.
> > >> > > >> > > > > > > > > > > > > --
> > >> > > >> > > > > > > > > > > > > Regards,
> > >> > > >> > > > > > > > > > > > > Aritra Basu
> > >> > > >> > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > On Wed, 28 May 2025, 11:18 pm Julian
> > >> LaNeve,
> > >> > > >> > > > > > > > > > > > <jul...@astronomer.io.invalid
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > wrote:
> > >> > > >> > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > I think this would be interesting now
> > >> that
> > >> > the
> > >> > > >> > > > Streamable
> > >> > > >> > > > > > > HTTP
> > >> > > >> > > > > > > > > > spec <
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > >
> > >> > > >> > > > > > >
> > >> > > >> > > > > >
> > >> > > >> > > > >
> > >> > > >> > > >
> > >> > > >> > >
> > >> > > >> >
> > >> > > >>
> > >> > >
> > >> >
> > >>
> >
> https://modelcontextprotocol.io/specification/2025-03-26/basic/transports
> > >> > > >> >
> > >> > > >> > > > > > > > > > > > > > is out. I think in theory we could
> > >> publish
> > >> > > this
> > >> > > >> > first
> > >> > > >> > > > as
> > >> > > >> > > > > an
> > >> > > >> > > > > > > > > Airflow
> > >> > > >> > > > > > > > > > > > > > provider that installs a plugin to
> > >> expose an
> > >> > > MCP
> > >> > > >> > > > > endpoint,
> > >> > > >> > > > > > > as a
> > >> > > >> > > > > > > > > > PoC -
> > >> > > >> > > > > > > > > > > > > this
> > >> > > >> > > > > > > > > > > > > > becomes a much nicer experience than
> a
> > >> local
> > >> > > >> stdio
> > >> > > >> > > one.
> > >> > > >> > > > > > > > > > > > > > --
> > >> > > >> > > > > > > > > > > > > > Julian LaNeve
> > >> > > >> > > > > > > > > > > > > > CTO
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > Email: jul...@astronomer.io
> > >> > > >> > > > > > > > > > > > > >  <mailto:jul...@astronomer.io
> >Mobile:
> > >> 330
> > >> > 509
> > >> > > >> 5792
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > On May 28, 2025, at 1:25 PM, Shahar
> > >> > Epstein
> > >> > > <
> > >> > > >> > > > > > > > sha...@apache.org
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > > > > > wrote:
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > Dear community,
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > Following the thread on Slack [1],
> > >> > initiated
> > >> > > >> by
> > >> > > >> > > Jason
> > >> > > >> > > > > > > > Sebastian
> > >> > > >> > > > > > > > > > > > Kusuma,
> > >> > > >> > > > > > > > > > > > > > I'd
> > >> > > >> > > > > > > > > > > > > > > like to start an effort to
> officially
> > >> > > support
> > >> > > >> MCP
> > >> > > >> > > in
> > >> > > >> > > > > > > > Airflow's
> > >> > > >> > > > > > > > > > > > > codebase.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *Some background *
> > >> > > >> > > > > > > > > > > > > > > Model Context Protocol (MCP) is an
> > open
> > >> > > >> standard,
> > >> > > >> > > > > > > open-source
> > >> > > >> > > > > > > > > > > > framework
> > >> > > >> > > > > > > > > > > > > > > that standardizes the way AI models
> > >> like
> > >> > LLM
> > >> > > >> > > > integrate
> > >> > > >> > > > > > and
> > >> > > >> > > > > > > > > share
> > >> > > >> > > > > > > > > > > data
> > >> > > >> > > > > > > > > > > > > > with
> > >> > > >> > > > > > > > > > > > > > > external tools, systems and data
> > >> sources.
> > >> > > >> Think
> > >> > > >> > of
> > >> > > >> > > it
> > >> > > >> > > > > as
> > >> > > >> > > > > > a
> > >> > > >> > > > > > > > > "USB-C
> > >> > > >> > > > > > > > > > > for
> > >> > > >> > > > > > > > > > > > > > AI" -
> > >> > > >> > > > > > > > > > > > > > > a universal connector that
> simplifies
> > >> and
> > >> > > >> > > > standardizes
> > >> > > >> > > > > AI
> > >> > > >> > > > > > > > > > > > > integrations. A
> > >> > > >> > > > > > > > > > > > > > > notable example of an MCP server is
> > >> > GitHub's
> > >> > > >> > > official
> > >> > > >> > > > > > > > > > > implementation
> > >> > > >> > > > > > > > > > > > > > [3], which
> > >> > > >> > > > > > > > > > > > > > > allows LLMs such as Claude,
> Copilot,
> > >> and
> > >> > > >> OpenAI
> > >> > > >> > > (or:
> > >> > > >> > > > > "MCP
> > >> > > >> > > > > > > > > > clients")
> > >> > > >> > > > > > > > > > > > to
> > >> > > >> > > > > > > > > > > > > > > fetch pull request details, analyze
> > >> code
> > >> > > >> changes,
> > >> > > >> > > and
> > >> > > >> > > > > > > > generate
> > >> > > >> > > > > > > > > > > review
> > >> > > >> > > > > > > > > > > > > > > summaries.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *How could an MCP server be useful
> in
> > >> > > >> Airflow?*
> > >> > > >> > > > > > > > > > > > > > > Imagine the possibilities when LLMs
> > can
> > >> > > >> > seamlessly
> > >> > > >> > > > > > interact
> > >> > > >> > > > > > > > > with
> > >> > > >> > > > > > > > > > > > > > Airflow’s
> > >> > > >> > > > > > > > > > > > > > > API: triggering DAGs using natural
> > >> > language,
> > >> > > >> > > > retrieving
> > >> > > >> > > > > > DAG
> > >> > > >> > > > > > > > run
> > >> > > >> > > > > > > > > > > > > history,
> > >> > > >> > > > > > > > > > > > > > > enabling smart debugging, and more.
> > >> This
> > >> > > kind
> > >> > > >> of
> > >> > > >> > > > > > > integration
> > >> > > >> > > > > > > > > > opens
> > >> > > >> > > > > > > > > > > > the
> > >> > > >> > > > > > > > > > > > > > door
> > >> > > >> > > > > > > > > > > > > > > to a more intuitive, conversational
> > >> > > interface
> > >> > > >> for
> > >> > > >> > > > > > workflow
> > >> > > >> > > > > > > > > > > > > orchestration.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *Why do we need to support it
> > >> officially?*
> > >> > > >> > > > > > > > > > > > > > > Quid pro quo - LLMs become an
> > integral
> > >> > part
> > >> > > of
> > >> > > >> > the
> > >> > > >> > > > > modern
> > >> > > >> > > > > > > > > > > development
> > >> > > >> > > > > > > > > > > > > > > experience, while Airflow evolves
> > into
> > >> the
> > >> > > >> go-to
> > >> > > >> > > for
> > >> > > >> > > > > > > > > > orchestrating
> > >> > > >> > > > > > > > > > > AI
> > >> > > >> > > > > > > > > > > > > > > workflows. By officially supporting
> > it,
> > >> > > we’ll
> > >> > > >> > > enable
> > >> > > >> > > > > > > multiple
> > >> > > >> > > > > > > > > > users
> > >> > > >> > > > > > > > > > > > to
> > >> > > >> > > > > > > > > > > > > > > interact with Airflow through their
> > >> LLMs,
> > >> > > >> > > > streamlining
> > >> > > >> > > > > > > > > automation
> > >> > > >> > > > > > > > > > > and
> > >> > > >> > > > > > > > > > > > > > > improving accessibility across
> > diverse
> > >> > > >> workflows.
> > >> > > >> > > All
> > >> > > >> > > > > of
> > >> > > >> > > > > > > that
> > >> > > >> > > > > > > > > is
> > >> > > >> > > > > > > > > > > > viable
> > >> > > >> > > > > > > > > > > > > > > with relatively small development
> > >> effort
> > >> > > (see
> > >> > > >> > next
> > >> > > >> > > > > > > > paragraph).
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *How should it be implemented?*
> > >> > > >> > > > > > > > > > > > > > > As of today, there have been
> several
> > >> > > >> > > implementations
> > >> > > >> > > > of
> > >> > > >> > > > > > MCP
> > >> > > >> > > > > > > > > > servers
> > >> > > >> > > > > > > > > > > > for
> > >> > > >> > > > > > > > > > > > > > > Airflow API, the most visible one
> [4]
> > >> made
> > >> > > by
> > >> > > >> > > > Abhishek
> > >> > > >> > > > > > > Bhakat
> > >> > > >> > > > > > > > > > from
> > >> > > >> > > > > > > > > > > > > > > Astronomer.
> > >> > > >> > > > > > > > > > > > > > > The efforts of implementing it and
> > >> > > >> maintaining it
> > >> > > >> > > in
> > >> > > >> > > > > our
> > >> > > >> > > > > > > > > codebase
> > >> > > >> > > > > > > > > > > > > > shouldn't
> > >> > > >> > > > > > > > > > > > > > > be too cumbersome (at least in
> > >> theory), as
> > >> > > we
> > >> > > >> > could
> > >> > > >> > > > > > utilize
> > >> > > >> > > > > > > > > > > packages
> > >> > > >> > > > > > > > > > > > > like
> > >> > > >> > > > > > > > > > > > > > > fastmcp to auto-generate the server
> > >> using
> > >> > > the
> > >> > > >> > > > existing
> > >> > > >> > > > > > > > OpenAPI
> > >> > > >> > > > > > > > > > > specs.
> > >> > > >> > > > > > > > > > > > > I'd
> > >> > > >> > > > > > > > > > > > > > > be very happy if Abhishek could
> share
> > >> his
> > >> > > >> > > experience
> > >> > > >> > > > in
> > >> > > >> > > > > > > this
> > >> > > >> > > > > > > > > > > thread.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *Where else could we utilize MCP?*
> > >> > > >> > > > > > > > > > > > > > > Beyond the scope of the public
> API, I
> > >> > could
> > >> > > >> also
> > >> > > >> > > > > imagine
> > >> > > >> > > > > > > > using
> > >> > > >> > > > > > > > > it
> > >> > > >> > > > > > > > > > > to
> > >> > > >> > > > > > > > > > > > > > > communicate with Breeze.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *How do we proceed from here?*
> > >> > > >> > > > > > > > > > > > > > > Feel free to share your thoughts
> here
> > >> in
> > >> > > this
> > >> > > >> > > > > discussion.
> > >> > > >> > > > > > > > > > > > > > > If there are no objections, I'll be
> > >> happy
> > >> > to
> > >> > > >> > start
> > >> > > >> > > > > > working
> > >> > > >> > > > > > > on
> > >> > > >> > > > > > > > > an
> > >> > > >> > > > > > > > > > > AIP.
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > Sincerely,
> > >> > > >> > > > > > > > > > > > > > > Shahar Epstein
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > > > *References:*
> > >> > > >> > > > > > > > > > > > > > > [1] Slack discussion,
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > >
> > >> > > >> > > > >
> > >> > > >> > >
> > >> > > >>
> > >> >
> > https://apache-airflow.slack.com/archives/C06K9Q5G2UA/p1746121916951569
> > >> > > >> > > > > > > > > > > > > > > [2] Introducing the model context
> > >> > protocol,
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > > https://www.anthropic.com/news/model-context-protocol
> > >> > > >> > > > > > > > > > > > > > > [3] GitHub Official MCP server,
> > >> > > >> > > > > > > > > > > > > >
> > >> https://github.com/github/github-mcp-server
> > >> > > >> > > > > > > > > > > > > > > [4] Unofficial MCP Server made by
> > >> Abhishek
> > >> > > >> Hakat,
> > >> > > >> > > > > > > > > > > > > > >
> > >> > > >> > > https://github.com/abhishekbhakat/airflow-mcp-server
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > > >
> > >> > > >> > > > > > > > > > > >
> > >> > > >> > > > > > > > > > >
> > >> > > >> > > > > > > > > >
> > >> > > >> > > > > > > > >
> > >> > > >> > > > > > > >
> > >> > > >> > > > > > >
> > >> > > >> > > > > >
> > >> > > >> > > > >
> > >> > > >> > > >
> > >> > > >> > >
> > >> > > >> >
> > >> > > >>
> > >> > > >
> > >> > >
> > >> >
> > >>
> > >
> >
>

Reply via email to