#527: MCP Servers for Python Devs - podcast episode cover

#527: MCP Servers for Python Devs

Nov 10, 20251 hr 6 minEp. 527
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Today we’re digging into the Model Context Protocol, or MCP. Think LSP for AI: build a small Python service once and your tools and data show up across editors and agents like VS Code, Claude Code, and more. My guest, Den Delimarsky from Microsoft, helps build this space and will keep us honest about what’s solid versus what's just shiny. We’ll keep it practical: transports that actually work, guardrails you can trust, and a tiny server you could ship this week. By the end, you’ll have a clear mental model and a path to plug Python into the internet of agents.

Episode sponsors

Sentry AI Monitoring, Code talkpython26
NordStellar
Talk Python Courses

Links from the show Den Delimarsky: den.dev

Agentic AI Programming for Python Course: training.talkpython.fm

Model Context Protocol: modelcontextprotocol.io
Model Context Protocol Specification (2025-03-26): modelcontextprotocol.io
MCP Python Package (PyPI): pypi.org
Awesome MCP Servers (punkpeye) GitHub Repo: github.com
Visual Studio Code Docs: Copilot MCP Servers: code.visualstudio.com
GitHub MCP Server (GitHub repo): github.com
GitHub Blog: Meet the GitHub MCP Registry: github.blog
MultiViewer App: multiviewer.app
GitHub Blog: Spec-driven development with AI (open source toolkit): github.blog
Model Context Protocol Registry (GitHub): github.com
mcp (GitHub organization): github.com
Tailscale: tailscale.com

Watch this episode on YouTube: youtube.com
Episode #527 deep-dive: talkpython.fm/527
Episode transcripts: talkpython.fm

Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong

---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython

Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython

Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy

Transcript

Speaker 1

On this episode, we're digging into the Model Context Protocol, or MCP. Think LSP for AI. Build a small Python service once, and your tools and data show up across editors and agents like VS Code, Claude Code, and more. My guest, Den Delamarski from Microsoft, helps build this space and keeps us honest about what's solid versus what's just shiny. We'll keep it practical, transports that actually work, guardrails you can trust, and a tiny server you could ship this week.

By the end, you'll have a clear mental model and a path to plug Python into the internet of agents. This is Talk Python To Me, episode 526, recorded September 30th, 2025.

Speaker 2

Talk Python To Me, yeah, we ready to roll. Upgrading the code, no fear of getting old. Async in the air, new frameworks in sight. Geeky rap on deck. Quarth crew, it's time to unite. We started in Pyramid, cruising old school. lanes. Had that stable base. Yes. Welcome to Talk Python To Me, the number one podcast for Python

Speaker 1

developers and data scientists. This is your host, Michael Kennedy. I'm a PSF fellow who's been coding for over 25 years. Let's connect on social media. You'll find me and Talk Python on Mastodon, Bluesky, and X. The social links are all in the show notes. You can find over 10 years of past episodes at talkpython.fm. And if you want to be part of the show, you can join our recording live streams. That's right. We live stream the raw uncut version of each episode on YouTube.

Just visit talkpython.fm/youtube to see the schedule of upcoming events. And be sure to subscribe and press the bell so you'll get notified anytime we're recording. This episode is sponsored by Posit Connect from the makers of Shiny. Publish, share, and deploy all of your data projects that you're creating using Python. Streamlit, Dash, Shiny, Bokeh, FastAPI, Flask, Quarto, Reports, dashboards, and APIs. Posit Connect supports all of them. Try Posit Connect for free by going to

talkpython.fm/posit, P-O-S-I-T. And it's brought to you by Nordstellar. Nordstellar is a threat exposure management platform from the Nord security family, the folks behind NordVPN, that combines dark web intelligence, session hijacking prevention, brand and domain abuse detection, and external attack surface management. Learn more and get started keeping your team safe

at talkpython.fm/nordstellar. Hey, I want to take just a minute and talk to you guys. I just released a really cool new course called Agentic AI Programming for Python Developers and Data Scientists. You've heard me mention a couple times on the podcast how I've had some incredible success with some of these Agentic AI coding tools. I hear people talking about how they're not really working for them. And then I look at the results that I'm getting and think, wow, that's something

that would have taken two weeks. It's built in two hours and it's well factored and good looking code. What gives? Why is this difference here? Well, I decided to create this course to share all the things that I'm doing with these agentic coding tools with the idea of making you as successful and productive as well. Yes, I know we're all tired about hearing about how AI is going to change everything for software developers.

But there are some tools here that will give you truly difference making levels of productivity. And that's what this course is about. So check it out at talkpython.fm/agenticai. The links in your podcast player show notes. Let's get to the interview. Ben, welcome to Talk Python To Me. Great to have you here.

Speaker 3

Hello, hello. I'm excited to be here. I'm a big fan of Talk Python. I'm a big fan of you and I'm a big fan of Python. So there we go.

Speaker 1

Wow. Thank you. I've been on your show, Work Item, which was really fun. Thank you for having me. And now it's time to dive into your expertise. I'm going to talk agentic stuff, and especially we're going to talk model context protocol, MCP. I think this is one of the really important layers that is kind of invisible, right? A lot of the coding agents and coding AI and chat LLMs and all that, that's what people think when they hear all these things. But there's got to be plumbing, right?

We're going to talk to plumbing.

Speaker 3

- There has to be, yeah.

Speaker 1

- Nothing is more amazing than plumbing. Like we all get excited about plumbing. So no.

Speaker 3

- I know.

Speaker 1

- Technology plumbing is cool.

Speaker 3

- Yeah. I mean, it's one of those things too, that look at how fast it grew. Think about it like last year at this time, like at the time when we were recording the work item episode, MCP did not exist. - Yeah. - Just not a thing. - That's wild. - And now everybody's talking about MCP. Like you talk to any big companies, you talk to like the banks, the healthcare, the gaming, Like everybody, everybody cares about MCP.

Speaker 1

That's great. It's very great. We're going to dive into it. Before we do, let's dive into you. Give us a quick background on yourself.

Speaker 3

Absolutely. So I am Den Delamarski. I am a principal product engineer at Microsoft. I work in the core AI division. So we're focusing on, as the name suggests, AI stuff, but applied to developers. So I'm very, very heavily in the developer ecosystem. And I'm one of the core maintainers of the Model Converse Protocol. So I say one of because there's many of us. It's not just me. There's many wonderful, talented people way smarter than me. And yeah, that's a short intro.

Speaker 1

Okay. So when we talk about MCP, you're one of the people helping build it. That's incredible.

Speaker 3

That is correct. Yeah. I try to contribute as much as I can.

Speaker 1

Well, you know, before we move on, just how'd you get into that position?

Speaker 3

Oh, it all started with one of the things that was actually near and dear to my heart, which is security and authorization. So when MCP first came out, it had a auth spec. So we see on the screen right now, Michael is showing the kind of the model context vertical specification page. But when MCP first started, it had essentially a spec that outlines how to do authorization for MCP servers.

And that spec was a good start, but it made a lot of assumptions about the infrastructure and the tooling and how developers build MCP servers that were, I want to say, a little flawed at scale. So my thought was like, oh, I'll just get some smart people with me and we'll help rewrite this. And we asked the MCP folks at Anthropic and they said yes. And so we did. And I basically like incorporate all the feedback and iterated on it. And then again, it's a massive community effort.

We pushed it out and got it merged in the June version of the protocol. And then the folks at Anthropic just reached out and said, hey, do you want to help shape the protocol?

Speaker 1

And here I am helping shape the protocol. You seem to know what you're talking about and you sure are participating a lot. Why don't you just hang around? Yeah, basically. Okay, that's great. And you work at Microsoft. What do you do there?

