mcp-server-chart
A monorepo hosting multiple MCP servers, including a TypeScript chart server that generates AntV visualization specs, a Python chart sibling, and an AWS ECS MCP server for container management.
README
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
Prerequisites
- Node.js
>=18(forapps/ts-server) - Python
>=3.10and Poetry (forapps/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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.