Skip to content

Computer Science Degrees are Optional

This article was written over 18 months ago and may contain information that is out of date. Some content may be relevant but please refer to the relevant official documentation or available resources for the latest information.

Degrees aren’t always needed. In today’s job market, there is most likely an alternative option for a degree: self-taught, bootcamps, etc. However, there are still companies that require a college degree. One of my colleagues at work expresses that “unless you really want to work as a research engineer for one of the very large tech companies like Google, etc I don’t see the value in an advanced degree in CS.” This statement should not discourage you from pursuing this career path, especially if you want to become a research engineer.

There has been a recent conversation at work that provided a number of those with a college degree versus those who do not. Computer Science degree pie

The College Path

I am categorized with those who have a Computer Science B.S. degree. It was the safe option for me. I would have the degree just in case (being the first in my family to obtain one was also a motivator) and I gained some coding experience through courses. I still don’t regret taking this path. It’s given me the opportunity to get a glimpse into both sides.

However, college only teaches you so much, especially where you attend. My college was still very new compared to its affiliates, so the Computer Science department was still developing. I was taught the basics (how to do a for loop, etc).

The classes were boring and I never felt that the important parts of coding were taught. The closest I got was through the Software Engineer course that was taught by a Facebook developer. He showed us how things really went in the “real world.” We were assigned a semester project that would be presented at the Facebook headquarters in Menlo Park. This class taught me the importance of teamwork: team interaction, code management, and leadership roles.

I came out of college with a good programming foundation. It also provided me with internship experience. The college I attended advertised a local hackathon. I wouldn’t have known of this event occurring in such a small city if I had not taken the college route.

I was introduced to the founder of a local website creation company. Due to my professor’s recommendation, I became one of the interns at this location. It was the first time that I was able to get a glimpse of how business was conducted with a client. Unfortunately, this wasn’t taught in any of the courses I took.

College gave me the extra time to figure out what type of programmer I wanted to be. I’ve coded in multiple languages like Java, Python, and React. I even dabbled a bit with game development. I was able to find the most joy from working with web development.

College can also provide one of a kind experiences. Some partner with local businesses to give students an opportunity to get work experience. I was fortunate to be enrolled in a university that had this opportunity available.

In partnering with a local business as a student, we were presented with a problem and it was our job to create a proof to concept and demonstrate it to our client. We had the entire semester to complete the solution. During this time, we had multiple deadlines (just like any real project) that we stressed over. There were times that we did have to work late into the night because a bug was found before our next release.

We were thrown into multiple situations that I have seen occur during my work experience. These are the moments at college that helped me navigate through stressful moments at work. Bootcamp may not provide the same opportunities.

Another of my colleagues who went to college was able to participate in a similar program. He worked with the company for two years, forming connections with his co-workers. It was one of these connections that led him to accept a job offer with another company. If it had not been for this company being persuaded to attend AngularConnect, he might not have been introduced to our current CEO.

He does voice that college is not needed to be a good developer. However, he does add that “If I hadn't gone to uni, who knows what kind of path I'd have taken, but 100% the connections I gained as a result of uni has helped me get to where I am now.

Alternative Paths

All roads lead to the same destination. It just depends on where you want to learn your base. Another of my colleagues stated: “It's like building a foundation before building the house.” I agree: people want to hire someone that understands the importance of the foundation regardless of the background in order to build a strong house.

One of my professors said something that still stays with me: "School only teaches you about 10% but your job will teach you the rest." I completely stand by this. I was able to understand the basics like Git by the time I entered the work field. However, the business side like time frames was something that I picked up from trial and error at work.

This experience has been iterated at work as well:

“Almost all of my learning of development was on the job, although I've reached back to my coursework as I got further in my career to help me make sense of more of the tougher algorithmic challenges on some projects I worked on in the past.” - Colleague

I’ve only been in this field for about 4 years. I’ve met strong programmers on both sides. I’ve seen a teacher’s aide that can write structured scripts for a complex game. I’ve also seen a developer (without attending college) who has delivered many successful projects at such a young age. It’s their commitment to become a better programmer that has them thrive in any environment. It just boils down to which environment you want to experience.

“I don’t really regret anything about going to university except that I wasn’t the best student in my late teens and twenties so I wish I’d had the option of fast tracking the practical knowledge and jumping right into my career. I wish coding bootcamps had been available to me instead of college honestly.” - Colleague

