DEV Community

James Murrell
James Murrell

Posted on

How I Built an MCP Server to Automate My BA Workflow

**

Introduction

**

Every sprint planning session, same questions:

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

I'm a Business Analyst. 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 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

Not complex. But time-consuming when you do them 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

Plus: timezone tools, estimation converters, text utilities

Code Walkthrough

javascript// 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"]
  }
}
Enter fullscreen mode Exit fullscreen mode

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

How to Install

Clone the repo
npm install
Add to Claude Desktop config
Restart Claude Desktop

Real Examples

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 14th 2025."
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 are at work:

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

Planning to add:

RAID log management
Stakeholder matrix tools
More estimation converters

PRs welcome.

Links

GitHub: https://github.com/cs97jjm3/ba-workflow-tools
MCP Documentation: [link]
Follow me for more BA automation content

Top comments (0)