Creating an MCP server for Taskmaster
This guide walks you through creating a Gram-hosted MCP server for Taskmaster. You’ll learn how to upload an OpenAPI document, create a toolset, configure authentication, and publish your MCP server.
What is Taskmaster?
Section titled “What is Taskmaster?”Taskmaster is a full-stack CRUD application for tasks and projects. It includes:
- A web UI for managing projects and tasks
- A built-in HTTP API
- OAuth 2.0 authentication
- A Neon PostgreSQL database for storing tasks and projects
This guide focuses on using Taskmaster to manage tasks and projects via an MCP server, although you can also manage them using the web UI or the built-in HTTP API.
Find the full code and OpenAPI document in the Taskmaster repository.
Prerequisites
Section titled “Prerequisites”To follow this tutorial, you need:
- A Gram account
- Access to Taskmaster, using our demo app or your own self-hosted instance
Setting up a Gram project
Section titled “Setting up a Gram project”In the Gram dashboard, click New Project to start the guided setup flow for creating a toolset and MCP server.
Enter a project name and click Submit.
Gram will then guide you through the following steps:
1. Upload the OpenAPI document
Section titled “1. Upload the OpenAPI document”Upload the Taskmaster OpenAPI document, enter the name of your API, and click Continue.
2. Create a toolset
Section titled “2. Create a toolset”Give your toolset a name (for example, Taskmaster
) and click Continue.
Notice that this dialog also displays the names of the tools generated from your OpenAPI document.
3. Configure MCP
Section titled “3. Configure MCP”Enter a URL slug for the MCP server and click Continue.
Gram then creates the toolset from the OpenAPI document.
Click Toolsets in the sidebar to view the Taskmaster toolset.
As you can see, the toolset needs environment variables before you can use it.
Getting a Taskmaster API key
Section titled “Getting a Taskmaster API key”Before configuring environment variables, create an API key:
- Navigate to your Taskmaster app (for example,
https://taskmaster-ritza.vercel.app
). - Sign in and go to Settings → Developer.
- Under API Keys, click New Key.
- Give it a label and click Create.
- Copy the API key. You will not be able to see it again.
Configuring environment variables
Section titled “Configuring environment variables”Environments store API keys and configuration separately from your toolset logic.
In the Environments tab, click the Default environment. Click the three-dot menu in the top-right corner of the environment card, and in the dropdown, click Fill for Toolset. Select the Taskmaster toolset and click Fill Variables to automatically populate the required variables.
Configure the following environment variables:
- Set the
TASKMASTER_SERVER_URL
environment variable to your API base URL. For example:https://taskmaster-ritza.vercel.app/api
- Set the
TASKMASTER_ACCESS_TOKEN
environment variable to your API key. For example:tm_abc123_def456
Alternatively, you can set anX-API-Key
header to the same value. The API accepts both.
Click Update and then Save.
Publishing an MCP server
Section titled “Publishing an MCP server”Let’s make the toolset available as an MCP server.
Go to the MCP tab, find the Taskmaster toolset, and click on it to open the MCP details page.
Scroll down to the Visibility section and tick the Public checkbox.
Next, you’ll need to copy the MCP server configuration.
Scroll down to the MCP Config section and copy the Public Server configuration.
The configuration looks something like this:
{ "mcpServers": { "GramTaskmaster": { "command": "npx", "args": [ "mcp-remote", "https://app.getgram.ai/mcp/ritza-rzx-taskmaster", "--header", "MCP-TASKMASTER-APIKEY-API-KEY:${VALUE}", "--header", "MCP-TASKMASTER-APIKEY-SERVER-URL:${VALUE}" ] } }}
Use the Authenticated Server configuration if you want to use the MCP server in a private environment.
You need an API key to use an authenticated server. Generate an API key in the Taskmaster Settings → Developer → API Keys page, copy it, and paste it in the GRAM_KEY
environment variable in place of <your-key-here>
.
The authenticated server configuration looks something like this:
{ "mcpServers": { "GramTaskmaster": { "command": "npx", "args": [ "mcp-remote", "https://app.getgram.ai/mcp/ritza-rzx-taskmaster", "--header", "Gram-Environment:undefined", "--header", "Authorization:${GRAM_KEY}" ], "env": { "GRAM_KEY": "Bearer <your-key-here>" } } }}
Testing the MCP server
Section titled “Testing the MCP server”Before connecting to external clients, test your setup by using the Gram Playground to verify that your tools are working correctly.
What’s next
Section titled “What’s next”Your Taskmaster MCP server is now ready to use with any MCP client. You can connect it to:
- Claude Code
- Claude Desktop
- Your IDE
- Cline
- Any other MCP-compatible client