My college background never was asked when I was being interviewed by the companies that ended up employing me. It all came down to my coding skills and the connections (along with my personality). It really depends on the company who is hiring. That’s why it’s important to do your research before investing your time in the application process.

College is not for everyone. Don’t let the pressure stop you from doing what you want to do with your career. Success as a programmer can be accomplished regardless of a degree. There are pros and cons with any path.

Code bootcamps can provide the same benefits as college. Some bootcamps might be even more intense than college, which can lead to great learning opportunities.

I’ve met an amazing developer who came from a bootcamp. Her skills have landed her a position with a company as a developer within months of her graduation. There hasn’t been a task that she wasn’t able to handle.

Bootcamps are just as beneficial. Remember, it’s not where you learn the foundation that matters, it’s whether you understand it. Keep learning, coding, and seeking out connections.

Tweet me your coding start. I would love to share your story with other people who need that extra motivation to get one step closer to their goal.

This Dot is a consultancy dedicated to guiding companies through their modernization and digital transformation journeys. Specializing in replatforming, modernizing, and launching new initiatives, we stand out by taking true ownership of your engineering projects.

We love helping teams with projects that have missed their deadlines or helping keep your strategic digital initiatives on course. Check out our case studies and our clients that trust us with their engineering.

You might also like

How to Set Up OAuth with a Stripe App cover image

How to Set Up OAuth with a Stripe App

