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 maintainersimport { 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 testFix 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 uniqueidandname.
Duplicate IDs or names across files will cause validation to fail. -
Valid JSON in Config:
Each installationβsconfigfield must be a valid JSON string. -
Parameter Placeholder Consistency:
Every${VARIABLE}placeholder in an installationβsconfigmust have a corresponding parameter declared in that installationβsparametersarray.
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! π