adam jones
218b0b422d
Implement flattened _meta format for server extensions (#331)
## 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
|
2025-09-01 19:27:23 +01:00 |