Speaker 3

That is correct. At Microsoft, I work on developer tools. So think like if you ever use Copilot, if you ever use any, oh, by the way, GitHub spec kit for folks that have not heard about it, we released it like last month. But that's something that I helped drive and help maintain is how do you do spec driven development with agentic tools, agentic coding tools? Yeah, that's what I do. Okay, cool.

Speaker 1

So something that I've started to do a lot when I'm involving AI, I go in like spurts. I'll work for a long time, just sort of writing regular. And then I'm like, ah, this is really a lot of drudgery, not critical or central to what I'm doing. Let me just uncork some agentic AI on it and let it go. But one of the things I've started doing a lot, and it has to do with the spec thing that you've touched on here, is I will force, I'll pick a really high level model, like a complex smart model.

And I'll say, I want to plan this out. I've given you some ideas, look at the code and let's create a detailed plan of what you're gonna do. And I'll have it write a markdown file. And even though a lot of my projects, I have just a plans folder and it's just full of all these different projects. You know, maybe they're sort of equivalent to a PR in the end. - Yeah. - And I'll plan that out really well. Then I'll switch it down to a lower model, to a new context and say, let's just do phase one.

Let's do phase two and knock it out. That sounds like a Michael just made up some stuff equivalent of the spec based programming. Is that right? Like, how does that compare to what you're talking about here?

Speaker 3

It's close. It's very close. And this is where when when people talk about spec driven development, I want to emphasize the fact that there's no one correct approach. Like people think that it's like, oh, I'm just going to wait for whatever company is going to come out and come up with the right thing. Like it all depends on your experience. It depends on your models.

The spec kit project that we launched is our hypothesis, our experiment on how we believe And what it does is basically what do you describe? You start with a spec. You start outlining what and why I am building. Then you focus on the technical implementation plan, which is like, OK, now what technology stack I'm using here.

And then you break that down into tasks, which are basically just consumable chunks that the AI can go and either iteratively or in parallel execute and build the stuff that you want to build. So all of it, again, is still an experiment. So I'm not by any stretch claiming that what we have is the end of it all or the right way to do this. There's many, many ways to do this.

Speaker 1

Okay. And you even over on DevBlogs wrote, diving into spec-driven development with GitHub SpecKit.

Speaker 3

That is correct. There's also a GitHub blog that I highly recommend folks check out. It's actually on the github.blog. So you can go there and look for, there you go. It's called Spec-Driven Development with AI. Get started with a new open source toolkit. And we do have an open source toolkit.

Speaker 1

All right. So how is this different than just what I've done? I know I've seen this before.

Speaker 3

Yeah. Okay. Yeah. It just, all it does is think of it as this is the recipe book, right? Like if you decided to like, Oh, I want to cook up a new application and you're like, well, what's the recipe? Like this bundles the recipe for instance. And by the way, here's the box set of ingredients that you can just use to build this. That's what this is.

Speaker 1

That's SpecKit. Okay. Well, very exciting. Let's maybe start to get into the main topic though. So MCP servers. I've heard this put out as sort of an analogy to the LSP, which I know is, I first heard of it in VS Code. I don't know if it came from VS Code. Maybe it did, but it's the thing that allows so many different editors to plug into tooling like PyLance or Powerfly or TY or a bunch of cool things are coming out around here, different implementations of LSPs.

And I've heard that MCPs are kind of like that for AI. Maybe contrast those a bit for people.

Speaker 3

Yeah. I mean, if you look at the MCP specification, if you look through the website and just peruse through the documentation, you might have like faint echoes of LSP design decisions, faint echoes of kind of the LSP architecture. But yes, basically think of it this way. The way the folks at Anthropic have been describing it, it is USB-C for AI.

And when I say that is the problem with a lot of the LLMs, a lot of the modern models is the fact that it takes a some amount of time to train them, which means that inherently they get locked into a specific training date, if you will. So the corpus of knowledge that gets embedded in them gets locked at a certain date.

And when you talk to a lot of enterprise customers, you talk to a lot of customers in the wild, it doesn't need to be enterprise, by the way, it could be startups, could be hobbies, developers like, well, I want to use AI with this fresh data that I have. Maybe I have, I don't know, a Dropbox account and I want to use AI to sort my files. Or maybe I want to use some data inside Salesforce to go and help me analyze my sales and find

Speaker 1

out outliers and maybe customers I want to focus on. And I just interviewed the people from Nice Guy, Nice GUI, and they build robots that cruise around in architectural areas. Like what maybe I want a, I want some way to like ask AI, look at how the robots are doing now and then, or see if they're busy, find a free one, right? That might be a thing, huh? Yeah. Yeah, no, for sure. Exactly.

Speaker 3

It's like any kind of live data or managed data, something that is more dynamic than the corpus of knowledge that is embedded in these models by default. And for those, if I would ask you like, OK, well, let's imagine a world where MCP does not exist. How would you go about plugging this data in like into your LLM? Right. And like there's different ways to do this. Like people have done like the rags.

People have done, you know, dump like CSV files and then be like, oh, analyze the CSV file and all these like hacky solutions. But it feels like it's not universal. It doesn't really work for all cases. And something that you've done in one LLM doesn't work in another. And now you're locked into this environment. So it becomes very hard to manage. So MCP is essentially the answer to that. MCP says, look, we don't care what data you're connecting to, what applications, what actions.

we provide you a universal interface by which every single LLM, every single client that understands MCP can invoke those primitives, get the data and embed the data in the context that you're operating in. And that's another thing, important thing. People think of MCP as the data connector, but it's not only a data connector. It's a, I want to call it like a primitive connector because you can use MCP with a lot of wonderful things that folks have probably seen already.

Like I, my favorite example here is Blender MCP. Like for folks that don't know, Blender is a 3D modeling tool. And there's an MCP server by which you can actually guide an LLM saying like, I am building this like medieval scene with a dragon and the lighting and so, and it goes and it just, it builds it for you, right? Through this MCP and MCP is the connective layer between Blender, which has its own native API. And then there's the MCP server that the LLM knows how to talk to,

right? Because the LLM wouldn't know how to like, okay, how do you talk to Blender? How do you, how do you go and set up the plugin and whatever the web sockets, whatever they might be using, It's super complex, so it needs expertise, but an MCP server is essentially saying, I have these set of primitives that the LLM can invoke at any time, like create polygon or create scene or create sphere, and then based on that information, go and iterate on it. So MCP is that adapter.

Speaker 1

Yeah, I see. So the LLM or agentic AI or whatever that you're working with, it says, all right, I'm going to talk to Blender. Blender says, I have these core ideas, these core building blocks. it sort of turns it more into Lego instead of just I'm going to have a saw or whatever I can go. Exactly. Okay, I have spheres, I have cylinders, I have squares, I have shading. They've asked me to do this. What can I build composing that sort of? Exactly. Precisely. Right.

Speaker 3

So it's you're operating on a set of primitives, right? And this is where you don't even need to expose the entirety of the surface of blender API's. You can just say like, oh, I want to have like, there's the 10 primitives that I think are the most valuable. I'm going to go ahead and use those. And out of those, you compose things.

Speaker 1

And maybe there's an advantage to that too, right? Maybe you're like, I want to use Blender to create 2D scenes. So I'm only going to expose stuff or rotations or whatever that preserves some sort of 2D view of the thing. Like it's, we're doing CAD where it's top down from the side. Like those are the ways you're going to look at. You can't arbitrarily rotate it.

Speaker 3

Yeah. So yeah, so essentially like the MCP servers in this case act as a universal translation layer between whatever's downstream of the MC server, which can be an application, an API, a database, like anything. And the client, which knows like, I know how to talk to MCP and nothing else. I have no idea what's behind. I don't know what the REST API you have, what's the authentication authorization logic,

