Apologies for the delay, thanks for your great insights Jarek! I'll consider them when starting to work on the AIP and initial implementation.
Shahar On Tue, Jun 17, 2025 at 7:43 PM Jarek Potiuk <ja...@potiuk.com> wrote: > I wanted to pass my learnings from the AI Plumbers conference > https://lu.ma/vqx423ct that I was at just before Berlin Buzzwords. This is > where AI open source "creators" meet and discuss on the "low level AI > engineering" - and MCP was one of the subject of the unconference part we > had - and of course I jumped in and took part in it and listened (mostly) > and spoke (a bit) on our case (and listened to feedback) > > My take on it - and this summarises > 2 hour discussion we had.... > > * MCP is about "intents" of people (or AI imitating people) - not about > what you can do in the system, but what you want to achieve. MCP is really > a bridge between "engineering" driven API which describes low-level > capabilities of the system and "Product" driven view of what users want to > achieve (so far, so good - using use cases as starting point for MCP > running server is likely good idea) > * There are different users of your system and different expectations of > what they want to achieve. It's nearly impossible to figure out what > exactly every single user of Airflow would want from it - we know about > vastly different cases on how airflow is used, and we will likely never be > able to create an MCP server that would not be limited to a very small set > of use cases - which means that if we release an MCP server, it will be > usable by some but non-usable by others. This is a striking contrast with > the API approach where we deliberately create an API to be composed of a > small set of actions you can use and basically anyone can tailor it to > their expectations on how they are using it. > * There is also one important aspect of MCP server that is currently very > hotly debated - i.e. security. we should make sure that whatever we make > possible to do by the "agent" is not breaking the security assumptions and > model of those who run Airflow. > * Connected to that - whenever the MCP server has to get more permissions > to get more data that only more "privileged" user can access, there should > be human-in-the-loop involvement where the user can clearly give > permissions to agent to read specific data - or better, read the data and > hand it over to the agent. This is a crucial aspect in case we have some > parts of the system that require more permission than "default". > > In essence - no-one yet knows really how to do "good MCP" - we are very > early stage and things will get better over time in understanding what and > how to implement parts of it - and we should focus now on things that are > "known" leaving the "unknown" for our users to fill (and adapt and modify > in the future) > > Generally speaking I think summary of the conclusions I had was: > > * The term that I really liked is that we should likely not have our own > MCP server that people will be treating as a black-box, but that we should > be "MCP READY" -> i.e. we should give our users an option to have MCP > server that they will have to configure and adjust in the way that will be > good for them and that they will have to essentially build themselves, > building in prompts, capabilities they expect as "users" from the system, > using the building blocks, scaffolding and tooling that we will provide > them. > > * Open API and generating MCP server "base" from it is a good idea - it > provides a very good base in terms of security and we can turn our expert > knowledge of airflow internals into better describing the API. Ee should > focus indeed (and having a scaffolding) on improving description and > documentation of the Open API, use the generator to generate "scaffolding > MCP" from Airflow's openapi and tell the user "Here are next steps that > you have to do in order to have your MCP server" is likely most effective > way and safest. We should not pretend that we can implement the best > prompts for our users, most likely users should be able to write their > prompts that will better describe what they want from the system - we can > come with some examples, and guide the user on what they should do with > them and they will have to write, adapt and adjust their prompts - > especially that each of our users has different dag structure, functions, > criticality, etc. etc. Generally - Airflow is so generic that only the user > who knows their DAGs can properly descibe in a human language what they > might want from the system. Our OpenAPI should have a good-enough > description that it should be "easy" to describe the MCP prompts and such > that are good for them. > > * the security we have from making sure the MCP server can **only** do > whatever our OpenAPI allows - is already a very good start for security. > But we should also implement a layer of "Human In The Loop" that will allow > the MCP server to have access to more sensitive data - this is something > that we currently do not have, generally allowing the user to specify > access to only part of what they have access to - and exposing it to the > MCP layer in secure way. Without it, MCP server will be very limited in > many cases as it will not have access to necessary data to make it powerful > enough, but we also (by human in the loop) need to be able to expose more > data when needed (and control it by the human) > > * in essence - rather than having a single "MCP server to rule them all" - > we should have a mechanism that users should be able to build their own > server easily and use some of the building blocks we provide them to do so > (especially around security). But they should be ultimately in control of > what "intents" they might have when interacting with Airflow. > > Those are the thoughts and learnings I had. Maybe that will be helpful in > our > > J. > > > On Wed, Jun 4, 2025 at 1:09 PM Jason Sebastian Kusuma < > jsjasons...@gmail.com> > wrote: > > > I want to present a use case I have in mind. I think it would be useful > for > > task delay analysis for tasks in complex workflows spanning multiple DAGs > > or assets. > > > > We can ask questions like "why does task X finished later than > yestersay", > > where it could fetch upstream tasks and upstream DAGs execution durations > > from this day and yesterday, use them as context and conclude which > > upstream tasks causes the delay. > > > > On Wed, Jun 4, 2025, 5:53 PM Jason Sebastian Kusuma < > jsjasons...@gmail.com > > > > > wrote: > > > > > Hi all, > > > > > > Glad that my initial slack thread has been brought into an interesting > > > discussion. Would love to contribute to this effort. > > > > > > > > > Best regards, > > > > > > Jason Sebastian Kusuma > > > > > > On Wed, Jun 4, 2025, 5:07 PM Sumit Maheshwari <sumeet.ma...@gmail.com> > > > wrote: > > > > > >> 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 > > >> > > >> > > >> > > > > > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > > >> > > >> > > >> > > > > > > > > > > >> > > >> > > >> > > > > > > > > > >> > > >> > > >> > > > > > > > > >> > > >> > > >> > > > > > > > >> > > >> > > >> > > > > > > >> > > >> > > >> > > > > > >> > > >> > > >> > > > > >> > > >> > > >> > > > >> > > >> > > >> > > >> > > >> > > > > > >> > > >> > > > > >> > > >> > > > >> > > >> > > >> > > > > > >> > > > > >> > > > >> > > > > > >