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