Data source: npm, PyPI, crates.io, OSV.dev
https://context.gnist.ai/mcp/package-registry/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (7)
get_packageget_package_versionsget_download_statsget_dependenciesget_vulnerabilitiessearch_packagesreport_feedback
get_packageGet metadata for a package — latest version, description, license, maintainers.
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
name: Package name (e.g. 'express', 'requests', 'tokio').
Returns:
Package metadata including version, description, license, homepage,
repository URL, maintainers, and keywords.
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
name | string | required | Package name (e.g. 'express', 'requests', 'tokio'). |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_package",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
}get_package_versionsGet full release history for a package with publish timestamps.
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
name: Package name.
Returns:
Dictionary with count and versions list (version string + published_at timestamp).
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
name | string | required | Package name. |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_package_versions",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
}get_download_statsGet download statistics for a package.
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
name: Package name.
period: Time period — 'last-week' or 'last-month' (npm and PyPI).
crates.io always returns recent 90-day downloads.
Returns:
Dictionary with ecosystem, name, period, and download count.
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
name | string | required | Package name. |
period | string | optional | Time period — 'last-week' or 'last-month' (npm and PyPI). crates.io always returns recent 90-day downloads. (default: "last-week") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_download_stats",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
}get_dependenciesGet direct dependencies for a package version.
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
name: Package name.
version: Specific version string. If omitted, uses the latest release.
Returns:
Dictionary with count and dependencies list (name, version_req, kind).
For crates, kind may be 'normal', 'dev', or 'build'.
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
name | string | required | Package name. |
version | any | optional | Specific version string. If omitted, uses the latest release. |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_dependencies",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
}get_vulnerabilitiesGet known vulnerabilities for a package via OSV.dev (covers npm, PyPI, crates.io).
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
name: Package name.
version: Specific version to check. If omitted, returns all known vulns for the package.
Returns:
Dictionary with count and vulnerabilities list (OSV ID, summary, severity,
aliases like CVE numbers, affected version ranges, references, published/modified dates).
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
name | string | required | Package name. |
version | any | optional | Specific version to check. If omitted, returns all known vulns for the package. |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_vulnerabilities",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
}search_packagesSearch for packages by keyword across npm, PyPI, or crates.io.
Args:
ecosystem: Package ecosystem: 'npm', 'pypi', or 'crates'.
query: Search keywords (e.g. 'http client async', 'date parsing').
limit: Maximum results (1–50, default 20).
Returns:
Dictionary with count and packages list (name, version, description, downloads where available).
| Parameter | Type | Required | Description |
|---|---|---|---|
ecosystem | string | required | Package ecosystem: 'npm', 'pypi', or 'crates'. |
query | string | required | Search keywords (e.g. 'http client async', 'date parsing'). |
limit | integer | optional | Maximum results (1–50, default 20). (default: 20) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "search_packages",
"arguments": {
"ecosystem": "example",
"query": "example"
}
}
}report_feedbackReport a bug, feature request, or general feedback for this data source.
Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.
Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "report_feedback",
"arguments": {
"feedback": "example"
}
}
}Quick Start
curl -X POST "https://context.gnist.ai/mcp/package-registry/" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_package", "arguments": {"ecosystem": "example", "name": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/package-registry/",
headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_package",
"arguments": {
"ecosystem": "example",
"name": "example"
}
}
},
)
print(resp.json())