How I Built an MCP Server to Automate My BA Workflow

Published: (December 6, 2025 at 10:51 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Introduction

Every sprint planning session, the same questions arise:

  • “When will we ship?”
  • “What fits in this sprint?”
  • “Does this prioritisation actually make sense?”

I’m a Business Analyst and I answer these questions weekly. They’re not hard, just repetitive. So I built tools to answer them automatically.

What is MCP?
Model Context Protocol (MCP) lets you extend what Claude can do. Instead of just chatting, you give it tools—functions it can call to get real answers. Think of it like plugins for AI.

The Problem I Was Solving

BA work involves lots of small calculations:

  • Working days between dates (excluding bank holidays)
  • Release dates based on velocity
  • Whether priorities actually make sense
  • Formatting user stories consistently

These tasks aren’t complex, but they’re time‑consuming when done repeatedly.

What I Built

BA Workflow Tools – 17 MCP tools in one server:

Sprint & Release Planning

  • calculate_working_days – excludes weekends and UK bank holidays
  • calculate_sprint_dates – generate multiple sprints at once
  • calculate_release_date – story points + velocity = ship date
  • calculate_velocity – with capacity adjustments for holidays

MoSCoW Prioritisation

  • calculate_moscow_priority – breakdown with percentages
  • plan_moscow_capacity – what fits in your sprint
  • validate_moscow_dependencies – catch problems before they happen

User Stories

  • format_user_story – proper structure with acceptance criteria

Miscellaneous

  • Timezone tools, estimation converters, text utilities

Code Walkthrough

// Example: Release date calculator
{
  name: "calculate_release_date",
  description: "Calculate estimated release date based on story points remaining, team velocity, and sprint length",
  inputSchema: {
    type: "object",
    properties: {
      storyPointsRemaining: { type: "number" },
      teamVelocity: { type: "number" },
      sprintLength: { type: "number" },
      startDate: { type: "string" }
    },
    required: ["storyPointsRemaining", "teamVelocity", "sprintLength", "startDate"]
  }
}

The logic: divide points by velocity, multiply by sprint length in weeks, add working days to the start date. Simple—but now Claude does it for me.

How to Install

  1. Clone the repo
    git clone https://github.com/cs97jjm3/ba-workflow-tools.git
    cd ba-workflow-tools
  2. Install dependencies
    npm install
  3. Add the server to Claude Desktop config
  4. Restart Claude Desktop

Real Examples

Example 1
Me: “I’ve got 85 story points left, velocity is 25 per sprint, sprints are 2 weeks. When will we finish?”
Claude: (calls calculate_release_date) “Based on your velocity, you’ll need approximately 4 sprints. Estimated completion: March 14 2025.”

Example 2
Me: “Check if any of my Must‑haves depend on Won’t items.”
Claude: (calls validate_moscow_dependencies) “Found 2 issues: REQ‑045 (Must) depends on REQ‑089 (Won’t)…”

What I Learned Building MCP Servers

This is my third MCP server. The other two, built at work, are:

  • Date Operations – working days across 14 countries
  • Web Analyser with Login – page analysis behind authentication

Key lessons

  • Start with problems you solve repeatedly.
  • Keep tools focused—one job per tool.
  • Good descriptions matter; Claude uses them to decide when to call your tool.
  • Test with real prompts, not just unit tests.

What’s Next

Planned additions:

  • RAID log management
  • Stakeholder matrix tools
  • More estimation converters

Pull requests are welcome.

  • GitHub:
  • MCP Documentation: [link]
Back to Blog

Related posts

Read more »