Speaker 1

just give an MCP server. Okay. It sounds a little bit like an API. And by API, I mean, yes, most general sense of the word not, oh, it's a REST API. And it makes sure it uses the verbs this way. I mean, like anything that you you could sort of call and either get data or cause an action that could be a REST API, but it could just be, you know, an OS level API or some something

Speaker 3

like that. Yeah, right. Yeah, totally. I mean, it's all it is just a connective layer. So yeah, and people often ask like, well, couldn't you do this with like REST APIs? Couldn't you do this with a GraphQL APIs instead? Right? Because like, it's been invented. Why are we creating new

things. But the thing about this is, even if you look in the world of REST APIs, like think about the last time you worked with a REST API from some vendor and then switched another REST API from someone, how much of that knowledge was like one-to-one reused or the infrastructure that you built or authentication logic? You have like, you have these like 17 different dances by which you get the token, right? And MCP essentially is the opinionated version of saying, no, this is how

you do auth. This is how you do message passing between entities. This is how you expose primitives.

Speaker 1

It's a highly opinionated stack. This portion of Talk Python and me is brought to you by Sentry's AI agent monitoring. Are you building AI capabilities into your Python applications? Whether you're using open AI, local LLMs, or something else, visibility into your AI agent's behavior, performance, and cost is critical. You will definitely want to give Sentry's brand new AI agent monitoring a look.

AI agent monitoring gives you transparent observability into every step of your AI features so you can debug, optimize, and control the cost with confidence. You'll get full observability into every step of your AI agent. That is model calls, prompts, external tool usage, and custom logic steps. AI agent monitoring captures every step of an AI agent's workflow from the user's input to the final response.

And your app will have a dedicated AI agent's dashboard showing traces and timelines for each agent run. You'll get alerts on model errors, latency spikes, token usage surges, and API failures protecting both performance and cost. It's plug-and-play Python SDK integration. Open AI for now for Django, Flask, and FastAPI apps with more AI platforms coming soon. In summary, AI agent monitoring turns the often black box behavior of AI in your app into transparent, debuggable processes.

If you're adding AI capabilities to your Python app, give Sentry's AI agent monitoring the look. Just visit talkpython.fm/sentry agents to get started and be sure to use our code, TALKPYTHON, one word, all caps. The link is in your podcast player's show notes. Thank you to Sentry for supporting Talk Python and me.

And so then once implemented them, we call them the hosts like VS Code or PyCharm or cursor or whatever, Claude Code, it knows, all right, here's how I inspect the capabilities of this thing. Here's how I stream back the responses if it's going to take it 10 minutes to do what I asked it. This is how you do it with streaming HTTP APIs and so on.

Speaker 3

Precisely, right? Because you only need to then implement once. And especially if you use one of the existing MCP SDKs that we're going to be talking down the line, like that's the core value prop is like you do it once and it just works. You don't need to worry about like, oh, but this other MCP server decided to implement their auth in a completely different way. What do I do now? Yeah.

Speaker 1

Now, if I want to build one of these things, does it does it have to be implemented in an LLM or can I build just a traditional FastAPI API that ultimately does queries against a database with no, no prompt?

Speaker 3

Yeah, no, I mean, like MCP servers themselves are just essentially entities that they're capable of exchanging JSON RPC messages. Like you can absolutely, you can write a client that is completely detached from an LLM and just invokes tools, right?

Speaker 1

Okay. Right. Awesome.

Speaker 3

You can, if you want to, I don't know why you would do that, but you

Speaker 1

Absolutely can. I'm sure people have a reason. So I see a comment out in the audience from Frankie about RAG. And also, you mentioned RAG at the beginning. You say, well, maybe RAG is not working for you. Let's just sort of contrast that a bit, right? Like, maybe not everyone knows what RAG is. Retrieval Augmented Generation. What is this?

Speaker 3

Yeah, essentially, if you have a way for you to optimize, basically, the context for the LLM. I'll put it this way. in very layman terms, it's like, I have a code base. I have a code base that has a number of entities like classes and functions and everything. And in a rag, you're essentially building a vector database that says like, okay, here's the list of things that exist. And then the LLM, you can go and query this thing and find out what exists in this code base.

So if you make decisions about like, I want to build a authorization component, how do I do this? Like, okay, well, it can build out that context for itself. This is kind of the very basic idea behind the rag.

Speaker 1

Got it. So instead of trying to put all the information just into a prompt, it has to read every time you can kind of additionally train it on these things and then keep the question shorter because it knows the details.

Speaker 3

Right. You essentially have a knowledge base that's outside of the primary training set. Like that's the core value prop of this is you're augmenting the LLM with additional knowledge that you have in the context that you're operating in.

Speaker 1

Okay. So something I've wanted to build for a while, and I do intend to, but we'll see if I ever get there, is something where people could go and have like an AI conversation with this episode, for example, right? With something on the podcast, I've got 10 years of transcripts. Yeah. You know, like over a million words, I'm pretty sure. That doesn't fit in most contexts. And thing for Talk Python. Maybe there's an MCP angle that's really interesting. Like, what could I do

with MCPs in the podcast, do you think? MCPs in a podcast. So one of them, of course, is like querying

Speaker 3

the data, which is I want to make sure that, you know, find me all the episodes where I ever talked with Michael about AI, right? It could be one thing. I actually think that because of the richness of the MCP capabilities, to me, when it comes to like podcasts, I envision a world where I can use MCP piece to edit podcasts. That's my dream of this. And actually, like this is something that I've been experimenting with because I haven't fully wrapped around kind of like how exactly that would

look like. But one of the things that I do, like as I'm sure you do when you edit the podcast, you know, you have to go through it, generate the transcript, clean up things, then make sure that you add timestamps, select the most interesting parts about the podcast. So can I potentially go and say, okay, here's where my MP3 file is.

Can you go and generate transcript, clean it up, and then find me the most interesting parts about this and then produce me a report that I can then use to maybe like a HTML-based web app and I can just like a one-click save like publish, right?

And to me, like the value of maybe the MCP connector here is that maybe I can plug it in behind the scenes with like FFmpeg to go and convert the MP3 into a WAV file and then use whisper to go and generate the transcript and then go and extract things for it right and for a lot of these pieces of the tasks that you need to do you would imagine that you would have a different tool inside my mc server which is tool is one of the primitives that

basically a lm invokes and it says oh let me generate the transcript and there's a tool that's called generate transcript and it's gonna have that to produce a transcript and it's like okay

Speaker 1

there's another tool that says yeah yes you could give just give the lm an episode number 200 or something. And it could go to your podcast MCP server and say, transcript for 200, even if it doesn't exist, it'll figure it out and generate it, that kind of stuff. Yes. And also the wonderful

Speaker 3

thing about LLMs and MCP servers is that you're not actually using just one MCP server, right? So I might have an MCP server for myself that is basically, like I said, the one that generates transcripts, you know, creates a landing page in my podcast website. And then based on that content, there's also next steps. Now I have an MP3, I want to upload that MP3 to Cloudflare, where I host my podcast. So there may be a Cloudflare MCP server that the LM is going to invoke and say, I need to

now upload this. And then it's going to invoke the other MCP server, right? So you have this basically stack of MCP servers that you can start using one with another. And that's where the superpower comes from. Like you're not just using one application and saying like, okay, hold on,

let me, let me finish a task for podcast production. Then I'll do other things. Like it can chain things together and then say, oh, and by the way, there's an MCP server maybe for audio conversion that produces like 10 variations of the format. Let me invoke that.

Speaker 1

And then you're going through this process. Yeah, I think that's one of the really big, hints at one of the really big differences between just using a chat LLM versus some of the agent tool using types of things, right? The ability to say, now I have to accomplish this task. And I know I figured out there is some way I'm capable of accomplishing that, right? Either that's to list a directory, to look for a file or to communicate with the Cloudflare MCP that we talked about and so on.

Speaker 3

Yeah, it's power is composability. I'll put it this way. It's the fact that you can compose things together and have them work together based on the prompts that you have and scenarios that you have.

Speaker 1

Okay, cool. So imagining the Cloud Player MCP thing exists, your podcast preparation MCP thing exists. How does my AI know? Let's keep it real basic. Let's say I'm using Claude Code, but we could plug this into others, but just even something just terminal-based, no UI or whatever, like, yeah, it just is it going to discover them just out of the blue? Probably not all of them. You got to point it at them. And yeah, how does it know which ones it's

allowed to use in this context? Right? Like, how do I get it so I can actually use one of these?

Speaker 3

And we'll talk about maybe building them. Yeah. So for MCP servers themselves, you add them explicitly to your host or your client, whatever that might be. VS Code, Claude Code, cloud desktop, doesn't matter. So you explicitly say, I want to use my podcast MCP. I want to be using my Cloudflare MCP server. I want to use my, I don't know, Descript MCP servers to remove the ums and uhs from the podcast, right? So you would essentially go through some means in that client,

on your client of choice, to go and add those MCP servers. Now, the question is, how do you discover those MCP servers? So there's various places where you can go to. We just launched the MCP registry that is nothing short other than an API that indexes all of the available MCP servers that are out there, right? So we're looking right now at a blog post on the MCP blog. It's called Introducing the MCP Registry that got published September 8th of this year. So not that long ago, but basically-

Speaker 1

22 days or something like that. And when you say we, you're talking the official model context protocol.io working group.

Speaker 3

Yes, yes. The model context protocol folks, and there's a bunch of them that were specifically focused on the registry, right? And you see them in the authors like David Sariapara, Adam Jones, But they essentially were in charge of kind of building this out. And the registry is a centralized API, essentially, that aggregates an index of MCP servers that are out there. So you can use the registry inside your client, whatever client you might be using, to find MCP servers for what you want.

Maybe there is a Playwright MCP server. Maybe there is a Perplexity MCP server. So it's all coming from the registry. Okay. Sounds a little bit like Docker Hub. Kind of. Yes. And just like Docker Hub, you actually don't need Docker Hub to install an MCP server. or in this case, like a Docker container, right? Like you can just go to random GitHub repos and find somebody to build an MCV server for what you're trying to do, and you can just plug it in.

Speaker 1

- Yeah, interesting.

Speaker 3

Yeah, that's how I use Docker Hub

Speaker 1

by not using Docker Hub for all the stuff I build, but you know, I get the foundations. - I know it exists. - Exactly, I'm like, ah, but I'm gonna build it here. It also has the concept of public and private registries.

Speaker 3

- Yes, yeah. So public registry is essentially something that like GitHub, by the way, maintains their own registry, right? So it's public and you can just go and discover MCP servers through the GitHub registry or the public registry. Also, we know that MCP servers are used within different companies. You might have, let's say, some data that you're locking in behind seven gates that only certain people can access. You can build internal MCP servers.

And for those things, you ship internal private registries where you can say, no, no, no. I want my folks in my company to only access these servers and nothing else. Right.

Speaker 1

Sure. Yeah, that makes sense. Is there a place that I can go to the model context protocol registry, the MCP registry and like browse it like you can?

Speaker 3

Yeah. Yeah. So right now you can't browse it through a UI, but you can look at other registries that can consume some of the content from here. So like I believe GitHub registry is one of the consumers. So you can look at I think it's gethub.com slash MCP. There we go. Yeah.

Speaker 1

Okay.

Speaker 3

And you can see some of the registries and you can see like if you click on one of the install buttons is going to like allow you to take it directly into like VS Code and then just bring it in and install it in the context of your editor.

Speaker 1

- Okay, yeah, very nice. So some of these are like web crawling, Notion. Okay, I know Notion just added a big agentic AI thing and I've seen a lot of pushback. There's probably a lot of happy users who just use it, but people are like, why is this in my way? I just wanna work with this. But you know, if you were, it'd be really cool to maybe plug that in instead of going, we're gonna try to use the API to download this embedded database with the information. - Exactly.

- Like you just talk to it, right? - Exactly.

Speaker 3

That's again, what I like about MCP is that if I want to connect to Notion to get my notebook and some notes from my standup meetings, I don't need to worry about how they structure their API and how to use auth or something. Just install the Notion MCP and then ask the alum, pull the latest notes and summarize them for me. And then it's gonna know. - It's their LinkedIn one. Their API is so bad.

Speaker 1

- Oh. - Oh. - Oh, it makes me sad.

Speaker 3

For any LinkedIn people watching this, we need to have a LinkedIn MCP server.

Speaker 1

- Yes, I think so. It might save me. Okay, very interesting here. I think people should come here and just kind of poke around. You can see there's a lot of, a lot of interesting things that I think might spark some ideas.

Speaker 3

- Yeah.

Speaker 1

- As you start to play with it, you know, like Postman. So I guess one of the problem, well, not one of the problems, one of the things you're gonna want to deal with is, a lot of these I see here, LaunchDarkly, Postman, Atlassian, Notion, and so on. You got to pass things like I am this person. Therefore, I want to see my information, not other people's or only public. I got to see private info, but mine. There's a whole security side.

And I think that's kind of how you got pulled into it, right?

Speaker 3

Yeah. Oh, yeah. Yeah. So for these things.

Speaker 1

Yeah. We just put like an API key in GitHub and you just check that in and just use that when you're trying to.

Speaker 3

Don't do that. Don't put API keys in GitHub and check them in. What can be done, so starting with the latest spec of MCP that, again, shipped in June, there is a formal way for services to do authorization. So it's based on OAuth, OAuth 2.1. I know that there's people listening that's like, oh, no, did you just say OAuth? I have to learn OAuth now. You don't. Again, there's a lot of libraries that do this. If you're an MCP server developer, it's solved for you.

If you're an MCP server consumer, you don't even need to think about it. So when you connect an MCP server, as a consumer, you'll essentially have the ability to log in with your credentials. So if an MCP server, for example, for like we saw Chromo and we're like MongoDB, that's on the screen here. If I use the MongoDB server and I want to connect to a database, usually they provide you a way to either one.

You go into your MCP server config and you say, I will give you an API key if your server is using an API key. Or if it's using OAuth, then you can just essentially snap to using OAuth the standard flow. Your client is going to bootstrap the authentication flow. You're going to go to the box, enter your credentials, log in. The client is going to store the tokens, and then you access the server with your credentials as you getting access to your data, not something else.

Speaker 1

One thing that looks really interesting, and there's an example of it right here with the Nux. Never written a Nux app in my life, but here we have. I have one that helps you understand your Vite Nux app. One of the things that I think could be really interesting and probably MCPs could play a really important role is we have these huge foundation models, OpenAI and Cloud Opus and so on, that are generally knowledgeable about the whole world and are big, expensive to train.

But I can see a future where we get good enough to have a bunch of small models. Like this is the Vue.js model. If you need to know Vue.js, it's as good as anything, but it runs on your computer in a gig of RAM because it's just trained so specifically on Vue. And I feel like maybe you could MCP your way together like, well, I'm using this tech stack.

So we're going to click together a bunch of things that don't provide data, but provide information about what your architecture or something like that. What do you think?

Speaker 3

