Skip to main content
Glama
kesavP

mcp-server-chart

by kesavP

mcp-server-chart (monorepo)

A monorepo hosting several Model Context Protocol (MCP) servers:

App

Language

Package manager

Path

ts-server

TypeScript / Node

npm workspaces

apps/ts-server

py-server

Python

Poetry

apps/py-server

aws-mcp-server

Python

Poetry

apps/aws-mcp-server

apps/ts-server is the original AntV @antv/mcp-server-chart. apps/py-server is a Python/FastMCP chart sibling, managed with Poetry. apps/aws-mcp-server is an AWS ECS MCP server scaffold (FastMCP + boto3).

Layout

.
├── apps/
│   ├── ts-server/        # TypeScript MCP server (npm workspace)
│   ├── py-server/        # Python chart MCP server (Poetry)
│   └── aws-mcp-server/   # AWS ECS MCP server (Poetry, FastMCP + boto3)
├── package.json          # workspace root + cross-app scripts
├── .husky/               # git hooks (run at repo root)
└── .github/workflows/    # CI: ts-server + py-server + aws-server jobs

Related MCP server: @tscafejr/mcp

Prerequisites

  • Node.js >=18 (for apps/ts-server)

  • Python >=3.10 and Poetry (for apps/py-server)

Setup

# TypeScript workspace (installs apps/ts-server deps + git hooks)
npm install

# Python app
npm run py:install        # -> poetry -C apps/py-server install

Common tasks

Run from the repo root:

Command

Runs

npm run ts:build

Build the TypeScript server

npm run ts:test

Test the TypeScript server (Vitest)

npm run start

Launch ts-server via the MCP Inspector

npm run py:install

poetry -C apps/py-server install

npm run py:start

Run the Python server (poetry run chart-py)

npm run py:test

poetry run pytest

npm run py:lint

poetry run ruff check .

npm run aws:install

poetry -C apps/aws-mcp-server install

npm run aws:start

Run the ECS server (poetry run aws-mcp-server)

npm run aws:test

poetry -C apps/aws-mcp-server run pytest

npm run aws:lint

poetry -C apps/aws-mcp-server run ruff check .

Each app can also be used directly from its own directory — see the per-app READMEs linked above.

Connecting ts-server to aws-mcp-server

ts-server can discover a running aws-mcp-server over the network (opt-in):

# 1. Start the ECS server on a port (Streamable HTTP at /mcp)
npm run aws:start:http                       # -> http://127.0.0.1:8123/mcp

# 2. Point ts-server at it; on startup it connects, lists the ECS tools, and logs them
npm run ts:build
AWS_MCP_SERVER_URL=http://127.0.0.1:8123/mcp node apps/ts-server/build/index.js -t streamable
# -> "Connected to aws-mcp-server at http://127.0.0.1:8123/mcp; tools: containerize_app, build_and_push_image_to_ecr"

Configure the target with AWS_MCP_SERVER_URL, or just AWS_MCP_SERVER_PORT (host defaults to 127.0.0.1, path /mcp). If unset, ts-server skips the connection entirely; if the AWS server is down, ts-server logs a warning and keeps serving charts.

License

MIT

The monorepo conversion is complete and verified. Here's the summary.

What changed

Layout (apps/ split, as chosen): mcp-server-chart/ ├── apps/ │ ├── ts-server/ ← existing AntV TypeScript server (moved here, git history preserved) │ └── py-server/ ← new Python MCP server (Poetry + FastMCP) ├── package.json ← npm-workspace root + cross-app scripts ├── README.md ← new monorepo README (old one → apps/ts-server/README.md) ├── .husky/ ← git hooks stay at repo root ├── .gitignore ← added Python ignores └── .github/workflows/ ← build.yml now has ts-server + py-server jobs; release.yml paths fixed

ts-server: all TS files git mv'd in (97 renames, history intact). Removed the workspace-level husky/lint-staged (now at root); prepare → prepack so publishing still builds.

py-server (Poetry, PEP 621 pyproject, poetry check passes):

  • chart_py/server.py — FastMCP server with an example generate_line_chart tool that posts an AntV spec to VIS_REQUEST_SERVER; extend via register_tools.

  • tests/ (pytest), console entry point chart-py, ruff configured.

Root scripts (run from repo root): npm run ts:build / ts:test / start, and py:install / py:start / py:test / py:lint (delegating to poetry -C apps/py-server)

AWS MCP

Dependencies added (the ones main.py needs): fastmcp (its from fastmcp import FastMCP) and boto3 (ECS/AWS work), plus dev: pytest, pytest-asyncio, ruff, boto3-stubs.

Entry point — main() (already had the if name == "main" guard) wired as a console script: [project.scripts] aws-mcp-server = "awslabs.aws_mcp_server.main:main"

Stubs made it runnable, not just importable: register_module/register_proxy/get_config/secure_tool are safe no-ops/pass-throughs (they run at import time when main.py builds the server), while the actual tool functions (create_infrastructure, build_and_push_image_to_ecr, delete_infrastructure, delete_app) raise NotImplementedError when called — that's your TODO surface.

Monorepo wiring: root npm run aws:install | aws:start | aws:test | aws:lint, a aws-server CI job in build.yml, a lint-staged glob, and README table/layout entries.

check the Start the server, then query it with the Inspector's CLI — this is the exact command I just ran successfully: npm run aws:start:http # in one terminal

in another:

npx @modelcontextprotocol/inspector --cli http://127.0.0.1:8123/mcp --transport http --method tools/list

call a tool:

npx @modelcontextprotocol/inspector --cli http://127.0.0.1:8123/mcp --transport http
--method tools/call --tool-name containerize_app --tool-arg app_path=/path/to/app port=8080


1.run npm install to run nodemodules in the root 2.compile frontend and run a.npm run ts:build b.npm run ts:start or node apps/ts-server/build/index.js -t streamable -p 1122 3.start the backend a.npm run aws:start:http

A
license - permissive license
-
quality - not tested
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.

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/kesavP/toolmaninspector'

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