Add NuGet to the MCP Registry, similar to npm and Python
This commit is contained in:
parent
81e5174a59
commit
68ee3b9af9
7 changed files with 49 additions and 9 deletions
|
|
@ -31,6 +31,7 @@ graph TB
|
||||||
NPM[npm Registry]
|
NPM[npm Registry]
|
||||||
PYPI[PyPI Registry]
|
PYPI[PyPI Registry]
|
||||||
DOCKER[Docker Hub]
|
DOCKER[Docker Hub]
|
||||||
|
NUGET[NuGet Gallery]
|
||||||
DNS[DNS Services]
|
DNS[DNS Services]
|
||||||
GH[GitHub OAuth]
|
GH[GitHub OAuth]
|
||||||
end
|
end
|
||||||
|
|
@ -46,6 +47,7 @@ graph TB
|
||||||
API -.-> |Verify| DNS
|
API -.-> |Verify| DNS
|
||||||
API -.-> |Reference| NPM
|
API -.-> |Reference| NPM
|
||||||
API -.-> |Reference| PYPI
|
API -.-> |Reference| PYPI
|
||||||
|
API -.-> |Reference| NUGET
|
||||||
API -.-> |Reference| DOCKER
|
API -.-> |Reference| DOCKER
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ The registry serves as the authoritative metadata repository for publicly-availa
|
||||||
## 2. Minimal Operational Burden
|
## 2. Minimal Operational Burden
|
||||||
|
|
||||||
- Design for low maintenance and operational overhead
|
- Design for low maintenance and operational overhead
|
||||||
- Delegate complexity to existing services where possible (GitHub for auth, npm/PyPI for packages)
|
- Delegate complexity to existing services where possible (GitHub for auth, npm/PyPI/NuGet for packages)
|
||||||
- Avoid features that require constant human intervention or moderation
|
- Avoid features that require constant human intervention or moderation
|
||||||
- Build for reasonable downtime tolerance (24h acceptable) by having consumers cache data for their end-users
|
- Build for reasonable downtime tolerance (24h acceptable) by having consumers cache data for their end-users
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@ The registry serves as the authoritative metadata repository for publicly-availa
|
||||||
|
|
||||||
## 4. Meets Industry Security Standards
|
## 4. Meets Industry Security Standards
|
||||||
|
|
||||||
- Leverage existing package registries (npm, PyPI, Docker Hub, etc.) for source code distribution, obviating the need to reinvent source code security
|
- Leverage existing package registries (npm, PyPI, NuGet, Docker Hub, etc.) for source code distribution, obviating the need to reinvent source code security
|
||||||
- Use mechanisms like DNS verification, OAuth to provide base layer of authentication and trust
|
- Use mechanisms like DNS verification, OAuth to provide base layer of authentication and trust
|
||||||
- Implement rate limiting, field validation, and blacklisting to prevent abuse
|
- Implement rate limiting, field validation, and blacklisting to prevent abuse
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ The MCP Registry is the official centralized metadata repository for publicly-ac
|
||||||
|
|
||||||
### Is the MCP Registry a package registry?
|
### Is the MCP Registry a package registry?
|
||||||
|
|
||||||
No. The MCP Registry stores metadata about MCP servers and references to where they're hosted (npm, PyPI, Docker Hub, etc.), but does not host the actual source code or packages.
|
No. The MCP Registry stores metadata about MCP servers and references to where they're hosted (npm, PyPI, NuGet, Docker Hub, etc.), but does not host the actual source code or packages.
|
||||||
|
|
||||||
### Who should use the MCP Registry directly?
|
### Who should use the MCP Registry directly?
|
||||||
|
|
||||||
|
|
@ -37,7 +37,7 @@ Servers are published by submitting a `server.json` file through our CLI tool. T
|
||||||
|
|
||||||
1. GitHub authentication
|
1. GitHub authentication
|
||||||
2. A public GitHub repository (even for closed-source servers - just for the metadata)
|
2. A public GitHub repository (even for closed-source servers - just for the metadata)
|
||||||
3. Your server package published to a supported registry (npm, PyPI, Docker Hub, etc.)
|
3. Your server package published to a supported registry (npm, PyPI, NuGet, Docker Hub, etc.)
|
||||||
4. Optional: DNS verification for custom namespacing
|
4. Optional: DNS verification for custom namespacing
|
||||||
|
|
||||||
### What namespaces are available?
|
### What namespaces are available?
|
||||||
|
|
@ -54,6 +54,7 @@ No. While open source code is encouraged, it is not required for either locally
|
||||||
|
|
||||||
- npm (Node.js packages)
|
- npm (Node.js packages)
|
||||||
- PyPI (Python packages)
|
- PyPI (Python packages)
|
||||||
|
- NuGet.org (.NET packages)
|
||||||
- GitHub Container Registry (GHCR)
|
- GitHub Container Registry (GHCR)
|
||||||
|
|
||||||
More can be added as the community desires; feel free to open an issue if you are interested in building support for another registry.
|
More can be added as the community desires; feel free to open an issue if you are interested in building support for another registry.
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ components:
|
||||||
properties:
|
properties:
|
||||||
registry_name:
|
registry_name:
|
||||||
type: string
|
type: string
|
||||||
enum: [npm, docker, pypi, homebrew]
|
enum: [npm, docker, pypi, homebrew, nuget]
|
||||||
example: "npm"
|
example: "npm"
|
||||||
name:
|
name:
|
||||||
type: string
|
type: string
|
||||||
|
|
|
||||||
|
|
@ -179,6 +179,41 @@
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## NuGet (.NET) Package Example
|
||||||
|
|
||||||
|
The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Knapcode.SampleMcpServer",
|
||||||
|
"description": "Sample NuGet MCP server for a random number and random weather",
|
||||||
|
"repository": {
|
||||||
|
"url": "https://github.com/joelverhagen/Knapcode.SampleMcpServer",
|
||||||
|
"source": "github"
|
||||||
|
},
|
||||||
|
"version_detail": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"release_date": "2025-07-02T18:54:28.00Z"
|
||||||
|
},
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"registry_name": "nuget",
|
||||||
|
"name": "Knapcode.SampleMcpServer",
|
||||||
|
"version": "0.3.0-beta",
|
||||||
|
"runtime_hint": "dnx",
|
||||||
|
"environment_variables": [
|
||||||
|
{
|
||||||
|
"name": "WEATHER_CHOICES",
|
||||||
|
"description": "Comma separated list of weather descriptions to randomly select.",
|
||||||
|
"is_required": true,
|
||||||
|
"is_secret": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Complex Docker Server with Multiple Arguments
|
## Complex Docker Server with Multiple Arguments
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,8 @@
|
||||||
"npm",
|
"npm",
|
||||||
"docker",
|
"docker",
|
||||||
"pypi",
|
"pypi",
|
||||||
"homebrew"
|
"homebrew",
|
||||||
|
"nuget"
|
||||||
],
|
],
|
||||||
"description": "Package registry type",
|
"description": "Package registry type",
|
||||||
"example": "npm"
|
"example": "npm"
|
||||||
|
|
@ -105,10 +106,11 @@
|
||||||
},
|
},
|
||||||
"runtime_hint": {
|
"runtime_hint": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Hint for appropriate runtime (e.g., npx, uvx)",
|
"description": "Hint for appropriate runtime (e.g., npx, uvx, dnx)",
|
||||||
"examples": [
|
"examples": [
|
||||||
"npx",
|
"npx",
|
||||||
"uvx"
|
"uvx",
|
||||||
|
"dnx"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"runtime_arguments": {
|
"runtime_arguments": {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},{
|
},{
|
||||||
"registry_name": "docker>",
|
"registry_name": "docker",
|
||||||
"name": "io.github.<owner>/<server-name>-cli",
|
"name": "io.github.<owner>/<server-name>-cli",
|
||||||
"version": "0.123.223",
|
"version": "0.123.223",
|
||||||
"runtime_hint": "docker",
|
"runtime_hint": "docker",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue