Complete Intro to MCP

Issue Tracker App Tour

Brian Holt
Databricks
Complete Intro to MCP

Lesson Description

The "Issue Tracker App Tour" Lesson is part of the full, Complete Intro to MCP course featured in this preview video. Here's what you'd learn in this lesson:

Brian revisits the Issue Tracker application used earlier in the course. The MCP server will now have tools for API and job-based workflows, allowing users to instruct the LLM to create and manage issues.

Preview
Close

Transcript from the "Issue Tracker App Tour" Lesson

[00:00:00]
>> Brian Holt: We are going to do an MCP server for our issue tracker. Let me just make you mildly familiar with this one, right? Nope, this is just the one that I had you all clone off of GitHub. Make sure you run npm install on backend, npm install on frontend, and npm install here, right?

[00:00:30]
I've already done that all. But you have to go into backend, npm i. You have to go into frontend, npm i and then I can say npm i think run dev. Yeah, it'll run both of them at the same time. And it's all proxy through 5173. So you can see here I get this nice little issue tracker.

[00:00:58]
I'm going to sign out. So you can sign in or you can sign up, whatever you want to do here. I have my account already created on here. Trying to think, I just put a brianexample.com, and I have now logged in and you'll see something like this. You all will have to create your own accounts.

[00:01:23]
Okay, there's issues here. You can see that they have statuses, priorities, timelines, admin users, blah blah blah. So there's a handful of users that you should be able to create an issue, make a better course. I don't know why I feel the need to be mean to myself on camera.

[00:01:55]
And that is definitely urgent and assigned to me. And I am going to create my own issue, so there we go. I didn't give it any tags. I think you can give it tags here. Yeah, this is definitely a rust problem. So, there you go, that's the whole issue tracker.

[00:02:20]
Any questions, it's meant to be fairly simple but kind of a GitHub style issue tracker. We're going to make an MCP server so that the MCP server imagine like you're in mid flow with Claude code and just saying like hey, this is broken, I need to fix it later.

[00:02:39]
Create an issue for this kind of integration and I'm seeing these kind of issues and please fill up the body with all the pertinent steps that we need to do and make sure assign this to me and assign these tags to it. And then you could be done for the day, you can come back two weeks later and say hey, pull all of my issues.

[00:02:55]
And then it says, yeah, I remember I needed to do this one, hey, Claude code work on this issue. And then it'll go work on it with all the context that I had before and then you can say okay, open a pull request and close my issue. Pretty powerful workflow.

[00:03:09]
It's actually Mostly how I work these days I just have cloud code create issues for me on GitHub or linear and then I have it pull it later whenever I need to go do it. So let's go make an MCP server that allows us to do that locally.

[00:03:25]
Here, I have here. This will just get you back to where we were as of when we did Resources. So if you follow along so far, you're already to this point. We already looked at the app, so we want Claude to act on our behalf. We need an order of operations, so this is the big one that I wanted to show you.

[00:03:51]
Order of operations. There's a real temptation when you're building an MCP server to just make it match your API. Like you have one tool call per API endpoint. That is everyone's first immediate reaction. If that's your first reaction, very normal. It's a very bad first instinct there. Why, why don't we just map one API call to one API call to one tool request?

[00:04:23]
Think about whenever you need to create an issue and assign a user and assign an urgency to it, you have to call an API endpoint to create an issue. You have to get the ID back. You then have to take that id, you have to then feed it back into do a bunch of other stuff like that.

[00:04:42]
What I'm trying to basically call out here is there's a big sequence, the order is important, and then you have to feed an idea from here to here to here to here. It's very brittle when it comes to getting it out of order or getting the ID wrong or pulling out the wrong information.

[00:05:01]
Let me show you exactly what I'm talking about here with this, the job space tool. This is something that literally happened to me while I was developing this course. I said, using the issues tracker MCP server, create a new issue in my issue tracker and assign it to me.

[00:05:19]
Then the robot says, well, ID me doesn't exist because it misunderstood what I meant by me. It interpreted that to be literally the ID of me, when in reality I needed to go to the API, figure out who I am, get that ID and then feed it back in.

[00:05:39]
Now, Claude Desktop with Sonnet actually got this right, but when I fed it into Quinn, Quinn did not get it right. So we'll talk about this in a second. We're first going to build it with API because I think it's good for you to kind of see and feel how that works.

[00:05:55]
But then we're gonna do this kind of more jobs-oriented approach, where you basically say, do this entire workflow that's gonna take 10 API calls. But we're going to provide you step by step how to do this in code. So that's what order of operations meant. We're going to work with Auth here just for a second.

[00:06:11]
Auth is an interesting one. It's very much evolving with MCP Server. Like how, how do you let an agent act on behalf of the user? That's a good question. It's actually kind of unsolved at the moment. There's a bunch of companies thinking about this. Like I know Clerk is working on it, I know DSCOPE is working on it.

[00:06:29]
There's two companies I work a lot with, but basically they have to go get some sort of token, some API token, some sort of like limited use thing. Because they don't want the agent to have forever access to your Persona, right? Like what's the right balance there? I don't know.

[00:06:46]
Not my problem. Well, I mean it is my problem, but it's also their problem to solve. So not my problem to solve. We're just gonna kind of cheat a little bit. I put a little thing up here, says copy API token and we're just going to paste that in there.

[00:06:58]
This would be a perfect use case for elicitation of like, hey, go do this thing for me. I don't have your API key. You could do an elicitation for it right now. If you do it, it'll just say I don't have your API key, run your prompt again, but please give me the API key.

[00:07:13]
One bit of fair warning here. If you click Copy API key, this is what it looks like. I have it. So there's only one valid API key at a time because I didn't want to write API key management software. So if you do it, it will invalidate all of your previous API keys.

[00:07:31]
So just be aware of that. That is just Brian being straight up lazy when it came to writing this course and then correct tags people. So another thing, when I was developing this, when I had just freeform labels with this, I would have bugs, like bugs to fix to do's, right?

[00:07:49]
It would just came up with a trillion different tags for all these different things, which is not what you want, right? You want one bug tag and if you pull the bug tag, it pulls everything.

Learn Straight from the Experts Who Shape the Modern Web

  • In-depth Courses
  • Industry Leading Experts
  • Learning Paths
  • Live Interactive Workshops
Get Unlimited Access Now