Skip to content

Commit 64396e2

Browse files
committed
Port registry site over
1 parent fe78620 commit 64396e2

File tree

234 files changed

+13643
-66
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

234 files changed

+13643
-66
lines changed

.github/workflows/deploy.yml

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ name: Deploy to GitHub Pages
22

33
on:
44
push:
5-
branches: [ "main" ]
5+
branches:
6+
- main
67
workflow_dispatch:
8+
schedule:
9+
- cron: '0 */6 * * *' # Run every 6 hours
710

811
permissions:
912
contents: read
@@ -15,20 +18,59 @@ concurrency:
1518
cancel-in-progress: false
1619

1720
jobs:
18-
deploy:
19-
environment:
20-
name: github-pages
21-
url: ${{ steps.deployment.outputs.page_url }}
21+
validate:
22+
uses: ./.github/workflows/validate-manifests.yml
23+
24+
build:
2225
runs-on: ubuntu-latest
26+
needs: validate
2327
steps:
2428
- name: Checkout
2529
uses: actions/checkout@v4
30+
2631
- name: Setup Pages
27-
uses: actions/configure-pages@v4
32+
uses: actions/configure-pages@v5
33+
34+
- name: Install uv with caching
35+
uses: astral-sh/setup-uv@v5
36+
with:
37+
enable-cache: true
38+
cache-dependency-glob: "pyproject.toml"
39+
40+
- name: Install dependencies
41+
run: |
42+
uv sync
43+
44+
- name: Setup site structure
45+
run: |
46+
mkdir -p pages/registry
47+
mkdir -p pages/api/servers
48+
49+
- name: Run preparation script
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52+
run: |
53+
chmod +x ./scripts/prepare.sh
54+
source .venv/bin/activate
55+
./scripts/prepare.sh ./pages
56+
57+
58+
- name: Build with Jekyll
59+
uses: actions/jekyll-build-pages@v1
60+
with:
61+
source: ./pages
62+
destination: ./_site
63+
2864
- name: Upload artifact
2965
uses: actions/upload-pages-artifact@v3
30-
with:
31-
path: 'pages'
66+
67+
deploy:
68+
environment:
69+
name: github-pages
70+
url: ${{ steps.deployment.outputs.page_url }}
71+
runs-on: ubuntu-latest
72+
needs: build
73+
steps:
3274
- name: Deploy to GitHub Pages
3375
id: deployment
34-
uses: actions/deploy-pages@v4
76+
uses: actions/deploy-pages@v4
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Validate Server Manifests
2+
3+
on:
4+
pull_request:
5+
branches: [ main ]
6+
workflow_call:
7+
8+
jobs:
9+
validate:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout
13+
uses: actions/checkout@v4
14+
15+
- name: Validate Server JSON Files
16+
uses: cardinalby/schema-validator-action@v3
17+
with:
18+
# Path to files to validate (glob pattern)
19+
file: 'mcp-registry/servers/*.json'
20+
# Schema file to validate against
21+
schema: 'mcp-registry/schema/server-schema.json'
22+
# Mode (lax, spec, default, strong)
23+
mode: 'default'
24+
# Experimental: fix schema formats if needed
25+
fixSchemas: 'false'

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,5 @@ logs/
6565
# jekyll
6666
_site/
6767
.jekyll-cache/
68-
.jekyll-metadata
68+
.jekyll-metadata
69+
_dev/

