| Filename | Latest commit message | Latest commit date |
|---|---|---|
## Summary This PR implements the flattened `_meta` format for server extensions as discussed in #284, replacing the confusing wrapper format with a clean single-file approach. **Before (wrapper format):** ```json { "server": { "name": "my-server", "description": "..." }, "x-publisher": { "build_info": "..." }, "x-io.modelcontextprotocol.registry": { "id": "...", "published_at": "..." } } ``` **After (flattened format):** ```json { "name": "my-server", "description": "...", "_meta": { "publisher": { "build_info": "..." }, "io.modelcontextprotocol.registry": { "id": "...", "published_at": "..." } } } ``` ## Key Changes - **Flattened Format**: Single `ServerJSON` file with structured `_meta` field - **Better DX**: Publishers maintain one file instead of separate server.json + extensions.json - **MCP Compliance**: Uses standard `_meta` mechanism instead of `x-*` prefixes - **Simplified Database**: PostgreSQL now uses simple `id, value` table structure - **Type Safety**: Structured `ServerMeta` with known extension fields ## Database Migration Added migration `003_simplify_to_key_value.sql` that drops the complex relational structure and creates a simple key-value table. This significantly simplifies database management. ## Testing - All core tests passing (validators, service layer) - Schema validation working for all 10 examples - Seed data successfully migrated (396 entries) - Publishing functionality verified Fixes #284 |
||
| .. | ||
| docker-compose.integration-test.yml | ||
| main.go | ||
| README.md | ||
| run.sh | ||
Integration Test
This directory contains an end-to-end test for publishing to the registry.
What the Test Covers
- Publisher Tool: Tests the
publisherCLI that publishes metadata to the registry - Registry API: Validates the
/v0/publishand/v0/servers/{id}endpoints work correctly - Example Validation: Ensures all example JSON in
docs/server-json/examples.mdis valid and can be published - Data Consistency: Verifies published data matches what's retrieved from the registry
Test Flow
- Build: Build
publisherandregistry - Start Services: Launch registry and MongoDB using Docker Compose with test configuration
- Publish Examples: Extract JSON examples from documentation and run
publisherto publish each one - Validate Responses: GET each published server from the registry and compare it to the example JSON
- Cleanup: Stop Docker containers and remove temporary files
How to Run
Prerequisites
- Docker and Docker Compose
- Go 1.24
- Make sure you're in the repository root directory
Run the Tests
./tests/integration/run.sh