Yeah, I mean, I think it can go both ways, right? Like there's a specialized model. And there's an argument for saying that the more general scenarios would always work best. Like there's, I think there's always two camps of those folks that I talk to. I personally think that I think for certain things, there is a tremendous amount of value for hyper centralized or hyper local models. I'll give an example, right? Like I want to organize the photos on my machine.

Like maybe I have a lot of duplicates that, you know, because when you take photos of your modern cell phones, like just click, click, click, click. and then you have like 10 images of your dog and you're like, they're kind of the same, but I want to pick the best one. Like from a privacy standpoint, like I don't want to send that off to some server remotely somewhere with my photos, which, you know, there's like family photos.

There's all sorts of like stuff that I do not want to send off to some remote server. For those things, I want to use a local model. And maybe there's an MCP server that allows me to basically like, oh, I can find the photos and then crop them and like add some metadata or remove metadata or whatever I want to do, right? So for those things, I absolutely see the value in these like local models

where I can just say, I want it to be very good at this one specific task and that task only. And I will never use this photo model for web app creation, but photos is going to be darn good. And I think there's a lot of value for that. And if you augment it with MCP, I think it's

Speaker 1

superpowers right there. Yeah, it does seem like it could be. It could be this little step would benefit from a local model, but I don't want to constrain the entire problem solving to a local model. Right. I think that's kind of the problem. Like I use LM Studio a lot and I've got, for For example, I have the open AI 20 billion parameter open weights model that I actually program against.

And it does all sorts of cool stuff for me, but I don't use it for my general work because it's either too slow because it's on my Mac mini or I just want something that is better, right? Yeah. And so if you're going to just start a, like I'm using this model to solve this problem, that might not be the final outcome where we end up, right? This portion of Talk Python To Me is brought to you by Nordstellar.

Nordstellar is a threat exposure management platform from the Nord security family, the folks behind NordVPN that combines dark web intelligence, session hijacking prevention, brand abuse detection, and external attack service management. Keeping your team and your company secure is a daunting challenge. That's why you need Nordstellar on your side.

It's a comprehensive set of services, monitoring, and alerts to limit your exposure to breaches and attacks and act instantly if something does happen. Here's how it works. Nordstellar detects compromised employee and consumer credentials. It detects stolen authentication cookies found in InfoStealer logs and dark web sources and flags compromised devices, reducing MFA bypass ATOs without extra code in your app. Nordstellar scans the dark web for cyber threats targeting your company.

It monitors forums, markets, ransomware blogs, and over 25,000 cybercrime telegram channels with alerting and searchable context you can route to Slack or your IRR tool. Nordstellar adds brand and domain protection. It detects cyber squats and lookalikes via visual, content similarity, and search transparency logs, plus broader brand abuse takedowns across the web, social, and app stores to cut the phishing risk for your users.

They don't just alert you about impersonation, they file and manage the removals. Finally, Nordstellar is developer-friendly. It's available as a platform and an API. No agents to install. If security is important to you and your organization, check out Nordstellar. Visit talkpython.fm/nordstellar. The link is in your podcast player's show notes and on the episode page. Please use our link, talkpython.fm/nordstellar so that they know that you heard about their service from us.

And you know what time of year it is. It's late fall. That means Black Friday is in play as well. So the folks at Nordstellar gave us a coupon, BlackFriday20, that's BlackFriday, all one word, all caps, 20, two zero, that grants you 20% off. So if you're going to sign up for them soon, go ahead and use BlackFriday20 as a code and you might as well save 20%. It's good until December 10th, 2025. Thank you to the whole Nord security

team for supporting Talk Python To Me. For sure. And especially because for a lot of the generalized

Speaker 3

models, you're like, no matter how you look at this, you're not going to have the computer resources anywhere near what like open anthropic has right so like in terms of speed and quality what are you going to get you might get some like fine-tuned examples where some scenarios work very very well but i think ultimately if we look at the general use case these generalizable models

Speaker 1

are going to be ahead yeah i i definitely agree as well but i hadn't really considered how mcps might allow you to use the really high-end models to compose specialized not quite as generally smart but specialized versions of different things it could be yeah mcp can do anything mcp again is just it's it's a pipe what you do with that pipe is up to you yeah well let's talk about how one might build such pipes with uh with python so there's actually a model context protocol github

organization within there they have the python dash sdk the official python sdk for the mcp servers and clients. So that's also interesting, the clients bit. So maybe we could kind of like, there's a lot of concepts and things here, and I don't want to dive too much into code, but maybe we could work our way through some of the concepts and some of the steps of building

Speaker 3

such a thing. Yeah, totally. Well, I mean, it all starts from just getting the SDK, right? And this is for like anybody that's using Python. You can just get it through pip or uv. I'm a big fan of the folks at Astral. I think they're doing a fantastic job with uv and uvx. Like I use it for or get up spec kit. So, you know, uv add MCP, MCP CLI. And there you go, you can be on your way. It's as simple as that.

Speaker 1

- Yeah, okay, that'll do it. And then, yeah, you can specify like the CLI options or whatever kind you want. - Yeah, yeah. And also it's using fast MCP. Are you familiar with fast MCP? - No, I know some projects with fast in it, but not MCP.

Speaker 3

- Yeah, so fast MCP is basically, think of it like FastAPI for MCP. It's essentially like allowing you to compose MCP servers faster because it has a lot of the primitives baked in. So things like authorization, which can be like kind of a pain point, but if you use Fast MCP, it makes it a little easier. And Fast MCP is a integral part of the Python SDK story for the actual like official Python

Speaker 1

SDK. Right. The programming model looks like it would feel quite familiar to anyone who knows the Flask API or beyond. I think it's just, you know, a little sidebar. I think it's really interesting how Flask is quite popular, but it's also spawned almost every single web app after it has kind of borrowed its programming model. So even if you're not exactly using Flask, if you're using Litestar or FastAPI or whatever, you're still kind of doing that kind of programming.

And it's the same here, right? You create an MCP as the app, you say @mcp.tool or @mcp.prompt and you put these onto functions and they now become webized.

Speaker 3

Yeah. Isn't that like, okay, like I am not like I write Python, but I'm not a Python expert. I'm sorry, Brett Cannon, if you're watching this. But like, we'll take that part out, don't we? As a stream's life. That's okay. So like these, like the do you call in Python, do you call them decorators? Or is it like attributes like in C#, it's attributes. Yeah, in C#, it's attributes.

Speaker 1

You do it with square brackets. In Python, it's decorators and you do it with the @ symbol.

Speaker 3

Okay, so the decorators themselves. Look at the simplicity of this. Look at the screen right now of a sample where we're looking at the actual Python SDK repo. And one of the samples, you literally have a Python function, you have def add, and there is your arguments, you would pass you a function, like two integers. And then all you need to do to make that a tool that an LM can invoke is just add that at mcp.tool decorator. That's it. You're not going and crafting elaborate JSON RPC envelopes and converters and all these things.

like all the stuff is done for you add a decorator boom you have a tool that's it yeah it's simple

Speaker 1

it's yeah it's really really simple to program and there's actually some fairly complicated data exchange stuff going on like streaming partial results as they come in because we're all used to two things ai requests taking a real long time but b that you see the little dots thinking thinking and periodically like some stuff that's coming by to like oh yeah okay i see where it's going. I don't know what it's going to come up with, but at least we could see it's working,

right? So to sort of keep that flow going, you've got the streaming style, right?

Speaker 3

Exactly. And all of this is like, again, I'm looking at the sample. It's so, the way I would describe it as a delightful developer experience. If I'm a developer, I focus on writing the core functions. I don't have to worry about like, well, how do I make this into a tool? Put a decorator on. That's how you make it a tool.

Speaker 1

