This project aims to track a decentralized reputation of Model Context Protocol (MCP) servers by leveraging the Authenticated Transfer Protocol (AT Protocol).
The project consists of three main components:
-
Client SDKs (
/clients
): Libraries for MCP server publishers to register their servers with ATProto- Python SDK for easy server registration and usage tracking
- TypeScript SDK (work in progress)
-
Registry UI/API (
/registry
): Web interface and API for discovering MCP servers- Browse registered servers and their publishers
- View server capabilities and reputation
- Real-time updates via ATProto firehose
-
Firehose Consumer (
/_extra/docket_firehose
): Service for tracking server registrations- Listens to ATProto firehose for MCP server records
- Saves records for processing and analysis
- Background worker ready for future reputation processing
This project uses bun
for front-end development.
-
Navigate to the
registry
directory:cd registry
-
Install dependencies:
bun install
-
Run in development mode (requires ATProto credentials):
HANDLE=your.handle PASSWORD=your-password bun dev
Access at:
- Web UI: http://localhost:3000
- API: http://localhost:3000/api/servers
Use uv
for the Python toolchain:
-
Navigate to the client directory:
cd clients/python
-
Install dependencies:
uv sync
-
Register a server:
uv run mcproto example_server.py:mcp
The firehose consumer tracks MCP server registrations across the ATProto network:
-
Navigate to the firehose directory:
cd _extra/docket_firehose
-
Run with Docker Compose:
docker compose up --build
This starts:
- A firehose listener that saves MCP server records
- A Redis streams worker service ready for future record processing via
docket
- MCP server publishers register using
app.mcp.server
records - Records are cryptographically signed by publisher DIDs
- The firehose consumer tracks all registrations in real-time
- Future: Reputation tracking via ATProto's labeling system
- Publishers register servers using client SDKs
- Records are stored on publisher's Personal Data Server (PDS)
- Firehose consumer captures and saves registration events
- Registry UI displays servers with real-time updates
- Future: Background processing for reputation analysis
This action registers your Model Context Protocol (MCP) server with the decentralized registry.
name: Register MCP Server
on:
push:
branches: [main]
paths:
- '**.py' # or your specific MCP server path
jobs:
register:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: zzstoatzz/register-mcp@v1
with:
server_path: 'path/to/servers' # or directory containing servers
bsky_handle: <YOUR_BLUESKY_HANDLE>
bsky_password: ${{ secrets.BSKY_PASSWORD }}
-
server_path
: Path to your MCP server file or directory containing MCP servers- Required: true
- Default: '.'
-
bsky_handle
: Your Bluesky handle- Required: true
- Set this as a GitHub secret
-
bsky_password
: Your Bluesky password- Required: true
- Set this as a GitHub secret
If you have multiple MCP servers in a directory:
- uses: zzstoatzz/register-mcp@v1
with:
server_path: './servers' # directory containing .py files with MCP servers
bsky_handle: ${{ secrets.BSKY_HANDLE }}
bsky_password: ${{ secrets.BSKY_PASSWORD }}