Stripe Apps are a great way to extend Stripe dashboard functionality using third-party integrations. But when using these integrations, developers must prioritize security. The best way to do this is by using OAuth with the third-party product with which you would like to integrate. However, there are some constraints, and we cannot use cookies to set up a cookie based authentication front-end only. In this article, we would like to show you how to do it with a NestJS back-end. Stripe signatures The best way to secure your API is by making sure that every request comes from a verified Stripe App instance. The @stripe/ui-extension-sdk package provides a way to generate a signature on the front-end side. This signature is valid for 5 minutes, and you can send it as a header for every request you make. For this to work, you need to have @stripe/ui-extension-sdk installed in your repository. ` In order to properly validate this signature on your API, you will need some additional information to be sent in the request headers as well. That information is the Stripe user's ID, and the Stripe account's ID. We found that the best way is to implement a global context with this information. ` The above context stores the ExtensionContextValue that gets passed from the Stripe dashboard to the app when it opens in the view. For example, if you are on a payment detail page, the userContext will contain information about your Stripe user, while the environment will provide you access to the object that you are viewing. In the above example, that would be the payment's ID as the objectContext.id property. Let's set up the view with this global context. ` Now, we can set up a hook to provide a proper fetch method that always appends a Stripe signature, and the other required fields to the headers. useFetchWithCredentials hook In order to make our future job easier, we need to set up a hook that creates a proper wrapper around fetch. That wrapper will handle setting the headers for us. It needs to have access to our GlobalContext, so we can get the Stripe user's, and their account's, IDs. ` Let's set up a very basic component for demonstrating the use of the useFetchWithCredentials hook. This component will be the default route for our app's navigation wrapper. It is going to handle more later. But for now, let's just implement a basic use for our hook. The AUTH_INIT_URL constant will point at our back-end's /api/oauth/userinfo endpoint. Please note that, for this to work, you are going to need to install react-router-dom. ` As we can see from the above implementation, this component will be the initial component that gets rendered inside of the application. It will send out a request to determine if the user is logged in. If they are logged in, we are going to send them to a route that is the first page of our application. If they are not signed in, we are going to redirect them to our login page. This initial call, just as every other API call, must be verified and always have a Stripe signature. Let's visualise how routing looks like right now: ` Stripe secrets and the Stripe API In order to be able to use the Stripe NodeJS Api, you will need two secrets from Stripe. One is your Stripe account's API key, and the other one is your Stripe-app's secret. You need to set up your .env file as the following. ` Stripe API key You can find your Stripe API key at https://dashboard.stripe.com/apikeys, under the Standard keys section. The key you are looking for is called Secret key, and you need to reveal it by clicking the button that hides it. Stripe App Secret For this key, you are going to need to upload your stripe-app using the stripe apps upload command. Make sure that you set a development app ID in your app manifest (stripe-app.json). After you uploaded your app, visit https://dashboard.stripe.com/apps. Under My Apps, you should see your uploaded application. Open it and search for the Signing secret. Reveal it and copy it into your .env file. Stripe NodeJS API Please make sure you have installed the stripe nmp package for your server code. In this example series, we use NestJS as our framework for our API. We need the above two secret keys to be able to start up our Stripe API. ` NestJS VerifySignatureInterceptor implementation In NestJS, we can use interceptors to abstract away repetitive logic that needs to be done on multiple requests. In our case, we need to verify almost every API for a valid Stripe signature. We have access to the proper secret keys, and we have a Stripe NodeJS API set up. Let's create our VerifySignatureInterceptor. ` Every interceptor must implement the intercept() method. We extract the Request object from the execution context, and we get the headers that we previously set in our useFetchWithCredentials hook. We call our verifySignature function which will throw errors if the signature is invalid. We also pass the Logger instance, so we can determine when an error comes from this interceptor in our logs. Please be aware that there are several reasons signature verification can go wrong, like if we provide the wrong Stripe account keys or app secrets. In order for you to be able to easily debug these issues, proper logging is a must. That is why we set up a Logger instance in our interceptor. ` If the user_id, account_id, or the signature are missing, that could mean that the request came from outside a stripe application, or the useFetchWithCredentials hook was not used. We throw a BadRequestException that will result in the request sending back a status: 400 HTTP response. If the signature verification fails, that could mean that a not valid signature was used in the request, or that the API environment variables might have the wrong keys. Set up the userinfo endpoint Let's quickly set up our /api/oauth/userinfo endpoint. For that, we are going to create the OauthModule and the OauthController. ` In our controller, we decorate our getUserInfo() method, with the @Get() decorator, so we set up the route. We also decorate the method with the @UseInterceptors() decorator, where we pass our VerifySignatureInterceptor. ` This setup will enable us to call the /api/oauth/userinfo endpoint which will, in-turn, check if we have a valid signature present in the headers. If the request is invalid, it will throw a 400 Bad Request exception. If the signature is valid, for now, we will throw a 401 Unauthorized exception just to make our front-end navigate to the login page. The Login flow Just to keep this example simple, our login page will only have a button in the center that will start our login flow with our API. ` We need to create a state key, that can be validated before we fetch the token. This state key will first be sent to our third-party oauth client, and it will be returned to us when the authentication is finished. This key is passed securely and over https. Therefore, it can be a stringified object. While the key is not set, we disable the button. ` Pressing the Sign in button will call our API that will redirect us to our third-party login screen. When the login happens, it will redirect us to our API, where we can fetch a valid token and redirect again to the Stripe dashboard. Let's extend our environment variables. ` Now that we have every environment variable set up, let's implement our api/oauth/login and api/oauth/authorise endpoints in our OauthController. ` The login endpoint, if everything is correct, redirects us to the login page where the user should be able to log in. Make sure that if you oauth client needs to have configured redirect urls, you configure them. For example, for development, the http://localhost:3333/api/oauth/authorise endpoint should be in the allowed redirect url list. ` We validate everything to be sure that this endpoint was called from our third-party OAuth page. With the information available to us, we can fetch the access token and store it in the Stripe Secret Storage. In this example, we use axios in our bakc-end to send requests to our third-party API. ` We exchange our code returned from our OAuth client to a valid access token, and then store it in the Stripe Secret Store. That logic got extracted into a SecretService class, because the logic implemented in it can be reused later for other API calls. Please make sure you set up a NestJS module that exports this service. Stripe Secret Store Stripe's Secret Store API enables your app to securely store and retrieve strings that can be authentication credentials, tokens, etc. This API enables users to stay logged in to third party services even when they log out of their Stripe dashboard. Let's set up a service that handles access to the Secret Store on our back-end. ` Adding secrets As we can see above, the Secret Storage needs some preliminary setup, which we do in our SecretService. The StripeResource sets up the find, set, and delete methods on the Stripe Api, and interacts with the Secret Store. Let's implement the addSecret method, so we can actually store our returned token. ` With the above, we can finally store our token with which we can make authenticated requests. Getting secrets Let's implement the getSecret so we can retrieve secrets. The principles are the same. We will need the accountId, the userId, and the secret's name for it. ` Let's close the login flow, and implement the final version of the api/oauth/userinfo endpoint. ` Deleting secrets We want our users to have ability to log out from our third-party API as well. That can be achieved by deleting their access_token from the Secret store. ` The /api/oauth/logout endpoint is going to be a GET request, that will delete the token from the Secret Store. ` We can create a SignOutLink that will send the request to our back-end and navigates to the /login page. You can put this component into the footerContent property of your ContextView. ` And now we are ready with our authentication setup. When the user opens our app, it will call the /api/oauth/userinfo endpoint. Initially, it will return with a 401 error, and our front-end will navigate to the /login route. When the user presses the Sign in button, it will redirect them to the third-party OAuth page. After they log in, our back-end also redirects them back to their Stripe dashboars where the application will open. The app will call the /api/oauth/userinfo endpoint again. But this time, it will return an actual user information and it routes to the protected route. To help visualize the whole flow, you can also use the following sequence diagram for reference: Conclusion As you can see, there are many steps involved in setting up a proper OAuth flow. However, it's necessary to make it right, since this is the most critical part of the app. We hope blog post article will help you to set up some good foundations when implementing your own Stripe app....