Yeah. Excellent. So I have this server and you mentioned that it's fast, FastAPI or flask like how do I host it once once I call run or whatever I do on it yeah then what I know I probably don't put it straight on the internet maybe I do I don't know so there's two

Speaker 3

types of servers that you can have you can have local mcp servers and local mcp servers are essentially just a local application think of it running like a console app or like your regular python script and what it does it there might be referred to you might hear like they're called stdio for standard input output. And it's using basically native OS constructs to talk between processes, right? The MCP client and the server. So again, it's still JSON RPC, but JSON RPC over SDDIO pipes.

So the other one is streamable HTTP. And streamable HTTP, it's again, MCP server that can be hosted somewhere in the cloud. It can be hosted on your own home lab server if you want to, and you give it an IP address. You can be hosted in AWS or Azure, GCP, doesn't really matter. So for those servers, the JSON-RPC messages are basically done through the HTTP pipe with some set of HTTP conventions. That's kind of where it is. There's no constraint as to where you have to host it.

It's whoever supports running Python can host your MCP server. Right, okay.

Speaker 1

So I could put it behind Nginx or Caddy or whatever. Like toss it into a container and put it somewhere. Like it's totally fine. Okay. You know, you talked about all these sort of different, like, private, but online, but not quite online, you know, with, like, HomeLab and stuff. I just want to give a shout out to Tailscale. Like, have you? Oh, yes. Have you Tailscaled lately? Oh, it is so good.

Speaker 3

It is wonderful. I love Tailscale. It's my go-to thing. And I'll tell you this. Like, do you remember the days when you had to work? This episode is not sponsored by Tailscale, for the record. Should be.

Speaker 1

Should be. They can reach out. Yeah.

Speaker 3

Yeah.

Speaker 1

Hey, Tailscale.

Speaker 3

Yeah. Yeah. Michael Talks is awesome. You should sponsor it. But anyway. So TailScale is great. Like, remember the olden days when you had to like set up an open VPN and be like, let me generate the keys. Let me email myself the key so I can open it on the iPhone and then add the key and then go through this process. And it's just like, oh, man, such a pain. Such a pain. TailScale, just like flip the switch and you're in.

Speaker 1

Yeah. Magic. Or DynDNS where you...

Speaker 3

Oh, yeah. Because you have to bind your IP address to their domain and then you have to run this agent to constantly update it. Oh, yes.

Speaker 1

Yeah, the agent goes down change. Well, then there's also all the NAT firewall and your local machine on your local network change. You're like, no, it doesn't work. Oh, it's my machine on my, we had a power outage when the router rebooted, I got a new IP. It just, it was so bad. And so why is this sidebar worth

going into here, folks? Because this is what's called an overlay network. And so you can put it up on your iPhone, you can put it on your laptop, you can put it on your desktop, you can put it on your Linux server if you want. And it basically exposes all of those things over a network that's like a VPN, but the rest of your behavior is just not VPN. It's just normal, but it just brings those in in just the most incredible way.

So for example, I have a high-end Mac mini here that I use for the streaming that I'm talking to you on now. It has tons of RAM and it has a pro chip and stuff. So I just have my one LLM and my database servers running there. And when I'm doing dev work, instead of every, you know, my laptop, my other machine always running in replica, it all just goes here to this. And even if I'm in a coffee shop or I'm out for work, right?

As long as TailScale is running, I do a database query or an LLM call through an API and it just hits this thing. Yep. Just as if I was here. And it's glorious. And all that's for free, right? There's paid versions, but you can do a lot.

Speaker 3

Yeah. You can do a lot for free. In their free tier, it's amazing. And it's all WireGuard. It's all using the most modern secure standards. I'll say to me, if you want to access things like, oh, your security camera is at home, you do not trust cloud providers to have access to your security home cameras, put them in your local network and use tail scale. And then you can go somewhere, flip the switch in your phone,

boom, you can see your cameras from remote without exposing them to the broader internet. It's

Speaker 1

amazing. You don't open up any ports on your router, nothing like that. So why am I going on such an excited diversion? One, it's just so awesome. And I just recently discovered it this year. So it's a thing, but it's relevant. If you've got an MCP server and you want to keep it local, even local from your server back to like your company or something potentially, you could hide all that stuff behind tail scale. It's like transparently available, but also there's, there's no ports.

There's no open internet. The easiest way to secure stuff is to just not let the internet have at it. Yeah.

Speaker 3

Yep. No, exactly. This is what I've been actually doing with one of my friends who was setting up a home lab and they were experimenting with some of the MCP servers for like, I believe it was like setting up for like a Minecraft server. And we just tossed them on the same server. And because it's tail scale and then I connect them to the clients with a IP that tail scale gives me, it just magically works. And I didn't need to expose this to the internet.

I didn't need to pay for any cloud providers in somebody's home lab. It's just there.

Speaker 1

- Yeah, yeah. And you don't need to use SSH across it. Like you can just, it's just there. It's all super, super good. Okay, back, back to what I was asking. - Back to MCP. - Back to MCP, but I was asking, you know, how do you run it? And you're like, I could, we could run it on our home lab or on a Raspberry Pi or something, right? this tail scale thing is a way to sort of really nicely make that available to you, make that available to your, your AI agents or whatever without going, well,

now how do I host it on like a server for real? Yeah. Okay. So let's see. That is the registry. There we go. So I want to talk about a couple of things. We talked about tools. Yeah. And we talked about there's prompts, there's resources. Let's maybe go through each one real quick. These are all just decorators you put on functions, but they're all, They're slightly different. Yeah. What is the purpose of a tool and why would I do that?

Speaker 3

Yeah. A tool basically is a function call, right? It's like your tool equals function. That's the way I describe it. Like that's basically like, hey, I want the LLM to go do something. What does it need to do? And this is where like get weather, give me the sum. It needs to go and do this. This is what a tool is. It's a primitive that does something.

Speaker 1

Insert record into database or whatever. This looks like you could probably find and replace Fast MCP with FastAPI and tool with get. Yeah. Yeah. And you or a post or something. And you might be able to pretty much that is kind of the closest match, right?

Speaker 3

Yeah, exactly. Yep. Yep. That's that's basically it. I want to invoke some kind of action. Go do that action for me.

Speaker 1

Right. And at least in the examples, there's no AI in the action. It's just. No. Just an AI.

Speaker 3

The AI knows that it needs to invoke the action. Like if I go to the LLM and say, send an email to Michael that says the podcast was awesome. And then it's going to go in and say, oh, let me go find the tool that is capable of sending emails. Oh, there's a tool from like, I don't know, like MailChimp. Okay, let me go do that. There's a tool in the MailChimp MCP server that says send email. That sounds great. I'm going to use that to send the email, right?

And that tool itself doesn't use AI behind the scenes. It's just like, it's just going to do SMTP send email. That's all it does.

Speaker 1

Yeah. Awesome. It also has other examples of data exchange along the way, I guess. Absolutely. And you can pass in this context, and then the context can start pushing updates and information back. Yes. To the user, right? And report progress back.

Speaker 3

So, for example, if your email takes like seven hops, it's like, okay, let me first connect to the SMTP server. Let me then verify the credentials. Like, you can encode that basically if you implement that. You might not, but you can implement progress reporting so that the client knows like, oh, you're like 30% through your task or you're like 40% through your task now because it reports on the progress of what you're doing.

Speaker 1

- Yeah, super cool. You can also do structured output, which is pretty interesting. And there's many ways in which it can be done, but the number one way, as in if it was a ordered list, the first thing would be Pydantic models, right? Carrying on the FastAPI analogy here, right? - Yep, yep. For a lot of these things, again, it's very, like if you're a Python developer, a lot of these concepts are gonna be

