Skip to main content
Glama
simeptk

mcp-migration-tools

by simeptk

mcp-migration-tools

A small, public-safe FastMCP server that exposes practical legacy-to-modern migration helpers as AI-callable tools — the same "thin tool wrapper over tested, pure logic" pattern I use on a larger production MCP server, distilled into a clean, fully generic example.


Why this exists

Modernizing 100+ legacy apps means doing the same analysis over and over: what stack is this? what endpoints does it expose? how do I port this DDL? how big is the job? These are perfect MCP tools — small, deterministic, and callable by an AI agent (or a human) on demand.

Related MCP server: legacy-web-mcp

The tools

Tool

What it does

detect_stack

Infers the dominant tech stack from a file listing (weights manifests over single files)

extract_api_contract

Pulls {method, path} REST endpoints from Spring controller source

sql_to_flyway

Converts SQL Server DDL into a portable Flyway migration (identity cols, MONEY, NVARCHAR, GETDATE(), brackets, GO, dbo.)

estimate_migration_effort

Transparent person-day estimate from coarse inventory counts, with a risk band

Design: pure logic + thin MCP layer

tools/*.py         ← pure, dependency-free functions (100% unit-tested)
   ▲
server.py          ← FastMCP wrappers: @mcp.tool() delegating to the pure logic

Keeping the logic free of the MCP runtime means every tool is fast to test and reusable outside MCP — the tests don't even import fastmcp.

Quick start

# install
pip install .[dev]

# run the tests (17 passing)
pytest -q

# run the MCP server (stdio transport)
mcp-migration-tools

Use the tools directly (no MCP needed)

from mcp_migration_tools.tools import detect_stack, sql_to_flyway

detect_stack(["ProductList.asp", "web.config"])
# {'stack': 'aspnet', 'confidence': 0.75, ...}

sql_to_flyway("CREATE TABLE [dbo].[Product]([Id] INT IDENTITY(1,1))", version=1,
              description="create product")
# {'filename': 'V1__create_product.sql', 'body': 'CREATE TABLE Product(Id INT GENERATED BY DEFAULT AS IDENTITY)\n'}

Register with an MCP client

Example client config (e.g. for an MCP-capable IDE/agent):

{
  "mcpServers": {
    "migration-tools": {
      "command": "mcp-migration-tools"
    }
  }
}

Project structure

mcp-migration-tools/
├── src/mcp_migration_tools/
│   ├── server.py                 # FastMCP server (tool registration)
│   └── tools/                    # pure, tested logic
│       ├── stack_detector.py
│       ├── api_extractor.py
│       ├── sql_translator.py
│       └── effort_estimator.py
├── tests/                        # pytest suite (one file per tool)
├── .github/workflows/ci.yml      # test on Python 3.11 & 3.12
└── pyproject.toml

Part of my modernization portfolio · simeptk.github.io · companion to legacy-to-modern-demo

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).

  • Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.

  • Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/simeptk/mcp-migration-tools'

If you have feedback or need assistance with the MCP directory API, please join our Discord server