Caution
Live Registry: https://ravitemer.github.io/mcp-registry/registry.json
A community-maintained registry of Model Context Protocol (MCP) servers with structured installation configurations for easy integration.
Welcome to the MCP Registry! π
The Model Context Protocol (MCP) ecosystem is growing rapidly, but finding and configuring servers can be challenging. This registry solves that problem by providing a centralized, community-maintained collection of MCP servers with structured installation configurations.
What makes this registry special?
- π¦ One-Click Installation: Each server comes with ready-to-use configurations for popular tools (NPX, Docker, Python, etc.)
- π§ Parameter System: Smart placeholder system using
${VARIABLE}
syntax for easy customization - π¦ Transport Information: Clear indication of supported protocols (stdio, SSE, streamable-http)
- β Quality Assurance: Comprehensive validation and testing ensure all definitions work correctly
- π€ Community-Driven: Easy contribution process via GitHub pull requests
- π― Integration-Ready: Designed for seamless integration with MCP clients and hubs
Whether you're building an MCP client, managing a server hub, or just want to discover new servers, this registry provides the structured data you need!
- Every MCP server in the registry is defined in a single YAML file
- Each server can have multiple installation methods (NPX, Docker, Python, etc.)
- Installation configurations are ready-to-use JSON templates
- Parameters use
${VARIABLE}
syntax for easy replacement
mcp-registry/
βββ servers/ # Server definition files (YAML)
β βββ filesystem.yaml
β βββ github.yaml
β βββ ...
βββ schemas/ # Validation schemas
βββ server-entry.js
Each server is defined in a YAML file in the servers/
directory with the following structure:
# Basic Information
id: server_name # Unique identifier (alphanumeric + underscore, min 3 chars)
name: Display Name # Human-readable name
description: Brief description under 200 characters
author: Author Name # Author or organization
url: https://github.com/author/repo # Documentation or repository URL
license: MIT # Software license (optional)
# Classification
category: development # Primary category
tags: # Searchable keywords
- tag1
- tag2
# Installation Methods
installations:
- name: NPX # Installation method name
description: Run using NPX # Brief description
config: | # JSON configuration template
{
"command": "npx",
"args": ["-y", "package-name", "${PARAM}"]
}
prerequisites: # System requirements
- Node.js
parameters: # Parameters for this installation
- name: Parameter Name
key: PARAM
description: Parameter description
placeholder: example-value
required: true
transports: # Supported transport methods for this installation
- stdio
- sse
- streamable-http
# Quality Indicators
featured: false # Featured/recommended server
verified: false # Verified by maintainers
import { z } from 'zod';
export const ParameterSchema = z.object({
name: z.string().min(1),
key: z.string().min(1),
description: z.string().optional(),
placeholder: z.string().optional(),
required: z.boolean().default(true),
}).strict();
export const InstallationSchema = z.object({
name: z.string().min(1),
description: z.string().optional(),
config: z.string().min(1),
prerequisites: z.array(z.string()).optional(),
parameters: z.array(ParameterSchema).optional(),
transports: z.array(z.enum(['stdio', 'sse', 'streamable-http'])).optional(),
}).strict();
export const ServerSchema = z.object({
id: z.string().min(1),
name: z.string().min(1),
description: z.string().min(1).max(200),
author: z.string(),
url: z.string().url(),
license: z.string().optional(),
category: z.string(),
tags: z.array(z.string()),
installations: z.array(InstallationSchema).min(1),
featured: z.boolean().default(false),
verified: z.boolean().default(false),
}).strict();
Each server can provide multiple installation methods to accommodate different environments:
- NPX: Node.js package execution
- Docker: Container-based execution
- Python/UVX: Python-based servers
- Remote: Direct HTTP connections
- Custom: Any other installation method
The registry uses a ${VARIABLE}
placeholder system for configuration templates:
- Parameters should be declared for each installation method if present
- Each parameter includes name, description, placeholder, and required flag
- Consumers replace placeholders with actual values during installation
Contributing a new MCP server is easy! Follow these steps:
- Visit the MCP Registry repository: https://github.com/ravitemer/mcp-registry
- Click the "Fork" button in the top-right corner
- This creates your own copy where you can make changes
git clone https://github.com/YOUR-USERNAME/mcp-registry.git
cd mcp-registry
npm install
- Create a new YAML file in the
servers/
directory - Use a descriptive filename (e.g.,
my-awesome-server.yaml
) - Follow the server definition format described above
- Include all required fields and at least one installation method
Before submitting, validate your server definition:
# Validate your server definition
npm run validate
# Run all tests
npm test
Fix any validation errors before proceeding.
git add servers/my-server.yaml
git commit -m "Add My Awesome Server to registry"
git push origin main
- Go to the original repository: https://github.com/ravitemer/mcp-registry
- Click "Pull Requests" then "New Pull Request"
- Click "Compare across forks"
- Select your fork as the head repository
- Provide a clear title and description
- Submit the pull request
After submitting:
- Automated tests will run to validate your server definition
- Maintainers will review your submission
- They may request changes or improvements
- Once approved, your server will be merged and automatically deployed
- Your server will be available at:
https://ravitemer.github.io/mcp-registry/registry.json
Every pull request to this repository triggers a comprehensive validation workflow.
Your submission will only be accepted if it passes all of the following checks:
-
Schema Validation:
Every server YAML file must match the strict Zod schema.- No extra fields are allowed.
- All required fields must be present.
-
Unique IDs and Names:
All servers must have a uniqueid
andname
.
Duplicate IDs or names across files will cause validation to fail. -
Valid JSON in Config:
Each installationβsconfig
field must be a valid JSON string. -
Parameter Placeholder Consistency:
Every${VARIABLE}
placeholder in an installationβsconfig
must have a corresponding parameter declared in that installationβsparameters
array.
If any of these checks fail, your PR will be marked as failing and you will see detailed error messages in the PR logs.
- Clear Descriptions: Write concise, informative descriptions under 200 characters
- Comprehensive Tags: Use relevant tags to make your server discoverable
- Multiple Installation Methods: Provide options for different environments when possible
- Accurate Prerequisites: List all system requirements clearly
- Parameter Documentation: Include helpful descriptions and example values
- Testing: Thoroughly test your server definition before submitting
- Quality URLs: Ensure repository URLs are accurate
Ready to contribute? Start by forking the repository and adding your MCP server! π