Skip to content

Commit f2c0f1f

Browse files
committed
Setup project with basic claude desktop support
1 parent e43ef53 commit f2c0f1f

27 files changed

+1851
-142
lines changed

.gitignore

Lines changed: 56 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,136 +1,63 @@
1-
# Logs
2-
logs
3-
*.log
4-
npm-debug.log*
5-
yarn-debug.log*
6-
yarn-error.log*
7-
lerna-debug.log*
8-
.pnpm-debug.log*
9-
10-
# Diagnostic reports (https://nodejs.org/api/report.html)
11-
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12-
13-
# Runtime data
14-
pids
15-
*.pid
16-
*.seed
17-
*.pid.lock
18-
19-
# Directory for instrumented libs generated by jscoverage/JSCover
20-
lib-cov
21-
22-
# Coverage directory used by tools like istanbul
23-
coverage
24-
*.lcov
25-
26-
# nyc test coverage
27-
.nyc_output
28-
29-
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30-
.grunt
31-
32-
# Bower dependency directory (https://bower.io/)
33-
bower_components
34-
35-
# node-waf configuration
36-
.lock-wscript
37-
38-
# Compiled binary addons (https://nodejs.org/api/addons.html)
39-
build/Release
40-
41-
# Dependency directories
42-
node_modules/
43-
jspm_packages/
44-
45-
# Snowpack dependency directory (https://snowpack.dev/)
46-
web_modules/
47-
48-
# TypeScript cache
49-
*.tsbuildinfo
50-
51-
# Optional npm cache directory
52-
.npm
53-
54-
# Optional eslint cache
55-
.eslintcache
56-
57-
# Optional stylelint cache
58-
.stylelintcache
59-
60-
# Microbundle cache
61-
.rpt2_cache/
62-
.rts2_cache_cjs/
63-
.rts2_cache_es/
64-
.rts2_cache_umd/
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
env/
8+
build/
9+
develop-eggs/
10+
dist/
11+
downloads/
12+
eggs/
13+
.eggs/
14+
lib/
15+
lib64/
16+
parts/
17+
sdist/
18+
var/
19+
wheels/
20+
*.egg-info/
21+
.installed.cfg
22+
*.egg
23+
24+
# Virtual environments
25+
.venv
26+
venv/
27+
ENV/
28+
env/
29+
30+
# Unit test / coverage reports
31+
htmlcov/
32+
.tox/
33+
.coverage
34+
.coverage.*
35+
.cache
36+
nosetests.xml
37+
coverage.xml
38+
*.cover
39+
.hypothesis/
40+
.pytest_cache/
6541

66-
# Optional REPL history
67-
.node_repl_history
42+
# Jupyter Notebook
43+
.ipynb_checkpoints
6844

69-
# Output of 'npm pack'
70-
*.tgz
45+
# IDE files
46+
.idea/
47+
.vscode/
48+
*.swp
49+
*.swo
7150

72-
# Yarn Integrity file
73-
.yarn-integrity
51+
# Logs
52+
logs/
53+
*.log
7454

75-
# dotenv environment variable files
55+
# Local configuration
7656
.env
77-
.env.development.local
78-
.env.test.local
79-
.env.production.local
8057
.env.local
58+
.env.development
59+
.env.test
60+
.env.production
8161

82-
# parcel-bundler cache (https://parceljs.org/)
83-
.cache
84-
.parcel-cache
85-
86-
# Next.js build output
87-
.next
88-
out
89-
90-
# Nuxt.js build / generate output
91-
.nuxt
92-
dist
93-
94-
# Gatsby files
95-
.cache/
96-
# Comment in the public line in if your project uses Gatsby and not Next.js
97-
# https://nextjs.org/blog/next-9-1#public-directory-support
98-
# public
99-
100-
# vuepress build output
101-
.vuepress/dist
102-
103-
# vuepress v2.x temp and cache directory
104-
.temp
105-
.cache
106-
107-
# vitepress build output
108-
**/.vitepress/dist
109-
110-
# vitepress cache directory
111-
**/.vitepress/cache
112-
113-
# Docusaurus cache and generated files
114-
.docusaurus
115-
116-
# Serverless directories
117-
.serverless/
118-
119-
# FuseBox cache
120-
.fusebox/
121-
122-
# DynamoDB Local files
123-
.dynamodb/
124-
125-
# TernJS port file
126-
.tern-port
127-
128-
# Stores VSCode versions used for testing VSCode extensions
129-
.vscode-test
130-
131-
# yarn v2
132-
.yarn/cache
133-
.yarn/unplugged
134-
.yarn/build-state.yml
135-
.yarn/install-state.gz
136-
.pnp.*
62+
# MCPM specific
63+
.mcpm/

README.md

Lines changed: 139 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,161 @@
11
# MCPM - Model Context Protocol Package Manager
22

3-
MCPM is a Homebrew-like service and command-line interface for managing Model Context Protocol (MCP) configs and servers.
3+
MCPM is a Homebrew-like service and command-line interface for managing Model Context Protocol (MCP) servers across various MCP clients.
44

55
## Overview
66

7-
MCPM aims to simplify the installation, configuration, and management of Model Context Protocol configs with a focus on:
7+
MCPM aims to simplify the installation, configuration, and management of Model Context Protocol servers with a focus on:
88