Speaker 3

very much familiar to you.

Speaker 1

- Yeah, I think one of the challenges people have often is like structured data versus like I got an LLM answer and it's a little different every time and they upgrade the model from 5.1 to 5.15 and now it does something totally different. Like how do I code against this, right? And so using structured data can be a big bonus, right? - Yeah. - Okay, super cool. Let's see prompts. Now it's starting to sound AI like.

Speaker 3

Yeah. So this is basically like the description says prompts are reusable templates that help elements interact with your server effectively. If you have a server that does, I don't know, cooking recipes, it might provide prompts for like, what is a like, what are the steps for a recipe and with substitutions where needed. So it allows you to basically pre cook prompts that your server

Speaker 1

might be using. Okay, they might be passing these internally to? Yes, yeah. So return to the host AI, you know, there's a lot of AIs involved here.

Speaker 3

Right, you know, essentially like, you're exposing prompt templates, like that's what it is, like, and saying like, oh, if you're a user, if you're looking for like, creating a recipe, this is a template for that prompt for a recipe.

Speaker 1

Okay, cool. There's also a little bit of a UI component, which is interesting, you can have a iconography representation of your actions.

Speaker 3

Yeah, this is relatively new. But basically, for some of them, like, bake in some of the icons to just make it easier to differentiate between different actions. Because especially again, like different servers can have different tools and there are many tools. And how do you like just parse the strings? Like just look at iconography. Yeah. Another thing that it has

Speaker 1

built in support for is working with images. So that's pretty wild. I yeah, I noticed that for a

Speaker 3

lot of the stuff, it's also like it's baked into the these are not necessarily like MCP spec constructs. This is more like how the Python SDK exposes them and allows you to operate on them, right? because like the fundamental constructs, the primitives are we have tools, we have prompts, there is resources, which is another one. And the resources is, allows the LM to basically think of it as how do you refer to databases or files or entities within an API?

Those are, there's also elicitations as what Michael is showing right now on the screen. So we have elicitations is a way for an MCP server to go to the client and say, I want the client to provide me structured input on a specific question. Like, hey, can you give us your date of birth? And I expect a date. Can you give me a date back exactly so I don't need to guess from the LLM context, right? Or it can say like, you know, what kind of pet do you have?

And it can give you a list of options that you can actually have to pick from. It's like, oh, dog, you know, pet, reptile, like dog, cat, reptile, whatever. It allows you to have that structured controlled input that it's not just you're typing into the chat box, but you're selecting from a list that the server asks you to.

Speaker 1

So that's another neat thing that recently got added. Yeah, that looks quite interesting. And it has to do a little bit with the WebSocket type of exchange as well, right? Not exactly, but it's going along. You've asked it something. While it's working on that, it's come back and it's asking you to give it more information to carry on.

Speaker 3

Yes, exactly.

Speaker 1

In that sense, right? Yep, yep. So could this be, I've worked on your request. I've used the database MCP or whatever, and I've learned that there's 20 records. Do you want to delete them like you asked or do you not want to delete them?

Speaker 3

Yes, yes, exactly that. Or it can say, hey, I found like 10 conflicting records. Which ones do I need to delete? And then you can help and basically do, yeah, right? So it asks for structured input so that you don't have to have it guess from whatever you type in the chat. Because if you type in the chat, it's like it's non-deterministic, right? It could say, oh, delete all the records with the name John Doe. And then it's like, oh, I'll delete everything with dough.

Because somehow, like, that sort of decides, like, oh, no, no, no.

Speaker 1

Jane, come back.

Speaker 3

Yeah. So it adds a little bit more structure.

Speaker 1

Yeah, got it. And the programming model is super smooth here. They did a great job. So, for example, you might be doing this elicitation within a tool call. And that's an async function, async web function. And the way you do it is just await context that elicit some message and schema. And then when the person responds, the async thing resumes and off you go, right? There's not some nested callbacks and all that kind of business.

Speaker 3

That's a very smooth developer experience. I love it.

Speaker 1

Yeah, it definitely is. Okay, I do want to talk about some of the popular ones out there through an awesome list because I'm just a sucker for awesome, awesome list. But is there anything else that I feel that you feel like we should be covering here on the SDK?

Speaker 3

Yeah, there's a lot of great work done Python SDK and the FastMCP folks, I would say like go through the repo. It's getup.com slash model context protocol slash Python dash SDK. Go there. There's some great samples to get you started. And again, we're always open to feedback. So if something's like, oh, this was too confusing. I didn't understand. The team is very receptive to feedback. So please let them know.

Speaker 1

Yeah. 143 contributors. Last release five days ago. Bunch of PRs, right? It looks like it's pretty open. You know, Yeah. Oh, yeah. Close PRs pretty open to people working. Also, it looks kind of very beginner friendly in the sense that the issues are tagged with lots of lots of stuff that you could search for, like needs motivation. You know, you could go through and come up with some examples and help, even if you're not an expert in the SDK, for example.

Speaker 3

Absolutely. And there's also, I believe the Python might be using the good first issue too. So if you're, if you're a new contributor, you've never looked at it. It's like, I like, don't be intimidated. There's plenty of- Good first issue. Good first issue. Like there's plenty of things that you can just drop in and see like, oh, I can help with that.

Speaker 1

Yeah, love it. Okay. You too can be an AI developer. I love it. Now let's talk about awesome MCP servers. Awesome MCP servers. This comes to us from the very well-known PunkPi.

Speaker 3

The person behind Glamour.ai.

Speaker 1

Yeah, awesome. And 72,000 GitHub stars, no joke. So there may be a fad, but maybe people will stick around. So this actually has support for a lot of different languages and it's got scopes like is this cloud or local or embedded and so on. But then you scroll down. Look at the list. Massive. The list is, I mean, look at the scroll bar.

Speaker 3

It is massive. Yeah, we keep scrolling and scrolling.

Speaker 1

I don't know. If I page down full speed and just pin page down, the pinch down button, it's something along the lines of like five seconds just to get through the list. And these are one per line. Mm-hmm. You know, it starts out as one should when they're building awesome lists with categories, right? Command line, cloud platforms, biology medicine, and bioinformatics. There's one for everything. I know. You want to just jump around a bit and we can see what's here when we riff on it?

Gaming. MCP server for Unity 3D game engine integration for game to own.

Speaker 3

That's kind of cool. Go. Unity MCP. MCP chess. An MCP server playing chess against LLMs. Do you ever think of like, can I beat an LLM at chess? And you want to like just get an MCP server to do that? There is one for that.

Speaker 1

I'm starting to feel like it's better to do the local models for the chess playing against the one. I don't want the really smart ones. There's also chess MCP, which is, this is interesting. It's not the same as the other one. This is access your chess.com player data and records and other public info. Yep. Right. That's kind of cool. So if you wanted to say, hey, I'm building something and I would like access to sort of the Kaggle of chess players type of thing, right?

Like the list of competitive chess results.

Speaker 3

Yeah.

Speaker 1

That's kind of cool.

Speaker 3

Yeah. Yeah. Yeah. I personally have built one for Halo. I'm a big fan of Halo, the video game. Oh, yeah. It's not on the list, which now I need to go and contribute to that list. Let's do a PR. Like, that's the thing that I have is basically analyze my Halo stats. And I'll tell you what, the LLMs are getting really good at analyzing the stats. You give them the data, they can make some conclusions.

Speaker 1

Yeah, I bet. Let's just keep it really crazy. Let's do, I was going to do delivery. We'll do that in a moment. Marketing.

Speaker 3

Marketing. Yeah.

Speaker 1