CONTRIBUTING.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Contributing to getmcp.io
2+
3+
Thank you for considering contributing to getmcp.io! This document outlines the process for adding or updating MCP servers in the registry.
4+
5+
## Adding a New Server
6+
7+
1. Fork this repository
8+
2. Create a new JSON file named after your server under `mcp-registry/servers/` (use kebab-case, e.g., `github.json` or `time-converter.json`)
9+
3. Ensure your server JSON file adheres to the [server schema](/mcp-registry/schema/server-schema.json)
10+
11+
### Server JSON Requirements
12+
13+
Your server JSON file must include the following required fields:
14+
15+
```json
16+
{
17+
"name": "your-server-name",
18+
"display_name": "Your Server Display Name",
19+
"description": "Brief description of the server's functionality",
20+
"repository": {
21+
"type": "git",
22+
"url": "https://github.com/your-username/your-repo"
23+
},
24+
"author": {
25+
"name": "Your Name"
26+
},
27+
"license": "MIT",
28+
"categories": ["category1", "category2"],
29+
"tags": ["tag1", "tag2"],
30+
"arguments": {
31+
"EXAMPLE_ARG": {
32+
"description": "Description of this argument",
33+
"required": false
34+
}
35+
},
36+
"commands": {
37+
"npm": {
38+
"type": "npm",
39+
"command": "npx",
40+
"args": ["your-server-package"],
41+
"env": {
42+
"EXAMPLE_ARG": "${EXAMPLE_ARG}"
43+
}
44+
}
45+
},
46+
"examples": [
47+
{
48+
"title": "Example usage",
49+
"description": "Brief description of example",
50+
"prompt": "Example prompt to demonstrate server functionality"
51+
}
52+
]
53+
}
54+
```
55+
56+
For a complete reference of all available fields, see the [server schema](/mcp-registry/schema/server-schema.json).
57+
58+
## Schema Validation
59+
60+
All server JSON files are automatically validated against the schema during the CI process. You can also validate your server JSON locally using the prepare.py script:
61+
62+
```bash
63+
# From the repository root
64+
python scripts/prepare.py mcp-registry pages --validate-only
65+
```
66+
67+
## Updating an Existing Server
68+
69+
1. Fork this repository
70+
2. Update the relevant server JSON file in the `mcp-registry/servers/` directory
71+
3. Submit a pull request with a clear description of your changes
72+
73+
## Website Development
74+
75+
If you want to contribute to the getmcp.io website itself:
76+
77+
1. Fork and clone the repository
78+
2. Run the development server:
79+
80+
```bash
81+
./dev.sh
82+
```
83+
84+
3. Access the site at http://localhost:4000
85+
4. Make your changes to the files in the `pages/` directory
86+
5. Submit a pull request with a clear description of your changes
87+
88+
## Design Guidelines
89+
90+
getmcp.io follows a minimal, clean design philosophy:
91+
92+
- Stick to a minimal black and white color scheme
93+
- Focus on functionality and readability
94+
- Follow modern web design patterns
95+
- Keep UI elements simple and focused on content
96+
97+
## Code of Conduct
98+
99+
Please note that this project is released with a Contributor Code of Conduct. By participating in this project, you agree to abide by its terms.
100+
101+
## License
102+
103+
By contributing to this repository, you agree to license your contributions under the same license as this repository.