How to Build and Grow Your Career Through Networking cover image

How to Build and Grow Your Career Through Networking

When we think about advancing in a software career, we often focus on what we need to do from a technical perspective. We tend to focus on taking classes, learning new technologies, tackling harder projects in hopes of leveling up as a developer. But are there other things we are not considering when it comes to building a successful career as a software engineer? Should we also be focusing on networking and building connections? What does it really mean to network,and does it actually work? In this article, I will talk about the power of building meaningful relationships in this industry, and how it can help you achieve your career goals. What is networking? The word "networking" often has negative connotations assigned to it. Sometimes people only view networking as "using people for personal gain", or "kissing up to people in exchange for a favor". People also have the belief that you have to be an extrovert to be able to network properly, and introverts will not be successful in it. But that is not the case at all. I have met plenty of people who were successful in building a network, and classify themselves as introverted. Networking is the process of building meaningful connections. Good networking involves connecting with someone in a genuine way, and building a relationship over time. Once you have developed a relationship, you can work together to advance your careers. These relationships can introduce you to opportunities you never knew existed. Your network may also be happy to vouch for you at their current companies, and talk you up to other developers in their inner circles. How networking helped me in my career Before I became a software developer, my previous career was in music. I had never coded a day in my life before June 2020, and didn't know the first thing about how to break into the industry. I decided to teach myself how to code and join a few online communities. I quickly found the value of being involved with a community because I was able to learn from other developers, and understand how the industry worked. My community was able to help me stay away from toxic environments, and provide me with helpful resources that I still use today. My network introduced me to technical writing and software opportunities that I didn't know where possible. I took the time to learn about the industry, and build relationships with great people. We were able to help each other learn about new opportunities, celebrate each other's wins, support each through the tough times, and help each other grow. Now that we understand what networking is and why it is important, we need to look at ways to build out a network. Using Twitter to build a network Twitter can be a great way to build connections and meet new people in the tech industry. Here are some ways to build connections using Twitter. Twitter Spaces Twitter spaces are live audio conversations shared by a group of people. There is a person hosting the space, and a group of speakers discussing a preplanned topic. Listeners also have the opportunity to request to speak, and join in on the conversation. The topics range from career development, mental health, freelancing, technical writing, web 3, machine learning, and more. These spaces can be as little as 10-20 people or 500+ people. If you find a space that you are interested in, take a listen and make note of who the speakers are. Give them a follow on Twitter, read up on their profile and reach out through direct message. In your private message, open with introducing yourself and thanking them for the great advice during the recent Twitter space. Then if you have any follow up questions from the space, drop them in the message. That could be a great way to initiate a conversation, and you would be surprised how many people will respond back. I have connected with dozens of developers, technical writers, content creators and recruiters through Twitter spaces. Private messaging them was my way to make an initial connection, and we were able to build a relationship from there. Out of those relationships I have been able to build out my online presence which has led to paid technical writing jobs, podcast appearances, and insider information for new career opportunities. Publicly sharing other people's work There have been plenty of times where I have shared other people's articles, courses and open source projects through my personal Twitter account. People put a lot of time and effort into creating good content for the community. When you take the time to show genuine appreciation for someone else's work, they will take notice of that. You can accomplish this by retweeting's someone else's post with your own commentary, or creating your own post and tagging them in it. I have personally retweeted and promoted other people's content and had positive responses back. This was also a way for me to initiate a conversation with them and connect with them further on other topics. Using meetups and online tech communities to build connections Joining a tech community can be a great way to build relationships. The key is finding a community that is a right fit for you. My suggestion would be to try out a few different online communities, and see what works for you. You will find some communities to be very active and welcoming while others are toxic. Once you find a few communities that you enjoy, try to reach out to a few of the members. Learn about their stories and connect with them through private chat. Maybe even try to set up a short meeting with them to ask a few questions or discuss a particular topic. Most people will be receptive to you reaching out as long as you keep your questions specific and you ask for a short meeting (think 15-20 minutes). If your approach is too vague or open ended, people will be hesitant to respond. There is a diverse array of communities that range from web development, data science, game development and more. You can even find communities geared towards specific cultures, genders, and other demographics. It is important to remember that not everyone you reach out to will respond back. It is possible that they were busy, and missed your message or are simply not interested in connecting. Try not to take it personally and keep reaching out to other people. There will be plenty of people that do want to connect with you and share their stories. Conclusion There are plenty of ways to connect with other people in the tech industry that can be beneficial for your career growth. Try to explore a variety of online and offline venues to meet new people and connect. Social media platforms, meetups, and conferences are just a few places to build connections and grow relationships over time. I am someone who transitioned from being a classical musician to working as a software developer in large part because of my network. They were very supportive of my software journey and I was supportive of theirs. We continue to help each other out, and support each other throughout our careers. It doesn't matter if you are just starting out or 20 years in the industry, we all need a network of people around us to help us grow and thrive....