Yeah. So I guess one of the things that looks, I'm after just a very quick first impression, like you're running ads on someone's platform or you're doing marketing on someone's platform, but you want visibility into how that's going. So we've got the Facebook ads and PC server. We've got the Google ads, MCP server, Amazon ads and so on. Right. But what else is, yeah, that sounds about like most of it there, I suppose.

Speaker 3

But think of it this way. Like if you connect several of these MCP servers to your client and then you connect them to all your ads accounts and then say, how are my ads performing and which ones of them are the best this past week? Right. Like I don't need to click around dashboards and figure out like the filters and everything. Just ask the LLM, pull the data, make a conclusion. Now, you still need to verify the conclusion that make sure it's not hallucinating things.

But nonetheless, it's kind of cool.

Speaker 1

Yeah, it's very cool. So one thing I know I realized now that we skipped over the Python SDK is we talked all about the server. What about client things? If I wanted to create an MCP server that is effectively the composition of some other MCP servers, could I do that?

Speaker 3

You absolutely can. Nothing stops you. Like an MCP server can also act as an MCP client and then connect to other MCP servers. Like there's no restriction to that, right? Like it's basically, it's very composable. And a client for all intents and purposes is basically an entity that can connect to an MCP server, which can also be an MCP server. It's kind of circular.

Speaker 1

Yeah, yeah. It's turtles all the way down, but MCP this time. Yeah, it's AI turtles this time. So delivery, we just have the DoorDash delivery MCP server.

Speaker 3

Oh man, like who?

Speaker 1

Claude, why is my food not here? Have you ever seen those fail videos or whatever? I watch weird YouTube stuff with my daughter sometimes and you'll see like cops delivering DoorDash. I'm gonna say, sorry, we had to arrest your DoorDash delivery, but we were pretty close. So we thought we'd just go and deliver your food anyway. I mean, I don't know what the server is gonna say, but it could say anything, you know? - The police are on their way. - Yeah. People are generally really appreciative.

Like, well, thanks for getting me my dinner anyway. Let's see what else is out here. Got text to speech, which is interesting. - Sports. - Sports, hell yeah.

Speaker 3

Oh, look at this, Strava. Like if you're running or biking, you can use this also to analyze your data. There's a lot of MCB servers for data analysis, which is kind of cool.

Speaker 1

Okay, I don't even, this one, this is the one that appeals to me. So Multivewer, this is actually not a thing that I would want, but I think it's interesting. So Multivewer is a motorsports desktop client. And what I think it does, it does for IndyCar, WAC, Formula One, and even like the feeder classes. I think what it lets you do is put up both an overlay of telemetry onto watching the live stream, but also put the multiple people up in live streams at the same time or something like that.

Right. That's kind of cool. That's cool. So the, the reason I don't really like that is I don't watch any of those sports live. I record them. And so I can then pause it and then skip the commercials. And so this is like for a live stream sort of deal, but the MCP server, it controls multi viewer for that. So maybe you could set up an AI that is watching what's going on and switches the views around in the multi-viewer for you. That's wild.

Speaker 3

Or swaps to the most interesting telemetry at the specific moment.

Speaker 1

Yeah, listen to the radio. They start getting all frantic. Like, all right, we're switching to that view.

Speaker 3

Yeah, there's an NCC server for everything. Like, this list is massive. I'm actually like, every time I discover these things, like, we're looking at this right now, I was like, oh, I didn't know there was one for multi-viewer. Like I didn't know what multiviewer is until we talked right now.

Speaker 1

Yeah, but wouldn't that be a cool demo? Yeah. You know, at a conference, you're like, I know you've all seen the tic-tac-toe one, but let me show you the final of F1.

Speaker 3

Yeah, yeah, yeah. Or something, right? Very astute observation, because again, like there's a lot of these like hello world kind of things like, oh, look, it's kind of neat. It responded with a thing like, give me a real thing. This is that real thing.

Speaker 1

Yeah, yeah, that's, that's super neat. All right. I guess we've got the support one that Lassie and Jira quick chat. It's whatever you want, right?

Speaker 3

That's the one to reduce your boring work. The GRI MCP server. Like, you don't want to triage your bugs. Just let the LLM do it for you. Hey, can you go and find the things that are most important for me to work on today? Give me the bug numbers.

Speaker 1

Yeah. Or if you see somebody assign a bug to me, close it.

Speaker 3

Yeah. Yeah, exactly. Query all the bugs assigned to me, reassign them to somebody else.

Speaker 1

Yeah, crazy. Exactly. Not a good fit for this person.

Speaker 3

Yeah. No, exactly. These are the life hacks you learned only from this podcast.

Speaker 1

That's right. It's like, if it involves MCP servers and cool stuff I can code, give it to me. Otherwise, send it somewhere else. Send it somewhere else. All right, Dan. I think we're getting pretty close on time here in terms of what we got time to cover. But this is super fun. Maybe close things out for folks. They want to get started with MCP servers, either building them, consuming them, building and consuming them, plugging them into their tool chain. What do you tell them?

Speaker 3

Yeah. So for folks that wanna build modelcontextprotocol.io, as simple as it gets, go there. It has guides, tutorials, SDK starters, everything is there. If you are a consumer of the MCPs and you wanna, hey, I wanna do this like awesome thing with MC servers. First of all, the GitHub MCP registry that we showed earlier is one of those things is github.com/mcp, go explore. And then of course on GitHub, there's plenty of servers that are tagged with MCP. You can also take a look there.

And there's other registries that also index MCP servers of all sorts, like Glama AI from Punk Pie that we talked about before. There's one such registry that you can also look at and see if there's anything that's of interest. I will say that as you are exploring MCP servers, exercise caution, just like you would exercise with any other software and APIs and websites where you log in because the responsibility is kind of on you to figure out what's safe, what's not.

If you have an MCP server that's like, oh, it's going to read all my iMessages and sort them by importance. I'm like, yes. And do you know who built that and where your messages are going?

Speaker 1

So be careful. Are they also scanning for credit card numbers? Exactly.

Speaker 3

Why not? You messaged somebody with your social security number the other day. Nice. Yeah. So be careful with those. But I'd say, like, explore them. And then we are working on formalizing discovery a bit better. your clients like VS Code and Cursor and Cloud Desktop are going to become better and better

Speaker 1

with more discoverability affordances. Awesome. All right. Thank you so much for coming on the show. I learned a ton. I'm sure listeners did as well. And it was a lot of fun. Thank you for having me. Yeah. See you later. Bye. This has been another episode of Talk Python To Me. Thank you to our sponsors. Be sure to check out what they're offering. It really helps support the show. This episode is sponsored by Posit Connect from the makers of Shiny. Publish,

share and deploy all of your data projects that you're creating using Python. Streamlit, Dash, Shiny, Bokeh, FastAPI, Flask, Quarto, Reports, Dashboards, and APIs. Posit Connect supports all of them. Try Posit Connect for free by going to talkpython.fm/Posit, P-O-S-I-T.

And it's brought to you by Nordstellar. Nordstellar is a threat exposure management platform from the Nord security family, the folks behind NordVPN that combines dark web intelligence, session hijacking prevention, brand and domain abuse detection, and external attack surface management. Learn more and get started keeping your team safe at talkpython.fm/nordstellar.

If you or your team needs to learn Python, we have over 270 hours of beginner and advanced courses on topics ranging from complete beginners to async code, Flask, Django, HTML, and even LLMs.

best of all there's not a subscription in sight browse the catalog at talkpython.fm be sure to subscribe to the show open your favorite podcast player app search for python we should be right at the top if you enjoy the geeky rap theme song you can download the full track the link is your podcast player show notes this is your host michael kennedy thank you so much for listening i really appreciate it now get out there and write some python code

Speaker 2

I'm out.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android