This repository contains multiple MCP servers in separate subdirectories:
- FileSystem-MCP
- Weather-MCP
Each sub-project has its own pyproject.toml so you can install them individually (e.g., if you only need one) or all together in the same environment.
MCP/
├── FileSystem-MCP/
│ ├── pyproject.toml
│ └── src/
│ └── custom_mcp/
│ ├── server.py
│ └── client.py
├── Weather-MCP/
│ ├── pyproject.toml
│ └── src/
│ └── weather_mcp/
│ └── server.py
└── (other files, readme, etc.)
If you want all sub-projects in one environment, simply install the top-level project:
- Case 1: If you have already setup uv project then:
uv add "git+https://github.com/aumsathwara/MCP.git@multiple-mcps"- Case 2: If you haven't setup uv project then:
uv pip install "git+https://github.com/aumsathwara/MCP.git@multiple-mcps"This pulls in the main monorepo at branch multiple-mcps and installs the top-level project as configured in pyproject.toml. Depending on your configuration, this may install all dependencies shared across the repository (though it might not pull in the subdirectory packages if they’re not referenced in the top-level pyproject). If you have references to each MCP at the top level, it should install them all.
Note: If you see “Workspace dependency… must refer to local directory” or a similar error, you might need to install each sub-package separately (see below). Some versions of uv do not allow a single aggregator approach.
Use uv’s pip passthrough and specify the subdirectory:
uv pip install "git+https://github.com/aumsathwara/MCP.git@multiple-mcps#subdirectory=FileSystem-MCP"This tells pip to:
- Clone the repo at branch
multiple-mcps. - Navigate into
FileSystem-MCP/. - Build and install that sub-package.
Now your environment has FileSystem-MCP installed.
If you’d like both FileSystem-MCP and Weather-MCP in the same environment but without using the top-level aggregator, install each sub-package one by one:
uv pip install "git+https://github.com/aumsathwara/MCP.git@multiple-mcps#subdirectory=FileSystem-MCP"
uv pip install "git+https://github.com/aumsathwara/MCP.git@multiple-mcps#subdirectory=Weather-MCP"That’s it! Now you have both installed. You can confirm by listing installed packages in your environment.
-
Workspace dependency errors
If you see an error like:error: Workspace dependency 'mcp-all' must refer to local directory, not a Git repositoryit means uv does not allow referencing multiple subdirectories via a single aggregator
pyproject.tomlfrom Git. In that case, just use the “Install Both Sub-Projects Manually” approach above. -
Invalid subdirectory
Make sure your path matches exactly (case-sensitive). If you see “file not found,” confirm your monorepo layout. -
Cannot find modules with dashes in the name
Remember that Python import paths cannot contain a dash (-). Use underscores in package folder names (e.g.,weather_mcp), but your distribution/package name inpyproject.tomlcan still have a dash (e.g.,name = "weather-mcp").
After installation, each MCP project may expose its own console scripts (e.g., filesystem-mcp-server, weather-mcp-server), depending on how you configured [project.scripts] in each pyproject.toml. For example:
filesystem-mcp-server…might start up the FileSystem-MCP server. Similarly,
weather-mcp-server…starts the Weather-MCP server.
If not, you can always run them via Python modules. For example:
python -m custom_mcp.server(or however you’ve structured your code).
- Clone the repo:
git clone -b multiple-mcps https://github.com/aumsathwara/MCP.git
- Make changes in a feature branch.
- Submit a pull request.