The Importance of Finding a Career Mentor cover image

The Importance of Finding a Career Mentor

What is a Mentor? > Mentor (noun): an experienced and trusted adviser. > "He was her friend and mentor until his death in 1915." > Similar: adviser, guide, confidant, confidante, counselor, consultant > - Google A mentor is someone who can be approached for advice. Some are informal like parents or friends. Others are more official through work. Regardless of their title, a good mentor is someone who can help you move forward. However, mentors are not for everyone. This is completely fine. There is no right or wrong path when it comes to advancing your career. Keep in mind that mentees have just as much responsibility as a mentor when participating in some form of mentorship. I have had a few mentors since my early years of being a developer. It wasn’t until the last few months that I got assigned a formal mentor. It’s been a great experience for me in both scenarios. There are many highlights that I want to share with you. These are some of the main reasons why I advocate for mentoring programs for career development. 1. Coding Skills Developers thrive by being exposed to all types of coding styles. I especially learn more when someone can review my code and provide feedback on improvements. There’s only so much you can learn from reading code or documentation. My mentors have provided their thoughts on different approaches to coding. One advice that has stuck out to me is the need for comments. Time can be saved by writing useful comments for future development even if you’re the only coder. They’re meant to explain the code versus having to take time to translate the lines into your native language. A mentor’s time is valuable. The less time they need translating, the more time they can provide a good review of your code. I knew that comments were important but it wasn’t until it was emphasized from someone that I respected that their value solidified in my mind. Some mentors are able to let you shadow them during their work day (mentees should also feel comfortable requesting this). If you have this opportunity, take it. You will be getting a first hand experience of how another developer reviews a task and implements it. I recently learned from a mentor that technical design documentation is crucial when preparing to add a major feature. It’s important to centralize the data and propose the best solution for the team along with your reasonings. This is something that was never mentioned in any of my college courses. 2. Work Culture Your mentor will have more experience with the company. Listen carefully to their time there. They can point you in the right direction when it comes to work related issues or concerns. For example, you will want to know how to officially request time off. If the mentor doesn’t know, they should be offering to help. Mentors are also great for connections. You may want to learn a new technology but your mentor may not be familiar with it. They might be able to recommend another developer. Let’s not forget that they have experience working in teams. This is a necessary skill to grasp as soon as possible. There may be times when you work with someone with a personality that doesn’t mingle well with yours. Your mentor may have worked with that same person or someone similar. They can surely provide advice on how to interact with this person. 3. Confidence Boost I can’t tell you enough how much it’s helped me be more confident as a developer when hearing my mentors voice their same concerns. I’m still considered new in the world of developers with almost 3 years of work experience. There are times that I experience imposter syndrome. I couldn’t believe my ears when a senior developer said that he still gets that same feeling. This was coming from a man who is highly respected in our community and has led multiple projects over his entire career. If someone like him feels the same, I honestly shouldn’t worry about it. It’s simply a feeling that everyone experiences. This syndrome doesn’t make me or you any less of a developer. It also helps to hear a mentor say that you’re doing great. It not only makes you feel better hearing it from someone you respect in the field, but it also gives you an insight that you are making good decisions. I was told that my compassion for newer developers is an excellent attribute to have. This was so important for me to hear from a mentor because one of my goals is to become a good mentor. Appraisals are great confidence boosters in any career role. It’s like getting a gold star in elementary school. Moving On Unfortunately, there are some people that are not meant to be mentors. If you happen to find yourself as a mentee in this situation, you need to move on. Find someone who you can safely share your concerns with. This may be the human resources department. They will probably give you suggestions on how to improve the situation before completely removing the mentor. Be open to their suggestions, especially if there is a chance of salvaging. However, there are times that you may have to push back. Don’t let this discourage you, though! This mentor was just not suited for you or maybe they really weren’t ready to be a mentor. This also applies for mentees. Mentors have the right to end the mentorship due to mentee participation. A mentoring relationship succeeds when both parties have their hearts in it, just as any relationship. Final Thoughts Mentors are practically anchors at the end of the day. They’re amazing people that remind us that we can one day be in their shoes: formally or informally. They are there for you! Don’t be afraid to talk to them. Send them a message! Make meetings! Take charge if needed! Mentors signed up to be available to you. It saddens me greatly to hear mentees get discouraged with their careers because their mentors refuse to do the program they signed up for. I recently became an official mentor for the apprenticeship program at This Dot. I want my mentee to feel comfortable talking to me. I truly believe that a mentor should be available and provide feedback and encouragement. Tweet me with your mentorship experiences! Are you in any? Planning to? Scared and need a push?...