DEVELOPMENT.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Development Guide for getmcp.io
2+
3+
This guide covers how to set up and run the getmcp.io website locally for development.
4+
5+
## Prerequisites
6+
7+
- [Docker](https://www.docker.com/get-started/) (for running Jekyll)
8+
- [jq](https://stedolan.github.io/jq/download/) (for JSON processing)
9+
10+
## Quick Start
11+
12+
The easiest way to run the site locally is using the included development script:
13+
14+
```bash
15+
./dev.sh
16+
```
17+
18+
This script:
19+
1. Processes server manifests into JSON files
20+
2. Sets up the proper directory structure
21+
3. Starts the Jekyll development server
22+
23+
The site will be available at http://localhost:4000 with live reloading enabled.
24+
25+
## Manual Development Setup
26+
27+
If you prefer to run the steps manually:
28+
29+
1. **Process the server manifests** - The automated script handles this for you, but you can examine the script to see how manifests are processed into API endpoints.
30+
31+
2. **Start the Jekyll server**:
32+
```bash
33+
cd pages
34+
docker run --rm -it -v "$PWD:/srv/jekyll" -p 4000:4000 jekyll/jekyll:4.2.0 jekyll serve --livereload
35+
```
36+
37+
## Making Changes
38+
39+
- **Website Changes**: Edit files in the `/pages` directory
40+
- **Registry Changes**: Add or modify server manifests in `/mcp-registry/servers/<server-name>/manifest.json`
41+
42+
If you add a new server, run `./dev.sh` again to regenerate the JSON files.
43+
44+
## Testing Production Build
45+
46+
To test the production build that will be deployed to GitHub Pages:
47+
48+
```bash
49+
cd pages
50+
docker run --rm -it -v "$PWD:/srv/jekyll" jekyll/jekyll:4.2.0 jekyll build
51+
```
52+
53+
The built site will be in `pages/_site/`.

README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ MCPM aims to simplify the installation, configuration, and management of Model C
1010
- Centralized management of server configurations across multiple clients
1111
- Seamless updates for installed servers
1212
- Server-side management capabilities
13+
- Registry of available MCP servers
1314

1415
## Supported MCP Clients
1516

@@ -53,22 +54,17 @@ mcpm server status # Show status of running MCP servers
5354
mcpm toggle SERVER_NAME # Toggle an MCP server on or off for a client
5455
```
5556

56-
### Coming Soon Commands
57+
### Registry
5758

58-
The following commands are planned for future releases:
59-
60-
```
61-
mcpm install SERVER_NAME # Install an MCP server
62-
mcpm search [QUERY] # Search available MCP servers
63-
mcpm status # Show status of MCP servers in Claude Desktop
64-
```
59+
The MCP Registry is a central repository of available MCP servers that can be installed using MCPM. The registry is available at [mcpm.sh/registry](https://mcpm.sh/registry).
6560

6661
## Roadmap
6762

6863
- [x] Landing page setup
6964
- [x] CLI foundation
7065
- [x] Search
7166
- [x] Install
67+
- [x] Registry integration
7268
- [ ] Server management functionality
7369
- [ ] Support SSE Server
7470
- [ ] Additional client support
@@ -97,6 +93,9 @@ mcpm.sh/
9793
├── tests/ # Test directory
9894
├── test_cli.py # Development CLI runner
9995
├── pyproject.toml # Project configuration
96+
├── pages/ # Website content
97+
│ └── registry/ # Registry website
98+
├── mcp-registry/ # MCP Registry data
10099
└── README.md # Documentation
101100
```
102101

dev.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
3+
echo -e "\n📦 Setting up getmcp.io development environment...\n"
4+
5+
# Check if Docker is installed and running
6+
if ! docker info &> /dev/null; then
7+
echo "❌ Docker is required but not running. Please start Docker and try again."
8+
exit 1
9+
fi
10+
11+
# Cleanup previous development files
12+
echo -e "🗑️ Cleaning up previously generated files...\n"
13+
rm -rf pages/api/servers
14+
rm -f pages/api/servers.json
15+
rm -rf pages/registry/servers
16+
17+
# Create and clean _dev directory
18+
DEV_DIR="_dev"
19+
echo -e "🔄 Setting up development directory in $DEV_DIR\n"
20+
mkdir -p "$DEV_DIR"
21+
22+
# First clear the directory to ensure clean state
23+
rm -rf "$DEV_DIR"/*
24+
25+
# Copy pages directory structure with all content
26+
echo -e "🔄 Copying site content to development directory...\n"
27+
cp -r pages/* "$DEV_DIR"/
28+
29+
# Run the common preparation script
30+
mkdir -p "$DEV_DIR/registry"
31+
./scripts/prepare.sh "$DEV_DIR"
32+
33+
echo -e "✅ Setup complete!\n"
34+
35+
echo -e "\n🌐 Starting Jekyll development server..."
36+
echo " Access the site at http://localhost:4000"
37+
echo -e " Press Ctrl+C to stop the server\n"
38+
# Start Jekyll dev server using Docker from the _dev directory
39+
cd "$DEV_DIR" && docker run --rm -it \
40+
-v "$PWD:/srv/jekyll" \
41+
-p 4000:4000 \
42+
jekyll/jekyll:4.2.0 \
43+
jekyll serve --livereload || (echo -e "\nPort 4000 is already in use. Assuming development server is already running." && exit 0)

0 commit comments

Comments
 (0)