9-
- Easy installation of Model Context Protocol configs via a simple CLI
10-
- Centralized management of configurations
11-
- Seamless updates for installed configs
9+
- Easy installation of MCP servers via a simple CLI
10+
- Centralized management of server configurations across multiple clients
11+
- Seamless updates for installed servers
1212
- Server-side management capabilities
1313

14-
## Supported Configs
14+
## Supported MCP Clients
1515

16-
Initial release will support configs for:
16+
MCPM will support managing MCP servers for the following clients:
1717

18-
- Claude Desktop (Anthropic's Model Context Protocol client)
19-
- More Model Context Protocol configs coming soon...
18+
- Claude Desktop (Anthropic)
19+
- Cursor
20+
- Windsurf
21+
- Additional clients coming soon...
22+
23+
## Command Line Interface (CLI)
24+
25+
MCPM provides a comprehensive CLI built with Python's Click framework. Below are the available commands:
26+
27+
### Basic Commands
28+
29+
```
30+
mcpm --help # Display help information and available commands
31+
mcpm --version # Display the current version of MCPM
32+
```
33+
34+
### Search Commands
35+
36+
```
37+
mcpm search [QUERY] # Search available MCP servers
38+
mcpm search --tags=TAG # Search servers by tag
39+
```
40+
41+
### Installation Commands
42+
43+
```
44+
mcpm install SERVER_NAME # Install an MCP server
45+
mcpm install SERVER_NAME --version=VERSION # Install specific version
46+
mcpm remove SERVER_NAME # Remove an installed MCP server
47+
mcpm update [SERVER_NAME] # Update installed servers (or specific server)
48+
```
49+
50+
### List Commands
51+
52+
```
53+
mcpm list # List all installed MCP servers
54+
mcpm list --available # List all available MCP servers
55+
mcpm list --outdated # List installed servers with updates available
56+
```
57+
58+
### Configuration Commands
59+
60+
```
61+
mcpm config SERVER_NAME # Configure an installed MCP server
62+
mcpm config --edit SERVER_NAME # Open server config in default editor
63+
mcpm config --reset SERVER_NAME # Reset server config to defaults
64+
```
65+
66+
### Status Commands
67+
68+
```
69+
mcpm status [SERVER_NAME] # Show status of all or specific MCP servers
70+
mcpm status --client=CLIENT_NAME # Show status of MCP servers for a specific client
71+
mcpm enable SERVER_NAME --client=CLIENT_NAME # Enable an MCP server for a specific client
72+
mcpm disable SERVER_NAME --client=CLIENT_NAME # Disable an MCP server for a specific client
73+
```
74+
75+
### Server Management
76+
77+
```
78+
mcpm server start SERVER_NAME # Start an MCP server
79+
mcpm server stop SERVER_NAME # Stop an MCP server
80+
mcpm server restart SERVER_NAME # Restart an MCP server
81+
mcpm server log SERVER_NAME # View server logs
82+
```
2083

2184
## Roadmap
2285

2386
- [x] Landing page setup
2487
- [ ] CLI foundation
25-
- [ ] Config repository structure
26-
- [ ] Claude Desktop config integration
88+
- [ ] Server repository structure
89+
- [ ] Claude Desktop client integration
2790
- [ ] Server management functionality
28-
- [ ] Additional config support
91+
- [ ] Additional client support
2992

3093
## Development
3194

32-
This repository contains the landing page for mcpm.sh and will eventually house the CLI and service components.
95+
This repository contains the CLI and service components for MCPM, built with Python and Click following modern package development practices.
96+
97+
### Development Requirements
98+
99+
- Python 3.8+
100+
- uv (for virtual environment and dependency management)
101+
- Click framework for CLI
102+
- Rich for enhanced console output
103+
- Requests for API interactions
104+
105+
### Project Structure
106+
107+
The project follows the modern src-based layout:
108+
109+
```
110+
mcpm.sh/
111+
├── src/ # Source package directory
112+
│ └── mcpm/ # Main package code
113+
├── tests/ # Test directory
114+
├── test_cli.py # Development CLI runner
115+
├── pyproject.toml # Project configuration
116+
└── README.md # Documentation
117+
```
118+
119+
### Development Setup
120+
121+
1. Clone the repository
122+
```
123+
git clone https://github.com/pathintegral-xyz/mcpm.sh.git
124+
cd mcpm.sh
125+
```
126+
127+
2. Set up a virtual environment with uv
128+
```
129+
uv venv
130+
source .venv/bin/activate # On Unix/Mac
131+
```
132+
133+
3. Install dependencies in development mode
134+
```
135+
uv pip install -e .
136+
```
137+
138+
4. Run the CLI directly during development
139+
```
140+
# Either use the installed package
141+
mcpm --help
142+
143+
# Or use the development script
144+
./test_cli.py --help
145+
```
146+
147+
5. Run tests
148+
```
149+
pytest tests/
150+
```
151+
152+
### Best Practices
153+
154+
- Use the src-based directory structure to prevent import confusion
155+
- Develop with an editable install using `uv pip install -e .`
156+
- Keep commands modular in the `src/mcpm/commands/` directory
157+
- Add tests for new functionality in the `tests/` directory
158+
- Use the `test_cli.py` script for quick development testing
33159

34160
## License
35161

0 commit comments

Comments
 (0)