Provides a registry of MCP servers and reusable skills that AI assistants use to access specialized tools and workflows.
다른 이름 stacklok/toolhive-catalog
- 스타
- 26
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- Apache-2.0
ToolHive Catalog MCP란?
ToolHive Catalog은(는) MCP server입니다. Provides a registry of MCP servers and reusable skills that AI assistants use to access specialized tools and workflows.
프로젝트 README에서 생성된 요약
ToolHive Catalog MCP server 정보
Providing a centralized registry of MCP servers and reusable skills is what toolhive-catalog does for developers building AI-driven workflows. It serves as a directory where AI assistants can discover specialized tools for tasks like querying databases, interacting with GitHub, or fetching web content. The catalog organizes these capabilities into two distinct categories: servers that provide specific tools and skills that combine those tools into complex, reusable prompts or workflows.
Developers can integrate their own capabilities by adding entries for either container-based servers running as Docker images or remote servers accessed via HTTP/HTTPS endpoints. The system supports various communication methods including stdio, sse, and streamable-http. When adding a server, users define metadata such as the tier, status, and specific tools provided. For skills, the registry uses markdown files with YAML frontmatter to define instructions and allowed tools, ensuring AI assistants can execute structured tasks like reviewing pull requests or debugging issues.
활용 사례
- 1Register a Docker-based MCP serverA developer can add a new capability to the registry by creating a server.json file that points to a public Docker image.
- 2Deploy a remote tool via HTTPYou can provide access to a tool hosted on a web server without needing to package it as a container.
- 3Create complex AI workflowsDevelopers can bundle multiple tools into a single skill to automate multi-step processes like code reviews.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
자동 검사
2026년 11월 15일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능stacklok/toolhive-catalog is public and reachablegithub.com/stacklok/toolhive-catalog ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-13github.com/stacklok/toolhive-catalog ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기ToolHive Catalog
This repository contains the catalog of MCP (Model Context Protocol) servers and skills available for ToolHive. Each server entry provides AI assistants with specialized tools and capabilities, while skills provide reusable prompts and workflows that leverage those tools.
What is this?
Think of this as a catalog of tools and skills that AI assistants can use. Each server entry represents a server that provides specific capabilities—like interacting with GitHub, querying databases, or fetching web content. Each skill entry is a reusable prompt or workflow that combines server tools to accomplish a specific task—like reviewing pull requests or debugging issues.
How to Add Your MCP Server
Adding your MCP server to the registry is simple! You need to create a server.json file following the upstream MCP ServerJSON schema, with ToolHive-specific extensions in the _meta field. We support two types of MCP servers:
- Container-based servers - Run as Docker containers (use
packagesfield) - Remote servers - Accessed via HTTP/HTTPS endpoints (use
remotesfield)
Step 1: Create a Folder
Create a new folder in registries/toolhive/servers/ with your server's name (use lowercase and hyphens):
registries/
└── toolhive/
└── servers/
│ └── my-awesome-server/
│ └── server.json
└── skills/
└── my-skill/
├── skill.json
├── icon.svg
└── skill/ # installable content (referenced by subfolder in skill.json)
└── SKILL.md
Step 2: Create Your server.json File
Choose the appropriate format based on your server type:
For Container-based Servers
Create a server.json file:
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.stacklok/my-server",
"description": "What your server does in one sentence",
"title": "my-server",
"repository": {
"url": "https://github.com/myorg/my-server",
"source": "github"
},
"version": "1.0.0",
"packages": [
{
"registryType": "oci",
"identifier": "ghcr.io/myorg/my-server:v1.0.0",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"name": "API_KEY",
"description": "Your API key",
"isRequired": true,
"isSecret": true
}
]
}
],
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"io.github.stacklok": {
"ghcr.io/myorg/my-server:v1.0.0": {
"tier": "Community",
"status": "Active",
"tags": ["api", "integration"],
"tools": ["tool_name_1", "tool_name_2"]
}
}
}
}
}
For Remote Servers
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.stacklok/my-remote-server",
"description": "What your server does in one sentence",
"title": "my-remote-server",
"repository": {
"url": "https://github.com/myorg/my-server",
"source": "github"
},
"version": "1.0.0",
"remotes": [
{
"type": "streamable-http",
"url": "https://api.example.com/mcp"
}
],
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"io.github.stacklok": {
"https://api.example.com/mcp": {
"tier": "Community",
"status": "Active",
"tags": ["remote", "api"],
"tools": ["tool_name_1", "tool_name_2"]
}
}
}
}
}
Key Concepts
The _meta extensions block holds ToolHive-specific data (tier, status, tags, tools, permissions, etc.) nested under io.modelcontextprotocol.registry/publisher-provided > io.github.stacklok > <extension-key>.
The extension key must match:
- For containers: the
packages[0].identifiervalue (e.g.,ghcr.io/myorg/my-server:v1.0.0) - For remotes: the
remotes[0].urlvalue (e.g.,https://api.example.com/mcp)
Step 3: Add More Details (Optional but Recommended)
You can add more information in the _meta extensions block:
{
"ghcr.io/myorg/my-server:v1.0.0": {
"tier": "Community",
"status": "Active",
"tags": ["api", "integration", "productivity"],
"tools": ["tool_name_1", "tool_name_2"],
"permissions": {
"network": {
"outbound": {
"allow_host": ["api.example.com"],
"allow_port": [443]
}
}
},
"provenance": {
"cert_issuer": "https://token.actions.githubusercontent.com",
"repository_uri": "https://github.com/myorg/my-server",
"runner_environment": "github-hosted",
"signer_identity": "/.github/workflows/build.yml",
"sigstore_url": "tuf-repo-cdn.sigstore.dev"
},
"custom_metadata": {
"author": "My Organization",
"homepage": "https://docs.example.com",
"license": "MIT"
}
}
}
How to Add a Skill
Skills are reusable prompts and workflows that leverage MCP server tools. A skill is defined by a SKILL.md file (with YAML frontmatter) and a skill.json registry entry.
Step 1: Create the Directory Structure
Create a new folder in registries/toolhive/skills/ with your skill's name. Skill content (SKILL.md and any bundled resources) lives in a skill/ subfolder, separate from registry metadata (skill.json, icon.svg):
mkdir -p registries/toolhive/skills/my-skill/skill
Step 2: Create the SKILL.md File
Create this inside the skill/ subfolder. It uses YAML frontmatter for metadata and markdown for the prompt/instructions:
---
name: my-skill
description: What this skill does in one sentence.
version: "0.1.0"
allowed-tools:
- server/tool_name_1
- server/tool_name_2
license: Apache-2.0
metadata:
author: Your Name
---
# My Skill
Instructions and prompts for the AI assistant go here...
Step 3: Create the skill.json File
Create this in the skill's root directory (next to icon.svg, not inside skill/). This registers the skill in the catalog. Note that the subfolder points to the skill/ subdirectory so that only skill content is installed — not registry metadata like skill.json and icon.svg:
{
"namespace": "io.github.stacklok",
"name": "my-skill",
"title": "My Skill",
"description": "What this skill does in one sentence.",
"version": "0.1.0",
"status": "active",
"license": "Apache-2.0",
"allowedTools": ["server/tool_name_1", "server/tool_name_2"],
"repository": {
"url": "https://github.com/stacklok/toolhive-catalog",
"type": "git"
},
"icons": [
{
"src": "icon.svg",
"type": "image/svg+xml"
}
],
"packages": [
{
"registryType": "git",
"url": "https://github.com/stacklok/toolhive-catalog",
"ref": "main",
"subfolder": "registries/toolhive/skills/my-skill/skill"
}
]
}
Step 4: Add an Icon
Add an icon.svg file to your skill directory.
Step 5: Validate
task catalog:validate
task catalog:build
For a complete example, see registries/toolhive/skills/code-review/.
Common Questions
What is "transport"?
This tells ToolHive how to communicate with your server:
For container-based servers (in packages[].transport.type):
stdio- Standard input/output (most common)sse- Server-sent eventsstreamable-http- HTTP streaming
For remote servers (in remotes[].type):
streamable-http- HTTP streaming (recommended)sse- Server-sent events (deprecated but still supported)- Note: Remote servers cannot use
stdio
If you're not sure, use stdio for containers and streamable-http for remote servers.
What is "tier"?
Official- Maintained by the MCP team or platform ownersCommunity- Created and maintained by the community (most servers)
What is "status"?
Active- Fully functional and maintainedDeprecated- No longer maintained, will be removed
What about the "tools" field?
List all the tools your server provides in the _meta extensions block. If your server's tools aren't knowable until runtime, you can use ["set_during_runtime"].
Do I need a Docker image?
For container-based servers: Yes. Your MCP server must be packaged as a Docker image and published to a registry like:
- Docker Hub (
docker.io/username/image) - GitHub Container Registry (
ghcr.io/username/image) - Other public registries
For remote servers: No. You just need to provide the URL endpoint where your MCP server is accessible.
Security Note: Filesystem Permissions
Important: Don't specify filesystem paths or volume mounts in your registry entries. Mounting host directories is a security risk and should be configured by users at runtime, not in registry specs. Only network permissions (allowed hosts and ports) should be specified in the permissions section.
How do I test my entry?
After adding your entry, you can validate it:
# Validate all entries
task catalog:validate
# Build the registry files
task catalog:build
Or submit a pull request and our automated checks will validate it for you.
Submitting Your Entry
- Fork this repository
- Add your server entry as described above
- Submit a pull request
- We'll review and merge your addition
Registry Inclusion Criteria
We evaluate submissions based on several criteria to ensure quality and usefulness for the community. Your server should:
- Provide clear value and unique capabilities
- Be well-documented with accurate tool descriptions
- Follow security best practices
- Be actively maintained with recent updates
For detailed evaluation criteria, see the Registry Inclusion Criteria, including MCP server criteria and skill criteria.
Before Submitting, Please Ensure
For container-based servers:
- Your Docker image is publicly accessible
- The
descriptionclearly explains what your server does - You've listed all the tools your server provides
- Any required environment variables are documented
- Your server works with ToolHive
For remote servers:
- Your server endpoint is publicly accessible
- The
descriptionclearly explains what your server does - You've listed all the tools your server provides
- Any required authentication is documented
- The transport is set to
streamable-http(preferred) orsse(notstdio) - Your server works with ToolHive's proxy command
Need Help?
- Check existing entries in
registries/toolhive/servers/for server examples - Check existing entries in
registries/toolhive/skills/for skill examples - Open an issue if you have questions
- Join our community discussions
For Maintainers
If you need to work with the registry programmatically:
# Validate all entries
task catalog:validate
# Build the upstream MCP registry files
task catalog:build
# Update metadata for oldest entries
task catalog:update-metadata:oldest
# Preview a sync of every dockyard-sourced skill (no writes)
task catalog:sync-skills:all:dry-run
# See all available commands
task
Dockyard skill sync
Skills whose first OCI package targets ghcr.io/stacklok/dockyard/skills/<name>:*
are kept in lockstep with the skills/<name>/spec.yaml files in
stacklok/dockyard. The
sync-skills workflow runs daily, executes
catalog sync-skills --all, and opens (or refreshes) a single
catalog-sync-skills PR that bumps both the OCI tag (packages[].identifier)
and the upstream git ref (packages[].ref) so they always match what dockyard
last published. To run it manually, use task catalog:sync-skills:all or
trigger the workflow via workflow_dispatch.
License
Apache License 2.0
ToolHive Catalog MCP 질문
What is the difference between a server and a skill?
A server entry provides specific capabilities like interacting with GitHub or querying databases, while a skill is a reusable prompt or workflow that combines those tools to complete tasks.
Do I need a Docker image for my MCP server?
If you are using a container-based server, yes, it must be packaged as a Docker image and published to a registry. For remote servers, a Docker image is not required as long as you provide a URL endpoint.