aegis-mcp-server 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Cleburn
3
+ Copyright (c) 2025 MCP Contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,95 +1,141 @@
1
- # aegis-mcp-server
1
+ # MCP Registry
2
2
 
3
- **MCP enforcement layer for the [Aegis](https://github.com/cleburn/aegis-spec) agent governance specification.**
3
+ The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
4
4
 
5
- The spec writes the law. The CLI generates the law. This enforces the law.
5
+ [**📤 Publish my MCP server**](docs/guides/publishing/publish-server.md) | [**⚡️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**👀 Ecosystem vision**](docs/explanations/ecosystem-vision.md) | 📖 **[Full documentation](./docs)**
6
6
 
7
- ## What It Does
7
+ ## Development Status
8
8
 
9
- `aegis-mcp-server` is an MCP server that validates every agent action against your `.agentpolicy/` files **before** it happens. Path permissions, content scanning, role boundaries, quality gates all enforced at runtime with zero token overhead to the agent.
9
+ **2025-09-08 update**: The registry has launched in preview 🎉 ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
10
10
 
11
- The agent never loads your governance files. The MCP server reads them into its own process memory and validates silently. The agent calls governed tools (`aegis_write_file`, `aegis_read_file`, etc.) and gets back either a success or a blocked response with the specific reason.
11
+ Current key maintainers:
12
+ - **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
13
+ - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
14
+ - **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
12
15
 
13
- ## Quick Start
16
+ ## Contributing
14
17
 
15
- ```bash
16
- npm install -g aegis-mcp-server
18
+ We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
17
19
 
18
- # Or use npx
19
- npx aegis-mcp-server --project . --role default
20
- ```
20
+ Often (but not always) ideas flow through this pipeline:
21
+
22
+ - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
23
+ - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
24
+ - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
25
+ - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
26
+
27
+ ### Quick start:
28
+
29
+ #### Pre-requisites
30
+
31
+ - **Docker**
32
+ - **Go 1.24.x**
33
+ - **golangci-lint v2.4.0**
34
+
35
+ #### Running the server
21
36
 
22
- ### Claude Code Configuration
23
-
24
- ```json
25
- {
26
- "mcpServers": {
27
- "aegis": {
28
- "command": "npx",
29
- "args": ["aegis-mcp-server", "--project", ".", "--role", "default"]
30
- }
31
- }
32
- }
37
+ ```bash
38
+ # Start full development environment
39
+ make dev-compose
33
40
  ```
34
41
 
35
- For role-specific enforcement:
36
-
37
- ```json
38
- {
39
- "mcpServers": {
40
- "aegis": {
41
- "command": "npx",
42
- "args": ["aegis-mcp-server", "--project", ".", "--role", "backend"]
43
- }
44
- }
45
- }
42
+ This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL and seed data. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
43
+
44
+ The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
45
+
46
+ <details>
47
+ <summary>Alternative: Running a pre-built Docker image</summary>
48
+
49
+ Pre-built Docker images are automatically published to GitHub Container Registry:
50
+
51
+ ```bash
52
+ # Run latest stable release
53
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
54
+
55
+ # Run latest from main branch (continuous deployment)
56
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
57
+
58
+ # Run specific release version
59
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
60
+
61
+ # Run development build from main branch
62
+ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
46
63
  ```
47
64
 
48
- ## Tools
65
+ **Available tags:**
66
+ - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
67
+ - **Continuous**: `main` (latest main branch build)
68
+ - **Development**: `main-<date>-<sha>` (specific commit builds)
49
69
 
50
- | Tool | What it does | Token cost |
51
- |------|-------------|------------|
52
- | `aegis_check_permissions` | Pre-check if an operation is allowed | Tiny — just the verdict |
53
- | `aegis_write_file` | Write with path + content validation | Same as a normal write |
54
- | `aegis_read_file` | Read with path validation | Same as a normal read |
55
- | `aegis_delete_file` | Delete with path validation | Tiny — just the verdict |
56
- | `aegis_execute` | Execute a command in project root | Command output only |
57
- | `aegis_complete_task` | Run quality gates before marking done | Gate results only |
58
- | `aegis_policy_summary` | Minimal role + permissions summary | ~200 tokens |
70
+ </details>
59
71
 
60
- ## Zero Token Overhead
72
+ #### Publishing a server
61
73
 
62
- Traditional approach: load governance files into the agent's context window. Token cost scales with policy complexity.
74
+ To publish a server, we've built a simple CLI. You can use it with:
63
75
 
64
- Aegis MCP approach: the server loads policy into its own process memory. The agent calls tools and gets structured results. A project with 200 lines of governance has the same token cost as one with 20 lines. The complexity is absorbed by the server, not the agent.
76
+ ```bash
77
+ # Build the latest CLI
78
+ make publisher
65
79
 
66
- ## Enforcement
80
+ # Use it!
81
+ ./bin/mcp-publisher --help
82
+ ```
83
+
84
+ See [the publisher guide](./docs/guides/publishing/publish-server.md) for more details.
67
85
 
68
- - **Governance boundaries** — `writable`, `read_only`, `forbidden` path lists from governance.json
69
- - **Role scoping** — agents confined to their role's writable and readable paths
70
- - **Sensitive pattern detection** — content scanned against governance-defined patterns
71
- - **Cross-domain boundaries** imports validated against shared interface rules (when configured)
72
- - **Quality gate validation** — `pre_commit` flags mapped to `build_commands` and executed
73
- - **Override logging** — violations logged to append-only `overrides.jsonl`
74
- - **Immutable policies** — designated rules that cannot be overridden, even with human confirmation
86
+ #### Other commands
87
+
88
+ ```bash
89
+ # Run lint, unit tests and integration tests
90
+ make check
91
+ ```
92
+
93
+ There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
94
+
95
+ <!--
96
+ For Claude and other AI tools: Always prefer make targets over custom commands where possible.
97
+ -->
75
98
 
76
99
  ## Architecture
77
100
 
101
+ ### Project Structure
102
+
78
103
  ```
79
- Agent ──→ aegis-mcp-server ──→ File System
80
-
81
- ├── Loads .agentpolicy/ into process memory (once)
82
- ├── Watches for policy changes (auto-reload)
83
- ├── Validates every tool call against policy
84
- └── Returns success or blocked with reason
104
+ ├── cmd/ # Application entry points
105
+ └── publisher/ # Server publishing tool
106
+ ├── data/ # Seed data
107
+ ├── deploy/ # Deployment configuration (Pulumi)
108
+ ├── docs/ # Documentation
109
+ ├── internal/ # Private application code
110
+ │ ├── api/ # HTTP handlers and routing
111
+ │ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
112
+ │ ├── config/ # Configuration management
113
+ │ ├── database/ # Data persistence (PostgreSQL)
114
+ │ ├── service/ # Business logic
115
+ │ ├── telemetry/ # Metrics and monitoring
116
+ │ └── validators/ # Input validation
117
+ ├── pkg/ # Public packages
118
+ │ ├── api/ # API types and structures
119
+ │ │ └── v0/ # Version 0 API types
120
+ │ └── model/ # Data models for server.json
121
+ ├── scripts/ # Development and testing scripts
122
+ ├── tests/ # Integration tests
123
+ └── tools/ # CLI tools and utilities
124
+ └── validate-*.sh # Schema validation tools
85
125
  ```
86
126
 
87
- Three artifacts, one governance framework:
127
+ ### Authentication
128
+
129
+ Publishing supports multiple authentication methods:
130
+ - **GitHub OAuth** - For publishing by logging into GitHub
131
+ - **GitHub OIDC** - For publishing from GitHub Actions
132
+ - **DNS verification** - For proving ownership of a domain and its subdomains
133
+ - **HTTP verification** - For proving ownership of a domain
88
134
 
89
- - [**aegis-spec**](https://github.com/cleburn/aegis-spec) Writes the law
90
- - [**aegis-cli**](https://github.com/cleburn/aegis-cli) Generates the law
91
- - **aegis-mcp-server** Enforces the law
135
+ The registry validates namespace ownership when publishing. E.g. to publish...:
136
+ - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
137
+ - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
92
138
 
93
- ## License
139
+ ## More documentation
94
140
 
95
- MIT
141
+ See the [documentation](./docs) for more details if your question has not been answered here!
Binary file
Binary file
@@ -0,0 +1,54 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
2
+ <defs>
3
+ <linearGradient id="shieldGrad" x1="0%" y1="0%" x2="0%" y2="100%">
4
+ <stop offset="0%" stop-color="#79c0ff"/>
5
+ <stop offset="35%" stop-color="#58a6ff"/>
6
+ <stop offset="100%" stop-color="#1f6feb"/>
7
+ </linearGradient>
8
+ <clipPath id="roundedBg">
9
+ <rect width="512" height="512" rx="80"/>
10
+ </clipPath>
11
+ </defs>
12
+
13
+ <!-- Rounded rectangle background -->
14
+ <rect width="512" height="512" rx="80" fill="#0d1117"/>
15
+
16
+ <!-- Outer shield (blue filled) -->
17
+ <path d="
18
+ M 256 56
19
+ L 120 116
20
+ L 120 248
21
+ C 120 348 178 432 256 472
22
+ C 334 432 392 348 392 248
23
+ L 392 116
24
+ Z
25
+ " fill="url(#shieldGrad)"/>
26
+
27
+ <!-- Inner shield cutout (dark) -->
28
+ <path d="
29
+ M 256 96
30
+ L 152 142
31
+ L 152 248
32
+ C 152 332 200 404 256 438
33
+ C 312 404 360 332 360 248
34
+ L 360 142
35
+ Z
36
+ " fill="#0d1117" opacity="0.87"/>
37
+
38
+ <!-- Policy line 1 (top, faintest) -->
39
+ <line x1="196" y1="212" x2="316" y2="212"
40
+ stroke="#58a6ff" stroke-width="9" stroke-linecap="round" opacity="0.45"/>
41
+
42
+ <!-- Policy line 2 (middle) -->
43
+ <line x1="196" y1="252" x2="316" y2="252"
44
+ stroke="#58a6ff" stroke-width="9" stroke-linecap="round" opacity="0.7"/>
45
+
46
+ <!-- Policy line 3 (shorter, full) -->
47
+ <line x1="196" y1="292" x2="288" y2="292"
48
+ stroke="#58a6ff" stroke-width="9" stroke-linecap="round" opacity="1.0"/>
49
+
50
+ <!-- Checkmark -->
51
+ <polyline points="270,332 290,352 330,304"
52
+ fill="none" stroke="#58a6ff" stroke-width="10"
53
+ stroke-linecap="round" stroke-linejoin="round"/>
54
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aegis-mcp-server",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "MCP enforcement layer for the Aegis agent governance specification",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,5 +38,6 @@
38
38
  },
39
39
  "engines": {
40
40
  "node": ">=18.0.0"
41
- }
41
+ },
42
+ "mcpName": "io.github.cleburn/aegis-mcp"
42
43
  }
package/server.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json",
3
+ "name": "io.github.cleburn/aegis-mcp",
4
+ "description": "Runtime governance enforcement for AI agents. Zero token overhead.",
5
+ "repository": {
6
+ "url": "https://github.com/cleburn/aegis-mcp",
7
+ "source": "github"
8
+ },
9
+ "version": "0.1.11",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "registryBaseUrl": "https://registry.npmjs.org",
14
+ "identifier": "aegis-mcp-server",
15
+ "version": "0.1.11",
16
+ "transport": {
17
+ "type": "stdio"
18
+ }
19
+ }
20
+ ],
21
+ "icons": [
22
+ {
23
+ "src": "https://raw.githubusercontent.com/cleburn/aegis-mcp/main/assets/icon.png",
24
+ "type": "image/png",
25
+ "size": 128
26
+ }
27
+ ]
28
+ }