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