The simplicity of deploying an MCP server on Vercel cover image

The simplicity of deploying an MCP server on Vercel

The current Model Context Protocol (MCP) spec is shifting developers toward lightweight, stateless servers that serve as tool providers for LLM agents. These MCP servers communicate over HTTP, with OAuth handled clientside. Vercel’s infrastructure makes it easy to iterate quickly and ship agentic AI tools without overhead. Example of Lightweight MCP Server Design At This Dot Labs, we built an MCP server that leverages the DocuSign Navigator API. The tools, like `get_agreements`, make a request to the DocuSign API to fetch data and then respond in an LLM-friendly way. ` Before the MCP can request anything, it needs to guide the client on how to kick off OAuth. This involves providing some MCP spec metadata API endpoints that include necessary information about where to obtain authorization tokens and what resources it can access. By understanding these details, the client can seamlessly initiate the OAuth process, ensuring secure and efficient data access. The Oauth flow begins when the user's LLM client makes a request without a valid auth token. In this case they’ll get a 401 response from our server with a WWW-Authenticate header, and then the client will leverage the metadata we exposed to discover the authorization server. Next, the OAuth flow kicks off directly with Docusign as directed by the metadata. Once the client has the token, it passes it in the Authorization header for tool requests to the API. ` This minimal set of API routes enables me to fetch Docusign Navigator data using natural language in my agent chat interface. Deployment Options I deployed this MCP server two different ways: as a Fastify backend and then by Vercel functions. Seeing how simple my Fastify MCP server was, and not really having a plan for deployment yet, I was eager to rewrite it for Vercel. The case for Vercel: * My own familiarity with Next.js API deployment * Fit for architecture * The extremely simple deployment process * Deploy previews (the eternal Vercel customer conversion feature, IMO) Previews of unfamiliar territory Did you know that the MCP spec doesn’t “just work” for use as ChatGPT tooling? Neither did I, and I had to experiment to prove out requirements that I was unfamiliar with. Part of moving fast for me was just deploying Vercel previews right out of the CLI so I could test my API as a Connector in ChatGPT. This was a great workflow for me, and invaluable for the team in code review. Stuff I’m Not Worried About Vercel’s mcp-handler package made setup effortless by abstracting away some of the complexity of implementing the MCP server. It gives you a drop-in way to define tools, setup https-streaming, and handle Oauth. By building on Vercel’s ecosystem, I can focus entirely on shipping my product without worrying about deployment, scaling, or server management. Everything just works. ` A Brief Case for MCP on Next.js Building an API without Next.js on Vercel is straightforward. Though, I’d be happy deploying this as a Next.js app, with the frontend features serving as the documentation, or the tools being a part of your website's agentic capabilities. Overall, this lowers the barrier to building any MCP you want for yourself, and I think that’s cool. Conclusion I'll avoid quoting Vercel documentation in this post. AI tooling is a critical component of this natural language UI, and we just want to ship. I declare Vercel is excellent for stateless MCP servers served over http....

Let's innovate together!

We're ready to be your trusted technical partners in your digital innovation journey.

Whether it's modernization or custom software solutions, our team of experts can guide you through best practices and how to build scalable, performant software that lasts.

Prefer email? hi@thisdot.co