Commit graph

713 commits

Author SHA1 Message Date
Tadas Antanavicius
05422afffb
Split OpenAPI specs into base and official registry versions (#171)
Closes #149

As noted in the FAQ update here, this is a helpful starting point in
thinking about this:

```
### What is the difference between "Official MCP Registry", "MCP Registry", "MCP registry", "MCP Registry API", etc?

There are four underlying concepts:
- "MCP Server Registry API" (or "MCP Registry API"): The OpenAPI specification defined in [openapi.yaml](./server-registry-api/openapi.yaml). This is a reusable API specification that anyone building any sort of "MCP server registry" should consider adopting / aligning with.
- "Official MCP Registry" (or "MCP Registry"): The application that lives at `https://registry.modelcontextprotocol.io`. This registry currently only catalogs MCP servers, but may be extended in the future to also catalog MCP client/host apps and frameworks.
- "Official MCP Registry API": The REST API that lives at `https://registry.modelcontextprotocol.io/api`, with an OpenAPI specification defined at [official-registry-openapi.yaml](./server-registry-api/official-registry-openapi.yaml)
- "MCP server registry" (or "MCP registry"): A third party, likely commercial, implementation of the MCP Server Registry API or derivative specification.
```

Prior to this PR, we were just treating "MCP Server Registry API" and
"Official MCP Registry API" to be the same thing. They are not the same:
the latter is inherently a more constrained version of the former. A
private deployment of a similar registry need not have constraints like
"the only valid source code repositories are `github` and `gitlab`".

This PR separates out the definitions to match that path forward.

## Notable Changes

### Base OpenAPI spec (`openapi.yaml`)
- Removed official-registry-specific constraints:
  - No maximum limit on `/servers` endpoint
  - No enum constraint on `Repository.source`
  - No enum constraint on `Package.registry_name`
- Removed `/v0` prefix from paths (it's now just baked into the
`official` one's URL prefix)
- Added `$id` for proper schema identification

### Official Registry OpenAPI spec (`official-registry-openapi.yaml`)
- Created as a derivative of the base spec using `$ref`
- Re-adds official-registry-specific constraints:
  - `Repository.source` enum: `[github]`
  - `Package.registry_name` enum: `[npm, docker, pypi, nuget]`

### Documentation updates
- Added `server-registry-api/README.md` explaining the relationship
between specs
- Updated FAQ to clarify terminology
- Reorganized docs structure
2025-07-10 00:46:01 +00:00
Tadas Antanavicius
b8f7f75644
Add CLAUDE.md file for Claude Code guidance (#170)
## Summary
- Adds CLAUDE.md file to provide guidance for Claude Code instances
working with this repository
- Includes essential development commands and high-level architecture
overview
- Follows the standard format for Claude Code documentation

## Details
The CLAUDE.md file contains:
- Common development commands for building, running, testing, and
linting
- Architecture overview explaining the clean architecture pattern
- Request flow documentation
- Key interfaces and their implementations
- Authentication flow details
- Important design patterns used in the codebase

This will help future Claude Code instances be more productive when
working with the MCP Registry codebase.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Avinash Sridhar <sridharavinash@users.noreply.github.com>
2025-07-09 17:43:08 -07:00
Tadas Antanavicius
a5f417b6f5
Split "general" server.json from "registry-specific" server.json (#167)
Closes #155

The "generalized" `server.json` is the one that can be used in a variety
of situations:

- Discoverability on a centralized registry (i.e. our official Registry
work)
- Discoverability on a decentralized .well-known endpoint
- As a response to an initialization call, so the client knows
information about the MCP server to which it is connecting
- As an input into crafting a [DXT
file](https://www.anthropic.com/engineering/desktop-extensions)
- Packaged in with the source code of an MCP server, so as to have a
structured way context

Of these, the official Registry is but one use case. The Registry has a
unique set of concerns for which we are optimizing, like whitelisting of
specific registries we trust to host MCP server source code for the
public community (`npm`, `pypi`, etc). It is not necessary to have such
a constraint for the generalized server.json, which may be used in, for
example, an internal context where such a validation doesn't make sense.

So I've done the following at a high level:
- Renamed the prior `schema.json` to be `registry-schema.json`
- Introduced a more generic `schema.json` to serve as the schema for the
generalized `server.json`
- Refactored `registry-schema.json` to be simply a constraint on the
base `schema.json`

I made a few small changes in this transition:
- Removed `gitlab` as an option in `repository.source` for
`registry-schema.json`. I'm fine going live with just GitHub support;
would be happy to take a contribution from e.g. Gitlab employees or a
motivated Gitlab customer to expand anytime.
- Removed `homebrew` as an option in `packages.registry_name`; never
really made sense, not a place where folks are publishing MCP servers
- Added `docker` to `packages.runtime_hint`; was just a missing
oversight
- Gave both schemas a global `$id`
~- Removed `release_date` from both schemas. Certainly not something
that makes sense for the generalized schema. It actually doesn't make
sense for the Registry schema either, because this is the server.json
that _users will submit_, i.e. the _input_ into the Registry publication
API. `release_date` will be a piece of _output_ metadata. The Registry
API will be free to append such extra metadata for GET /:id requests of
servers, and the data can be present in the OpenAPI spec, but it does
not need to be in the registry-server.json JSON schema.~
  - Note this is no longer in this PR; rebased on #168 which included it
- Removed unnecessary enums from the generalized `schema.json`
2025-07-09 14:02:43 -07:00
Joel Verhagen
6a2e5d1b27
Align the server.json schema with the YAML (#168)
<!-- Provide a brief summary of your changes -->

## Motivation and Context

This is in support of
https://github.com/modelcontextprotocol/registry/issues/159, to make it
easier, I hope. My team noticed some differences in the JSON schema,
most notably the "choices" property was missing. I tried to write a tool
to do this but slowed down since I am not experienced with Go. This is a
first pass, maybe someone else can finish the tooling.

I restructured the JSON schema to break out child objects like the YAML
file, and brought the descriptions and example into sync. The only
differences are two extra properties in the YAML which are computed by
the server:

- `VersionDetail.is_latest` is not present in the JSON schema, computed
by the registry based on
https://github.com/modelcontextprotocol/registry/issues/158
- `Server.id` is not present in the JSON schema, generated by the
registry

The idea is the a tool could look at ServerDetail in the YAML and then
generate the schema.json with minimal fix-ups (add a root title, remove
`VersionDetail.is_latest` and `Server.id`.

~Question for @tadasant - should `VersionDetail.release_date` be in the
JSON schema? I think _no_ (and let it be computed) but it's there right
now.~ - aligned with
https://github.com/modelcontextprotocol/registry/pull/167 and removed

## How Has This Been Tested?

I have tested the JSON schema against the sample server.json in the repo
(files and markdown blocks).

## Breaking Changes

None.

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [x] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
2025-07-09 10:27:38 -07:00
Xin Luo
f6fa98c914
Add more information about the value field under Input in the API doc (#164)
<!-- Provide a brief summary of your changes -->
Add more information about the value field under Input in the API doc.

## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
the descrioption for
[value](81e5174a59/docs/openapi.yaml (L219))
is not clearly.

## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->
No need.

## Breaking Changes
<!-- Will users need to update their code or configurations? -->
No

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ x ] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ x ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ x ] My code follows the repository's style guidelines
- [ x ] New and existing tests pass locally
- [ x ] I have added appropriate error handling
- [ x ] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
2025-07-08 14:55:17 -07:00
Connor Peet
0911cec421
Resolve packages and remove unknown registries (#138) 2025-07-07 19:32:56 +00:00
Joel Verhagen
7d7a96551f Add new package registry document 2025-07-07 12:28:19 -06:00
Joel Verhagen
68ee3b9af9 Add NuGet to the MCP Registry, similar to npm and Python 2025-07-07 12:28:19 -06:00
copilot-swe-agent[bot]
81e5174a59 Update publisher CLI help output format to use standard output without timestamps and show flags in --long-flag/-short format
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
copilot-swe-agent[bot]
68b55735cb Fix linting errors in publisher CLI tool
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
copilot-swe-agent[bot]
e10d3f2b62 Add publisher binary to gitignore
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
copilot-swe-agent[bot]
662957fa7f Complete create command implementation with package arguments and updated documentation
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
copilot-swe-agent[bot]
1ec3e19dcf Implement create command with basic functionality
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
copilot-swe-agent[bot]
776253ce2c Initial exploration and planning for create command
Co-authored-by: toby <83556+toby@users.noreply.github.com>
2025-07-02 19:40:25 -06:00
tadasant
09ae969489 Simplify schema 2025-07-02 09:21:47 -06:00
tadasant
01b818f5b7 Address feedback 2025-07-02 09:21:47 -06:00
tadasant
2061151d45 First pass 2025-07-02 09:21:47 -06:00
tadasant
443159fed1 Rogue section 2025-06-26 17:18:34 -07:00
tadasant
4a844a612b Per hour 2025-06-26 17:18:34 -07:00
tadasant
6d336cb7cf 10/day 2025-06-26 17:18:34 -07:00
tadasant
1cfec3d4dc Typosquatting 2025-06-26 17:18:34 -07:00
tadasant
8f92c8a177 Open source FAQ 2025-06-26 17:18:34 -07:00
tadasant
9d041ad4d9 Open source 2025-06-26 17:18:34 -07:00
Tadas Antanavicius
c4a1a75f9a Update docs/roadmap.md
Co-authored-by: Jonathan Hefner <jonathan@hefner.pro>
2025-06-26 17:18:34 -07:00
Toby Padilla
5f247cb4df Apply suggestion from @jonathanhefner
Co-authored-by: Jonathan Hefner <jonathan@hefner.pro>
2025-06-26 17:18:34 -07:00
Toby Padilla
6c07cad995 Apply suggestion from @jonathanhefner
Co-authored-by: Jonathan Hefner <jonathan@hefner.pro>
2025-06-26 17:18:34 -07:00
Tadas Antanavicius
511159553b Update docs/roadmap.md
Co-authored-by: Connor Peet <connor@peet.io>
2025-06-26 17:18:34 -07:00
Tadas Antanavicius
5bbe44a42d Add more links 2025-06-26 17:18:34 -07:00
Tadas Antanavicius
171ec50220 Docs 2025-06-26 17:18:34 -07:00
Mingyong Chen
686fbe1e78
feat(database): support SeedFile import for memory database (#128)
<!-- Provide a brief summary of your changes -->
Add SeedFile import support for memory database to ensure consistent
seed data loading across both MongoDB and memory modes.

## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
Previously, SeedFile import was only available when using MongoDB. After
memory database support was added, it lacked this feature, leading to
inconsistent behavior and missing seed data during development or
testing.
This PR solves the problem by enabling the application to load SeedFile
data even when running with a memory database, ensuring consistency and
improving the developer/testing experience.

## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->


```bash
$ export MCP_REGISTRY_DATABASE_TYPE="memory"
$ ./scripts/test_endpoints.sh
==================================================
MCP Registry Endpoint Test Script
==================================================
This script expects the MCP Registry server to be running locally.
Please ensure the server is started using one of the following methods:
  • Docker Compose: docker compose up
  • Direct execution: go run cmd/registry/main.go
  • Built binary: ./build/registry
==================================================

Testing health endpoint: http://localhost:8080/v0/health
Status Code: 200
Response:
{
  "status": "ok",
  "github_client_id": ""
}
Health check successful
-------------------------------------
Testing servers endpoint: http://localhost:8080/v0/servers
Status Code: 200
Response Summary:
Total registries: 30
servers Names:
io.github.appcypher/awesome-mcp-servers
io.github.kenjihikmatullah/productboard-mcp
io.github.kyrietangsheng/mcp-server-nationalparks
io.github.gongrzhe/redis-mcp-server
io.github.zubeidhendricks/youtube-mcp-server
io.github.zzaebok/mcp-wikidata
io.github.ihor-sokoliuk/mcp-searxng
io.github.sv/mcp-paradex-py
io.github.felores/airtable-mcp
io.github.eqtylab/mcp-guardian
io.github.co-browser/attestable-mcp-server
io.github.ubie-oss/mcp-vertexai-search
io.github.kukapay/crypto-indicators-mcp
io.github.pinecone-io/assistant-mcp
io.github.metricool/mcp-metricool
io.github.r-huijts/strava-mcp
io.github.googleapis/genai-toolbox
io.github.wilsonchenghy/shadertoy-mcp
io.github.klavis-ai/klavis
io.github.fireproof-storage/mcp-database-server
io.github.xxxbrian/mcp-rquest
io.github.geropl/linear-mcp-go
io.github.amornpan/py-mcp-mssql
io.github.chaindead/telegram-mcp
io.github.bazinga012/mcp_code_executor
io.github.lharries/whatsapp-mcp
io.github.mektigboy/server-hyperliquid
io.github.omar-v2/mcp-ical
io.github.open-strategy-partners/osp_marketing_tools
io.github.smn2gnt/mcp-salesforce

Pagination Metadata:
{
  "next_cursor": "0e45cb5a-5b45-47f3-8b5e-12bdf88d176a",
  "count": 30
}

servers Details:
{
  "servers": [
    {
      "id": "0007544a-3948-4934-866b-b4a96fe53b55",
      "name": "io.github.appcypher/awesome-mcp-servers",
      "description": "Awesome MCP Servers - A curated list of Model Context Protocol servers",
      "repository": {
        "url": "https://github.com/appcypher/awesome-mcp-servers",
        "source": "github",
        "id": "895801050"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:16:40Z",
        "is_latest": true
      }
    },
    {
      "id": "00613acb-73e2-4f93-8b96-296df17316c8",
      "name": "io.github.kenjihikmatullah/productboard-mcp",
      "description": "Integrate the Productboard API into agentic workflows via MCP",
      "repository": {
        "url": "https://github.com/kenjihikmatullah/productboard-mcp",
        "source": "github",
        "id": "939104710"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:12:44Z",
        "is_latest": true
      }
    },
    {
      "id": "010904ec-6e39-4bdc-878a-75a6e79d0500",
      "name": "io.github.kyrietangsheng/mcp-server-nationalparks",
      "description": "",
      "repository": {
        "url": "https://github.com/KyrieTangSheng/mcp-server-nationalparks",
        "source": "github",
        "id": "951713109"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:11:05Z",
        "is_latest": true
      }
    },
    {
      "id": "01129bff-3d65-4e3d-8e82-6f2f269f818c",
      "name": "io.github.gongrzhe/redis-mcp-server",
      "description": "A Redis MCP server (pushed to https://github.com/modelcontextprotocol/servers/tree/main/src/redis) implementation for interacting with Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.",
      "repository": {
        "url": "https://github.com/GongRzhe/REDIS-MCP-Server",
        "source": "github",
        "id": "907849235"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:13:21Z",
        "is_latest": true
      }
    },
    {
      "id": "0278fd92-a009-4a47-a6df-5f77db37e6ab",
      "name": "io.github.zubeidhendricks/youtube-mcp-server",
      "description": "MCP Server for YouTube API, enabling video management, Shorts creation, and advanced analytics",
      "repository": {
        "url": "https://github.com/ZubeidHendricks/youtube-mcp-server",
        "source": "github",
        "id": "909607678"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:16:14Z",
        "is_latest": true
      }
    },
    {
      "id": "02b79b89-cce8-4401-aa1f-255b01587266",
      "name": "io.github.zzaebok/mcp-wikidata",
      "description": "A server implementation for Wikidata API using the Model Context Protocol (MCP).",
      "repository": {
        "url": "https://github.com/zzaebok/mcp-wikidata",
        "source": "github",
        "id": "959274715"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:15:49Z",
        "is_latest": true
      }
    },
    {
      "id": "02cdb980-1dcd-4345-a8d1-d3f3f522d04b",
      "name": "io.github.ihor-sokoliuk/mcp-searxng",
      "description": "MCP Server for SearXNG",
      "repository": {
        "url": "https://github.com/ihor-sokoliuk/mcp-searxng",
        "source": "github",
        "id": "907172461"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:13:48Z",
        "is_latest": true
      }
    },
    {
      "id": "038a3024-c319-4a07-bd7f-9cf699cfebf1",
      "name": "io.github.sv/mcp-paradex-py",
      "description": "Connect AI agents to the Paradex trading platform. Retrieve market data, manage accounts, and execute trades seamlessly. Enhance your trading experience with automated tools and real-time insights.",
      "repository": {
        "url": "https://github.com/sv/mcp-paradex-py",
        "source": "github",
        "id": "944258239"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:12:24Z",
        "is_latest": true
      }
    },
    {
      "id": "04216a87-0760-4f25-b809-42ffbfbb8962",
      "name": "io.github.felores/airtable-mcp",
      "description": "Search, create and update Airtable bases, tables, fields, and records using Claude Desktop and MCP (Model Context Protocol) clients",
      "repository": {
        "url": "https://github.com/felores/airtable-mcp",
        "source": "github",
        "id": "904238387"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:02:48Z",
        "is_latest": true
      }
    },
    {
      "id": "04b4489b-db48-4aaa-98f6-036bcf5fd483",
      "name": "io.github.eqtylab/mcp-guardian",
      "description": "Manage / Proxy / Secure your MCP Servers",
      "repository": {
        "url": "https://github.com/eqtylab/mcp-guardian",
        "source": "github",
        "id": "926222936"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:16:58Z",
        "is_latest": true
      }
    },
    {
      "id": "05ca6ccc-d6e1-47ab-ab8d-25949db9ada7",
      "name": "io.github.co-browser/attestable-mcp-server",
      "description": "Verify that any MCP server is running the intended and untampered code via hardware attestation.",
      "repository": {
        "url": "https://github.com/co-browser/attestable-mcp-server",
        "source": "github",
        "id": "955641588"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:03:19Z",
        "is_latest": true
      }
    },
    {
      "id": "07ccf835-680a-42b4-bf0b-db28367519ee",
      "name": "io.github.ubie-oss/mcp-vertexai-search",
      "description": "A MCP server for Vertex AI Search",
      "repository": {
        "url": "https://github.com/ubie-oss/mcp-vertexai-search",
        "source": "github",
        "id": "934580342"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:07:44Z",
        "is_latest": true
      }
    },
    {
      "id": "0852caec-a861-4f9c-9e94-a7c8b67a1641",
      "name": "io.github.kukapay/crypto-indicators-mcp",
      "description": "An MCP server providing a range of cryptocurrency technical analysis indicators and strategies.",
      "repository": {
        "url": "https://github.com/kukapay/crypto-indicators-mcp",
        "source": "github",
        "id": "953321792"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:05:01Z",
        "is_latest": true
      }
    },
    {
      "id": "08668c6a-c2f6-47b0-a4e0-75a8ee9bcf10",
      "name": "io.github.pinecone-io/assistant-mcp",
      "description": "Pinecone Assistant MCP server",
      "repository": {
        "url": "https://github.com/pinecone-io/assistant-mcp",
        "source": "github",
        "id": "940446625"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:01:06Z",
        "is_latest": true
      }
    },
    {
      "id": "091ef217-8e6d-4e06-8cb9-bc5ffe5467b1",
      "name": "io.github.metricool/mcp-metricool",
      "description": "This is a Multi-Agent Collaboration Protocol (MCP) server for interacting with the Metricool API. It allows AI agents to access and analyze social media metrics and campaign data from your Metricool account.",
      "repository": {
        "url": "https://github.com/metricool/mcp-metricool",
        "source": "github",
        "id": "967888435"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:10:11Z",
        "is_latest": true
      }
    },
    {
      "id": "09a2ecf8-1774-490e-8542-2b25a6445a58",
      "name": "io.github.r-huijts/strava-mcp",
      "description": "A Model Context Protocol (MCP) server that connects to Strava API, providing tools to access Strava data through LLMs",
      "repository": {
        "url": "https://github.com/r-huijts/strava-mcp",
        "source": "github",
        "id": "961429605"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:14:17Z",
        "is_latest": true
      }
    },
    {
      "id": "09f19715-3a0c-4900-932b-1ff0035aff11",
      "name": "io.github.googleapis/genai-toolbox",
      "description": "MCP Toolbox for Databases is an open source MCP server for databases.",
      "repository": {
        "url": "https://github.com/googleapis/genai-toolbox",
        "source": "github",
        "id": "812044182"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:00:18Z",
        "is_latest": true
      }
    },
    {
      "id": "0b245c5f-ba2b-4e8d-b9db-26681b0fa2e3",
      "name": "io.github.wilsonchenghy/shadertoy-mcp",
      "description": "",
      "repository": {
        "url": "https://github.com/wilsonchenghy/ShaderToy-MCP",
        "source": "github",
        "id": "958998300"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:14:23Z",
        "is_latest": true
      }
    },
    {
      "id": "0bc33e11-876e-4b0f-9c72-75c126d89978",
      "name": "io.github.klavis-ai/klavis",
      "description": "Klavis AI (YC X25):  Open Source MCP integration for AI applications",
      "repository": {
        "url": "https://github.com/Klavis-AI/klavis",
        "source": "github",
        "id": "965974441"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T18:59:59Z",
        "is_latest": true
      }
    },
    {
      "id": "0bee6074-d16a-4482-a315-5b8f0f1abcf1",
      "name": "io.github.fireproof-storage/mcp-database-server",
      "description": "Store and load JSON documents from LLM tool use",
      "repository": {
        "url": "https://github.com/fireproof-storage/mcp-database-server",
        "source": "github",
        "id": "904432283"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T18:58:57Z",
        "is_latest": true
      }
    },
    {
      "id": "0c43f128-7589-4ce6-9382-5399ba24bebd",
      "name": "io.github.xxxbrian/mcp-rquest",
      "description": "A MCP server providing realistic browser-like HTTP request capabilities with accurate TLS/JA3/JA4 fingerprints for bypassing anti-bot measures. It also supports converting PDF and HTML documents to Markdown for easier processing by LLMs.",
      "repository": {
        "url": "https://github.com/xxxbrian/mcp-rquest",
        "source": "github",
        "id": "950863558"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:13:30Z",
        "is_latest": true
      }
    },
    {
      "id": "0c8e4aae-53ed-4acf-87d9-19d44ac4afd1",
      "name": "io.github.geropl/linear-mcp-go",
      "description": "linear MCP server based on mcp-go",
      "repository": {
        "url": "https://github.com/geropl/linear-mcp-go",
        "source": "github",
        "id": "940084523"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:09:19Z",
        "is_latest": true
      }
    },
    {
      "id": "0c9a70a7-7523-42b7-a951-b4c4b8077710",
      "name": "io.github.amornpan/py-mcp-mssql",
      "description": "py-mcp-mssql",
      "repository": {
        "url": "https://github.com/amornpan/py-mcp-mssql",
        "source": "github",
        "id": "922607489"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:10:17Z",
        "is_latest": true
      }
    },
    {
      "id": "0cd13ce0-2f67-414a-afb1-4e11dd3e4cba",
      "name": "io.github.chaindead/telegram-mcp",
      "description": "Telegram MCP for managing dialogs, messages, drafts, read statuses, and more.",
      "repository": {
        "url": "https://github.com/chaindead/telegram-mcp",
        "source": "github",
        "id": "958652024"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:14:34Z",
        "is_latest": true
      }
    },
    {
      "id": "0cdfed38-6495-42a3-a837-3788f35aadd3",
      "name": "io.github.bazinga012/mcp_code_executor",
      "description": "The MCP Code Executor is an MCP server that allows LLMs to execute Python code within a specified Conda environment.",
      "repository": {
        "url": "https://github.com/bazinga012/mcp_code_executor",
        "source": "github",
        "id": "928420039"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:04:37Z",
        "is_latest": true
      }
    },
    {
      "id": "0d2cbcc1-4b34-4b2b-af66-595d8fb5e78a",
      "name": "io.github.lharries/whatsapp-mcp",
      "description": "WhatsApp MCP server",
      "repository": {
        "url": "https://github.com/lharries/whatsapp-mcp",
        "source": "github",
        "id": "957053334"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:15:45Z",
        "is_latest": true
      }
    },
    {
      "id": "0d57edf7-3fbb-42b4-aa9e-b255e7d6f8fa",
      "name": "io.github.mektigboy/server-hyperliquid",
      "description": "MCP Hyperliquid (https://app.hyperliquid.xyz) server",
      "repository": {
        "url": "https://github.com/mektigboy/server-hyperliquid",
        "source": "github",
        "id": "943734921"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:08:12Z",
        "is_latest": true
      }
    },
    {
      "id": "0d7bc864-fdf3-4afd-8b44-48468b12d550",
      "name": "io.github.omar-v2/mcp-ical",
      "description": "A Model Context Protocol Server that allows you to interact with your MacOS Calendar through natural language.",
      "repository": {
        "url": "https://github.com/Omar-V2/mcp-ical",
        "source": "github",
        "id": "930007673"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:03:05Z",
        "is_latest": true
      }
    },
    {
      "id": "0d8b287c-6023-4809-a5ba-963c5612efa2",
      "name": "io.github.open-strategy-partners/osp_marketing_tools",
      "description": "A Model Context Protocol (MCP) server that empowers LLMs to use some of Open Srategy Partners' core writing and product marketing techniques.",
      "repository": {
        "url": "https://github.com/open-strategy-partners/osp_marketing_tools",
        "source": "github",
        "id": "917730483"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:12:14Z",
        "is_latest": true
      }
    },
    {
      "id": "0e45cb5a-5b45-47f3-8b5e-12bdf88d176a",
      "name": "io.github.smn2gnt/mcp-salesforce",
      "description": "MCP Salesforce connector",
      "repository": {
        "url": "https://github.com/smn2gnt/MCP-Salesforce",
        "source": "github",
        "id": "904538810"
      },
      "version_detail": {
        "version": "0.0.1-seed",
        "release_date": "2025-05-16T19:13:41Z",
        "is_latest": true
      }
    }
  ],
  "metadata": {
    "next_cursor": "0e45cb5a-5b45-47f3-8b5e-12bdf88d176a",
    "count": 30
  }
}
servers request successful
-------------------------------------
Testing ping endpoint: http://localhost:8080/v0/ping
Status Code: 200
Response:
{
  "status": "ok",
  "version": "dev"
}
Ping successful
-------------------------------------
All tests passed successfully!
```

## Breaking Changes
<!-- Will users need to update their code or configurations? -->
No

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [ ] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
Close #127
2025-06-06 18:19:28 -04:00
Yusheng Guo
6b22cf09b3
feat(config): specify to use in-memory database (#74)
<!-- Provide a brief summary of your changes -->
Add support for specifying database type (MongoDB or in-memory
database).

## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
The README states that MCP Registry supports both MongoDB and in-memory
databases, but does not provide the capability to specify which database
type to use.


5d9171bdcc/README.md (L19)

This PR addresses this limitation by adding explicit database type
configuration through the `DATABASE_TYPE` environment variable, allowing
users to choose between `mongodb` and `memory` database types in a
standardized way.

## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->
Yes

```console
$ export MCP_REGISTRY_DATABASE_TYPE="memory"
$ ./scripts/test_endpoints.sh
Testing health endpoint: http://localhost:8080/v0/health
Status Code: 200
Response:
{
  "status": "ok",
  "github_client_id": ""
}
Health check successful
-------------------------------------
Testing servers endpoint: http://localhost:8080/v0/servers
Status Code: 200
Response Summary:
Total registries: 0
servers Names:

Pagination Metadata:
{}

servers Details:
{
  "servers": [],
  "metadata": {}
}
servers request successful
-------------------------------------
Testing ping endpoint: http://localhost:8080/v0/ping
Status Code: 200
Response:
{
  "status": "ok",
  "version": "dev"
}
Ping successful
-------------------------------------
All tests passed successfully!
```

## Breaking Changes
<!-- Will users need to update their code or configurations? -->
No

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
Close #63

---------

Co-authored-by: Avinash Sridhar <sridharavinash@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-04 07:26:48 -06:00
Mingyong Chen
d16328e8c1
Rename mcp.json to server.json (#106)
<!-- Provide a brief summary of your changes -->
Rename mcp.json to server.json
## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->

## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->

## Breaking Changes
<!-- Will users need to update their code or configurations? -->

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->
Related to #86

Co-authored-by: Avinash Sridhar <sridharavinash@users.noreply.github.com>
2025-06-03 18:52:46 +00:00
Toby Padilla
3df06d38d9 fix: make repository optional in openapi spec 2025-06-02 18:16:17 -06:00
yshngg
96c3912ed1 chore(docker-compose): enhance environment variable configuration using interpolation 2025-06-02 11:33:09 -06:00
Avinash Sridhar
a4cefcf05f
Publish Auth Interface (#112)
This pull request introduces significant updates to the authentication
system for the MCP Registry Publisher Tool. The changes focus on
transitioning to an interface-based authentication system, implementing
GitHub OAuth device flow as the default authentication method, and
restructuring the codebase for better modularity and extensibility.

Adding an interface to the publishing CLI, so that it'll be easier to
add more auth methods as they become available.
2025-05-30 15:05:15 -04:00
Avinash Sridhar
2f266c7a69 go mod tidy 2025-05-27 19:13:51 -06:00
Avinash Sridhar
820e0ab8b9 feat(publish): escape server name to prevent HTML injection attacks 2025-05-27 19:13:51 -06:00
Avinash Sridhar
022dbab85d feat(script): update publish test script 2025-05-27 19:13:51 -06:00
Avinash Sridhar
7edc35812f feat(script): add usage instructions and server startup methods to test script 2025-05-27 19:13:51 -06:00
Avinash Sridhar
b6c141a721 Fixed linter errors and fixed tests
- Added error handling for JSON encoding in ServersHandler and ServersDetailHandler.
- Updated test cases to reflect changes in handler functions and improved mock expectations.
- Refactored server initialization to include ReadHeaderTimeout for better request handling.
- Modified GitHubDeviceAuth to accept context in ValidateToken and checkOrgMembership methods.
- Improved error messages in database import functions for better debugging.
- Updated memory and mongo database list functions to accept context and improved filtering logic.
- Enhanced logging in publisher tool for better visibility during execution.
- Cleaned up code formatting and comments for better readability and maintainability.
2025-05-27 19:13:51 -06:00
Avinash Sridhar
c74a7af000 fix(tests): update server IDs to use real-ish uuids 2025-05-27 19:13:51 -06:00
Avinash Sridhar
9d0565de62 feat(ci): add CI pipeline with linting, building, and testing jobs 2025-05-27 19:13:51 -06:00
Avinash Sridhar
5736edd07a refactor(tests): remove redundant TestServersDetailHandler integration tests 2025-05-27 19:13:51 -06:00
Avinash Sridhar
a5abab50c4 feat(tests): add unit tests for servers and servers detail handlers 2025-05-27 19:13:51 -06:00
Avinash Sridhar
dd57b82859 feat(publish): set version as latest and add release date on publish 2025-05-27 19:13:51 -06:00
Avinash Sridhar
f9ab0bc49b update tests and memory implementation to follow real DB implementations as much as possible. Fix the tests to let the DB generate the server uuids rather than setting them up in the test. 2025-05-27 19:13:51 -06:00
Avinash Sridhar
d0a0adf620 feat(tests): add integration tests for publish functionality and enhance error handling 2025-05-27 19:13:51 -06:00
Avinash Sridhar
d266dd4eb0 feat(tests): add comprehensive tests for health and publish handlers 2025-05-27 19:13:51 -06:00
Tadas Antanavicius
4f89a896ec Add 2025-05-26 15:42:55 -07:00
Mr.Ge
bd9809fb6a
docs: update readme and mcp.json with repository url (#76)
- Give the correct URL address in the mcp.json and the main README

## Motivation and Context
Improve documentation

## How Has This Been Tested?
No Testing.

## Breaking Changes
N/A

## Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
2025-05-26 08:35:21 -07:00