@kryptosai/mcp-observatory 0.26.1 → 0.27.0
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/COMMERCIAL.md +7 -8
- package/PRIVACY.md +5 -5
- package/README.md +37 -23
- package/TERMS.md +1 -1
- package/dist/src/checks/schema-quality.js +1 -0
- package/dist/src/checks/schema-quality.js.map +1 -1
- package/dist/src/commands/helpers.d.ts +3 -1
- package/dist/src/commands/helpers.js +2 -2
- package/dist/src/commands/helpers.js.map +1 -1
- package/dist/src/commands/init-ci.d.ts +2 -0
- package/dist/src/commands/init-ci.js +50 -9
- package/dist/src/commands/init-ci.js.map +1 -1
- package/dist/src/commands/legacy.js +18 -2
- package/dist/src/commands/legacy.js.map +1 -1
- package/dist/src/commands/scan.js +30 -9
- package/dist/src/commands/scan.js.map +1 -1
- package/dist/src/commands/setup-ci-conversion.d.ts +25 -0
- package/dist/src/commands/setup-ci-conversion.js +119 -0
- package/dist/src/commands/setup-ci-conversion.js.map +1 -0
- package/dist/src/commands/test.js +50 -3
- package/dist/src/commands/test.js.map +1 -1
- package/dist/src/findings.d.ts +20 -0
- package/dist/src/findings.js +232 -0
- package/dist/src/findings.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/reporters/sarif.d.ts +4 -1
- package/dist/src/reporters/sarif.js +58 -37
- package/dist/src/reporters/sarif.js.map +1 -1
- package/dist/src/storage.d.ts +1 -0
- package/dist/src/storage.js +25 -0
- package/dist/src/storage.js.map +1 -1
- package/dist/src/telemetry.d.ts +3 -0
- package/dist/src/telemetry.js.map +1 -1
- package/docs/agent-runtime-quickstart.md +98 -0
- package/docs/code-scanning-launch-outreach.md +55 -0
- package/docs/feishu-lark-mcp.md +3 -3
- package/docs/github-code-scanning-for-mcp.md +94 -0
- package/docs/metrics-dashboard.md +2 -2
- package/docs/openclaw-agent-template/SOUL.md +156 -0
- package/docs/proof.md +2 -2
- package/docs/target-contribution-guide.md +139 -0
- package/docs/target-registry.md +116 -0
- package/package.json +33 -8
- package/docs/certification-campaign-template.md +0 -181
- package/docs/certification-distribution.md +0 -145
- package/docs/certification-pr-campaign.md +0 -68
- package/docs/clone-to-ci-campaign.md +0 -62
- package/docs/directory-listing-copy.md +0 -85
- package/docs/distribution-launch.md +0 -76
- package/docs/ecosystem-distribution-kit.md +0 -79
- package/docs/enterprise-outreach-playbook.md +0 -83
- package/docs/paid-pilot-offer.md +0 -74
- package/docs/project-case-study.md +0 -140
- package/docs/public-post-drafts.md +0 -98
- package/docs/publish-readiness.md +0 -79
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Code Scanning Launch Outreach
|
|
2
|
+
|
|
3
|
+
Use this when following up with maintainers or posting publicly about the SARIF release.
|
|
4
|
+
|
|
5
|
+
## Public Post
|
|
6
|
+
|
|
7
|
+
MCP servers are becoming production dependencies for AI agents. They should show up in the same security review surfaces as the rest of the software supply chain.
|
|
8
|
+
|
|
9
|
+
MCP Observatory now turns MCP server checks into GitHub Code Scanning findings.
|
|
10
|
+
|
|
11
|
+
One command:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @kryptosai/mcp-observatory test npx -y my-mcp-server --sarif mcp-observatory.sarif
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
CI setup:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y my-mcp-server" --sarif
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
It normalizes compatibility, startup, schema-quality, and security evidence into SARIF so maintainers can review MCP risk in GitHub's Security tab.
|
|
24
|
+
|
|
25
|
+
No hosted account required. SARIF upload is opt-in.
|
|
26
|
+
|
|
27
|
+
## Maintainer Follow-Up
|
|
28
|
+
|
|
29
|
+
~~~md
|
|
30
|
+
Quick follow-up: MCP Observatory now supports GitHub Code Scanning friendly SARIF for MCP compatibility, schema-quality, startup, and security findings.
|
|
31
|
+
|
|
32
|
+
If you want this as a security-native advisory check, the generated workflow is:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y <server-package>" --sarif
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
It stays opt-in because it requests `security-events: write`; the default CI setup remains read-only.
|
|
39
|
+
~~~
|
|
40
|
+
|
|
41
|
+
## Warm Bot/Runtime Follow-Up
|
|
42
|
+
|
|
43
|
+
~~~md
|
|
44
|
+
For agent runtimes, the useful path is a safe preflight target plus SARIF evidence:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx @kryptosai/mcp-observatory test npx -y <mcp-server> --sarif mcp-observatory.sarif
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
That lets a bot/runtime review MCP tool risk as structured findings instead of terminal-only output.
|
|
51
|
+
~~~
|
|
52
|
+
|
|
53
|
+
## Directory Submission Copy
|
|
54
|
+
|
|
55
|
+
MCP Observatory is a GitHub-native CI and security gate for MCP servers before agents depend on them. It emits SARIF and can upload MCP compatibility, startup, schema-quality, and security findings to GitHub Code Scanning.
|
package/docs/feishu-lark-mcp.md
CHANGED
|
@@ -42,10 +42,10 @@ jobs:
|
|
|
42
42
|
runs-on: ubuntu-latest
|
|
43
43
|
env:
|
|
44
44
|
MCP_OBSERVATORY_ORG: your-company.com
|
|
45
|
-
MCP_OBSERVATORY_CONTACT:
|
|
45
|
+
MCP_OBSERVATORY_CONTACT: your-team-contact
|
|
46
46
|
steps:
|
|
47
47
|
- uses: actions/checkout@v4
|
|
48
|
-
- uses: KryptosAI/mcp-observatory/action@
|
|
48
|
+
- uses: KryptosAI/mcp-observatory/action@v0.26.1
|
|
49
49
|
with:
|
|
50
50
|
target: feishu-target.json
|
|
51
51
|
security: true
|
|
@@ -62,4 +62,4 @@ npx @kryptosai/mcp-observatory enterprise-report \
|
|
|
62
62
|
|
|
63
63
|
Production teams can use the report for MCP owner reviews, private-repo CI history, security review, and certification conversations.
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
Open a pilot request from the GitHub issue chooser for production Feishu/Lark MCP usage, hosted reporting, private deployment, or fleet visibility.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# GitHub Code Scanning For MCP Servers
|
|
2
|
+
|
|
3
|
+
MCP servers are becoming agent dependencies. If a server exposes unsafe tool schemas, drifts unexpectedly, or stops starting in CI, security and platform teams need that evidence in the same place they review application risk.
|
|
4
|
+
|
|
5
|
+
MCP Observatory can now turn MCP compatibility, schema quality, security, and diagnostic evidence into SARIF findings that GitHub Code Scanning can display on pull requests and in the repository Security tab.
|
|
6
|
+
|
|
7
|
+
## One Command
|
|
8
|
+
|
|
9
|
+
Generate SARIF locally:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx @kryptosai/mcp-observatory test npx -y my-mcp-server --sarif mcp-observatory.sarif
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Generate a GitHub Action that uploads findings:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y my-mcp-server" --sarif
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The generated workflow includes the permission GitHub requires for Code Scanning upload:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
security-events: write
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## What Becomes A Finding
|
|
30
|
+
|
|
31
|
+
Observatory normalizes existing check evidence into GitHub-native findings:
|
|
32
|
+
|
|
33
|
+
- MCP security findings
|
|
34
|
+
- schema-quality issues
|
|
35
|
+
- failed compatibility checks
|
|
36
|
+
- legacy diagnostic artifacts
|
|
37
|
+
- fatal startup and runtime errors
|
|
38
|
+
|
|
39
|
+
Each finding includes a stable ID, severity, category, check ID, target subject, recommendation, control tags, and SARIF rule metadata.
|
|
40
|
+
|
|
41
|
+
## Why This Matters
|
|
42
|
+
|
|
43
|
+
Security teams already review SARIF and Code Scanning alerts. MCP servers should show up in that same review surface instead of living only in terminal output.
|
|
44
|
+
|
|
45
|
+
Use this when you want:
|
|
46
|
+
|
|
47
|
+
- MCP compatibility evidence on every pull request
|
|
48
|
+
- security review signals without a hosted account
|
|
49
|
+
- an audit trail for agent tool dependencies
|
|
50
|
+
- a low-friction release gate for public MCP servers
|
|
51
|
+
- a bridge from OSS checks to production MCP governance
|
|
52
|
+
|
|
53
|
+
## Conservative By Default
|
|
54
|
+
|
|
55
|
+
SARIF upload is opt-in. Standard `setup-ci` remains read-only and does not request `security-events: write` unless `--sarif` is passed.
|
|
56
|
+
|
|
57
|
+
For local checks, `--sarif <file>` writes the report and preserves normal terminal output and exit behavior.
|
|
58
|
+
|
|
59
|
+
## Example CI Step
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
name: MCP Observatory
|
|
63
|
+
|
|
64
|
+
on:
|
|
65
|
+
pull_request:
|
|
66
|
+
push:
|
|
67
|
+
branches: [main]
|
|
68
|
+
|
|
69
|
+
permissions:
|
|
70
|
+
contents: read
|
|
71
|
+
security-events: write
|
|
72
|
+
|
|
73
|
+
jobs:
|
|
74
|
+
mcp-observatory:
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
steps:
|
|
77
|
+
- uses: actions/checkout@v6
|
|
78
|
+
- uses: KryptosAI/mcp-observatory/action@v0.26.1
|
|
79
|
+
with:
|
|
80
|
+
command: npx -y my-mcp-server
|
|
81
|
+
deep: true
|
|
82
|
+
security: true
|
|
83
|
+
upload-sarif: true
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Launch Copy
|
|
87
|
+
|
|
88
|
+
Short:
|
|
89
|
+
|
|
90
|
+
> MCP Observatory turns MCP server checks into GitHub Code Scanning findings.
|
|
91
|
+
|
|
92
|
+
Long:
|
|
93
|
+
|
|
94
|
+
> MCP servers are becoming production dependencies for AI agents. MCP Observatory now emits GitHub Code Scanning friendly SARIF, so compatibility, schema-quality, startup, and security findings can appear where maintainers already review software supply-chain risk.
|
|
@@ -83,7 +83,7 @@ The **Update Data** button is available in `metrics:serve` mode. A static `file:
|
|
|
83
83
|
For tests or offline recovery, you can seed telemetry from an existing export:
|
|
84
84
|
|
|
85
85
|
```bash
|
|
86
|
-
npm run metrics:refresh -- --telemetry-input
|
|
86
|
+
npm run metrics:refresh -- --telemetry-input path/to/sanitized-telemetry-export.json
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
## Optional Hourly Refresh
|
|
@@ -105,4 +105,4 @@ Raw telemetry remains available in the local SQLite database for account intelli
|
|
|
105
105
|
- GitHub and npm public metrics
|
|
106
106
|
- collection errors and freshness status
|
|
107
107
|
|
|
108
|
-
Do not commit `.mcp-observatory-metrics/`, telemetry exports, private reports, or screenshots that reveal raw data.
|
|
108
|
+
Do not commit `.mcp-observatory-metrics/`, raw telemetry exports, private reports, or screenshots that reveal raw data.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Signal - The MCP Reliability Preflight Agent
|
|
2
|
+
|
|
3
|
+
You are Signal, an AI reliability preflight agent powered by OpenClaw and MCP Observatory.
|
|
4
|
+
|
|
5
|
+
## Core Identity
|
|
6
|
+
|
|
7
|
+
- **Role:** MCP server compatibility, schema drift, and safety preflight agent
|
|
8
|
+
- **Personality:** Careful, practical, evidence-driven
|
|
9
|
+
- **Communication:** Short pass/warn/fail reports with exact commands, risks, and next actions
|
|
10
|
+
|
|
11
|
+
## Responsibilities
|
|
12
|
+
|
|
13
|
+
1. **MCP Tool Preflight**
|
|
14
|
+
- Test MCP servers before autonomous agents depend on them
|
|
15
|
+
- Confirm startup, handshake, tools, prompts, and resources
|
|
16
|
+
- Identify missing, renamed, or unstable tool schemas
|
|
17
|
+
- Separate advisory warnings from hard blockers
|
|
18
|
+
|
|
19
|
+
2. **Schema Drift Detection**
|
|
20
|
+
- Record known-good MCP server behavior
|
|
21
|
+
- Replay checks after dependency, server, or runtime changes
|
|
22
|
+
- Flag tool input/output schema changes that could break agents
|
|
23
|
+
- Preserve report evidence for pull requests and release reviews
|
|
24
|
+
|
|
25
|
+
3. **Safety Review**
|
|
26
|
+
- Run common MCP schema and security checks
|
|
27
|
+
- Flag risky parameters, ambiguous destructive tools, and unsafe defaults
|
|
28
|
+
- Prefer read-only verification unless a human explicitly authorizes deeper tests
|
|
29
|
+
- Recommend safer tool descriptions and guardrails
|
|
30
|
+
|
|
31
|
+
4. **CI Adoption**
|
|
32
|
+
- Add MCP Observatory GitHub Actions to repositories
|
|
33
|
+
- Keep initial checks advisory while signal is tuned
|
|
34
|
+
- Generate maintainer-friendly PR notes
|
|
35
|
+
- Report whether a server is safe for unattended agent use
|
|
36
|
+
|
|
37
|
+
## Tools
|
|
38
|
+
|
|
39
|
+
Signal uses MCP Observatory through the CLI:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx @kryptosai/mcp-observatory test npx -y your-mcp-server
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For deeper checks:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @kryptosai/mcp-observatory test npx -y your-mcp-server --deep --security
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
To add CI:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y your-mcp-server"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
To expose Observatory as an MCP server to another agent:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
claude mcp add mcp-observatory -- npx -y @kryptosai/mcp-observatory serve
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Behavioral Guidelines
|
|
64
|
+
|
|
65
|
+
### Do:
|
|
66
|
+
|
|
67
|
+
- Start with the safest no-secret command available
|
|
68
|
+
- Show the exact command tested
|
|
69
|
+
- Distinguish install failures, startup failures, protocol failures, and schema warnings
|
|
70
|
+
- Recommend read-only CI first
|
|
71
|
+
- Ask maintainers for a safe fixture when secrets or live accounts are required
|
|
72
|
+
- Prefer concrete PRs, fixtures, and target files over broad integration requests
|
|
73
|
+
|
|
74
|
+
### Don't:
|
|
75
|
+
|
|
76
|
+
- Run destructive MCP tools without explicit human permission
|
|
77
|
+
- Require private credentials for default CI
|
|
78
|
+
- Turn early advisory signal into a hard release blocker
|
|
79
|
+
- Hide flaky or intermittent failures
|
|
80
|
+
- Claim a server is safe without report evidence
|
|
81
|
+
- Spam maintainers with generic issues
|
|
82
|
+
|
|
83
|
+
## Report Format
|
|
84
|
+
|
|
85
|
+
When reporting a check, use:
|
|
86
|
+
|
|
87
|
+
```md
|
|
88
|
+
## MCP Preflight
|
|
89
|
+
|
|
90
|
+
**Target:** <server or command>
|
|
91
|
+
**Command:** `<exact command>`
|
|
92
|
+
**Result:** PASS | WARN | FAIL
|
|
93
|
+
|
|
94
|
+
| Check | Result | Evidence |
|
|
95
|
+
|-------|--------|----------|
|
|
96
|
+
| Startup | PASS | Server initialized in 1.2s |
|
|
97
|
+
| Tools | PASS | 8 tools discovered |
|
|
98
|
+
| Prompts | WARN | None exposed |
|
|
99
|
+
| Resources | PASS | 2 resources discovered |
|
|
100
|
+
| Schema drift | PASS | No drift from baseline |
|
|
101
|
+
| Security | WARN | Tool `delete_file` needs clearer destructive wording |
|
|
102
|
+
|
|
103
|
+
### Next Action
|
|
104
|
+
<one concrete recommendation>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Example Interactions
|
|
108
|
+
|
|
109
|
+
**User:** Check whether this MCP server is safe for our agent.
|
|
110
|
+
|
|
111
|
+
**Signal:**
|
|
112
|
+
|
|
113
|
+
## MCP Preflight
|
|
114
|
+
|
|
115
|
+
**Target:** example-mcp-server
|
|
116
|
+
**Command:** `npx @kryptosai/mcp-observatory test npx -y example-mcp-server --deep --security`
|
|
117
|
+
**Result:** WARN
|
|
118
|
+
|
|
119
|
+
| Check | Result | Evidence |
|
|
120
|
+
|-------|--------|----------|
|
|
121
|
+
| Startup | PASS | Server initialized successfully |
|
|
122
|
+
| Tools | PASS | 11 tools discovered |
|
|
123
|
+
| Prompts | PASS | 3 prompts discovered |
|
|
124
|
+
| Resources | PASS | 4 resources discovered |
|
|
125
|
+
| Schema drift | PASS | No baseline drift detected |
|
|
126
|
+
| Security | WARN | `run_command` has broad string input and needs stronger description |
|
|
127
|
+
|
|
128
|
+
### Next Action
|
|
129
|
+
|
|
130
|
+
Use this server in advisory mode, but add a maintainer issue asking for safer parameter descriptions around command execution before unattended use.
|
|
131
|
+
|
|
132
|
+
**User:** Add this to CI.
|
|
133
|
+
|
|
134
|
+
**Signal:**
|
|
135
|
+
|
|
136
|
+
I will add an advisory GitHub Action first:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npx @kryptosai/mcp-observatory setup-ci --all --command "npx -y example-mcp-server"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
This creates:
|
|
143
|
+
|
|
144
|
+
- `.github/workflows/mcp-observatory.yml`
|
|
145
|
+
- `mcp-observatory.target.json`
|
|
146
|
+
- report and badge snippets
|
|
147
|
+
- a maintainer PR body
|
|
148
|
+
|
|
149
|
+
The first PR should say the check is read-only, free, local-first, and advisory while the signal is tuned.
|
|
150
|
+
|
|
151
|
+
## Integration Notes
|
|
152
|
+
|
|
153
|
+
- Best for autonomous agents, coding agents, MCP gateways, and OpenClaw-style productivity systems
|
|
154
|
+
- Uses MCP Observatory as a free local-first MCP reliability gate
|
|
155
|
+
- Works best when maintainers provide safe no-secret startup commands
|
|
156
|
+
- Pairs naturally with CI, release checks, dependency updates, and agent runtime readiness reviews
|
package/docs/proof.md
CHANGED
|
@@ -8,7 +8,7 @@ MCP Observatory is early, but it is already a working MCP testing/security stack
|
|
|
8
8
|
- GitHub Action: `KryptosAI/mcp-observatory/action@v0.26.1`
|
|
9
9
|
- Latest release: `v0.26.1`
|
|
10
10
|
- CLI command count: scan, test, record, replay, verify, diff, watch, suggest, serve, lock, history, setup-ci, init-ci, ci-report, enterprise-report, score, badge, cloud
|
|
11
|
-
- Test suite:
|
|
11
|
+
- Test suite: 348 passing tests across 45 test files as of July 1, 2026
|
|
12
12
|
- GitHub traffic snapshot: 745 clones and 232 unique cloners in the visible June 2026 traffic window
|
|
13
13
|
- GitHub page views snapshot: 12 views and 9 unique visitors in the visible June 2026 traffic window
|
|
14
14
|
- npm downloads snapshot: 511 downloads for June 11-20, 2026
|
|
@@ -89,7 +89,7 @@ Current paid positioning is pilot-first:
|
|
|
89
89
|
- Team Pilot: starts at `$299/month`
|
|
90
90
|
- Business Pilot: starts at `$999/month`
|
|
91
91
|
- Enterprise Pilot: starts at `$3k/month`
|
|
92
|
-
- Strategic Accounts: custom
|
|
92
|
+
- Strategic Accounts: custom
|
|
93
93
|
|
|
94
94
|
Paid value is production use: hosted reporting, private repo CI history, security reports, certification, support, fleet visibility, and enterprise review.
|
|
95
95
|
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Target Contribution Guide
|
|
2
|
+
|
|
3
|
+
This guide turns MCP Observatory contribution into one small, repeatable action: add one safe MCP server target.
|
|
4
|
+
|
|
5
|
+
## The Goal
|
|
6
|
+
|
|
7
|
+
Add a target that another person or agent can reproduce later.
|
|
8
|
+
|
|
9
|
+
Success means:
|
|
10
|
+
|
|
11
|
+
- the command is public
|
|
12
|
+
- the command is safe to run in CI
|
|
13
|
+
- the target has a clear risk class
|
|
14
|
+
- generated evidence is checked in
|
|
15
|
+
- the PR is small enough to review quickly
|
|
16
|
+
|
|
17
|
+
## Step 1: Pick A Candidate
|
|
18
|
+
|
|
19
|
+
Look for MCP servers in:
|
|
20
|
+
|
|
21
|
+
- GitHub repos with `mcp-server` or `model-context-protocol`
|
|
22
|
+
- npm packages ending in `-mcp` or `mcp-server`
|
|
23
|
+
- agent runtime docs that mention MCP tools
|
|
24
|
+
- existing issues where maintainers ask for compatibility evidence
|
|
25
|
+
|
|
26
|
+
Prefer targets with a simple command:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx -y package-name
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If a target needs a fixture, keep it harmless and checked in under `examples/`.
|
|
33
|
+
|
|
34
|
+
## Step 2: Run A Quick Check
|
|
35
|
+
|
|
36
|
+
From the repo root:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx @kryptosai/mcp-observatory test npx -y package-name --security
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
If that works, add the target to:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
docs/safety-index/targets.json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Step 3: Write Useful Metadata
|
|
49
|
+
|
|
50
|
+
Use plain language. The metadata should help an agent decide whether this tool is worth trusting.
|
|
51
|
+
|
|
52
|
+
- `riskClass`: what kind of power this server gives an agent
|
|
53
|
+
- `failureClass`: what kind of breakage would matter most
|
|
54
|
+
- `whyItMatters`: why agent users care
|
|
55
|
+
- `reproductionNotes`: how to run it safely
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Browser control
|
|
61
|
+
Browser/code execution boundary
|
|
62
|
+
Agents may use this to navigate pages and inspect web state.
|
|
63
|
+
Zero-config public package; security findings are policy-review prompts, not vulnerability claims.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Step 4: Generate Evidence
|
|
67
|
+
|
|
68
|
+
Run:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm run safety-index
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This updates:
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
docs/mcp-server-safety-index.md
|
|
78
|
+
docs/safety-index/artifacts/<target-id>.json
|
|
79
|
+
docs/safety-index/artifacts/<target-id>.md
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Step 5: Validate
|
|
83
|
+
|
|
84
|
+
Run the fast checks:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run lint
|
|
88
|
+
npm run typecheck
|
|
89
|
+
npm test -- tests/safety-index.test.ts
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Use broader checks for larger changes:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm test
|
|
96
|
+
npm run smoke
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Step 6: Open A Tight PR
|
|
100
|
+
|
|
101
|
+
Good PR title:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
Add Safety Index target for Example MCP
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Good PR body:
|
|
108
|
+
|
|
109
|
+
```md
|
|
110
|
+
## Summary
|
|
111
|
+
|
|
112
|
+
- add a no-secret Safety Index target for Example MCP
|
|
113
|
+
- include generated JSON and Markdown evidence
|
|
114
|
+
|
|
115
|
+
## Validation
|
|
116
|
+
|
|
117
|
+
- npm run safety-index
|
|
118
|
+
- npm run lint
|
|
119
|
+
- npm run typecheck
|
|
120
|
+
- npm test -- tests/safety-index.test.ts
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Maintainer Follow-Up
|
|
124
|
+
|
|
125
|
+
After the PR lands, you can ask the upstream maintainer:
|
|
126
|
+
|
|
127
|
+
```md
|
|
128
|
+
I added a read-only MCP Observatory target for your MCP server so agent users can verify startup, schemas, and common safety footguns.
|
|
129
|
+
|
|
130
|
+
The check is local-first and does not require secrets. If you want, the same target can become an advisory GitHub Action or README badge.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## What Not To Do
|
|
134
|
+
|
|
135
|
+
- do not add broad scraping
|
|
136
|
+
- do not include secrets or private URLs
|
|
137
|
+
- do not run destructive tools
|
|
138
|
+
- do not combine many targets in one first PR
|
|
139
|
+
- do not frame warnings as vulnerabilities unless the evidence clearly supports that
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# MCP Target Registry
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
███╗ ███╗ ██████╗██████╗
|
|
5
|
+
████╗ ████║██╔════╝██╔══██╗
|
|
6
|
+
██╔████╔██║██║ ██████╔╝
|
|
7
|
+
██║╚██╔╝██║██║ ██╔═══╝
|
|
8
|
+
██║ ╚═╝ ██║╚██████╗██║
|
|
9
|
+
╚═╝ ╚═╝ ╚═════╝╚═╝
|
|
10
|
+
O B S E R V A T O R Y
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The easiest way to help MCP Observatory grow is to add one safe MCP target.
|
|
14
|
+
|
|
15
|
+
A target is a public MCP server that can be installed, started, and evaluated without private credentials or destructive side effects. Each target teaches agents and maintainers what healthy MCP behavior looks like.
|
|
16
|
+
|
|
17
|
+
## Why This Can Compound
|
|
18
|
+
|
|
19
|
+
Every accepted target creates several useful surfaces:
|
|
20
|
+
|
|
21
|
+
- a reproducible startup command
|
|
22
|
+
- a public safety-index row
|
|
23
|
+
- JSON and Markdown evidence artifacts
|
|
24
|
+
- a maintainer conversation starter
|
|
25
|
+
- a badge or CI adoption path
|
|
26
|
+
- a small contribution that another agent can copy
|
|
27
|
+
|
|
28
|
+
That means one tiny PR can produce docs, evidence, search surface, backlinks, and future issues.
|
|
29
|
+
|
|
30
|
+
## Registry Source
|
|
31
|
+
|
|
32
|
+
Current Safety Index targets live in:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
docs/safety-index/targets.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Generated evidence lives in:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
docs/safety-index/artifacts/
|
|
42
|
+
docs/mcp-server-safety-index.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Best Targets
|
|
46
|
+
|
|
47
|
+
Good first targets:
|
|
48
|
+
|
|
49
|
+
- start with `npx -y package-name` or another public no-secret command
|
|
50
|
+
- expose at least one real MCP tool, prompt, or resource
|
|
51
|
+
- avoid production accounts, OAuth, private tokens, and paid services
|
|
52
|
+
- use a harmless fixture directory when filesystem access is needed
|
|
53
|
+
- represent something agents actually use: browser, files, memory, docs, databases, search, code, CI, or infrastructure
|
|
54
|
+
|
|
55
|
+
Avoid targets that need:
|
|
56
|
+
|
|
57
|
+
- private OAuth
|
|
58
|
+
- live destructive actions
|
|
59
|
+
- paid-only APIs
|
|
60
|
+
- customer data
|
|
61
|
+
- private repositories
|
|
62
|
+
- long-running background services
|
|
63
|
+
|
|
64
|
+
## Target Entry Shape
|
|
65
|
+
|
|
66
|
+
Add one object to `docs/safety-index/targets.json`:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"id": "example-server",
|
|
71
|
+
"name": "Example MCP Server",
|
|
72
|
+
"repo": "https://github.com/example/example-mcp",
|
|
73
|
+
"packageName": "example-mcp",
|
|
74
|
+
"category": "Developer Tools",
|
|
75
|
+
"command": "npx",
|
|
76
|
+
"args": ["-y", "example-mcp"],
|
|
77
|
+
"timeoutMs": 60000,
|
|
78
|
+
"riskClass": "Developer tool access",
|
|
79
|
+
"failureClass": "Startup/listing reproducibility",
|
|
80
|
+
"whyItMatters": "Agents may rely on this tool during coding workflows.",
|
|
81
|
+
"reproductionNotes": "Zero-config public package."
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Contributor Loop
|
|
86
|
+
|
|
87
|
+
1. Pick one public MCP server.
|
|
88
|
+
2. Confirm it starts without secrets.
|
|
89
|
+
3. Add one target entry.
|
|
90
|
+
4. Run the Safety Index locally.
|
|
91
|
+
5. Open a small PR with the target and generated evidence.
|
|
92
|
+
6. Optionally ask the maintainer if they want an Observatory badge or CI check.
|
|
93
|
+
|
|
94
|
+
Use the detailed walkthrough in [Target Contribution Guide](./target-contribution-guide.md).
|
|
95
|
+
|
|
96
|
+
## Contribution Queue
|
|
97
|
+
|
|
98
|
+
Ready-made target tasks live under the [`target-registry` label](https://github.com/KryptosAI/mcp-observatory/issues?q=is%3Aissue%20is%3Aopen%20label%3Atarget-registry). Pick one issue, make one small PR, and include generated evidence.
|
|
99
|
+
|
|
100
|
+
## Maintainer-Friendly Ask
|
|
101
|
+
|
|
102
|
+
When contacting a maintainer, keep it concrete:
|
|
103
|
+
|
|
104
|
+
```md
|
|
105
|
+
I added a read-only MCP Observatory target for this server so agent users can verify startup, listed tools/prompts/resources, schema shape, and common safety footguns.
|
|
106
|
+
|
|
107
|
+
It does not require an account, hosted service, or secrets. If you prefer a different safe startup command, I can adjust the target.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Agent-Friendly Task
|
|
111
|
+
|
|
112
|
+
For autonomous coding agents:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
Find one public MCP server with a no-secret startup command. Add a single Safety Index target entry, run npm run safety-index, and open a PR that includes the generated JSON/Markdown evidence.
|
|
116
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kryptosai/mcp-observatory",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.27.0",
|
|
4
|
+
"description": "GitHub-native CI, SARIF, Code Scanning, and security gates for MCP servers before agents depend on them.",
|
|
5
5
|
"mcpName": "io.github.KryptosAI/mcp-observatory",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -36,7 +36,29 @@
|
|
|
36
36
|
"PRIVACY.md",
|
|
37
37
|
"TERMS.md",
|
|
38
38
|
"LICENSE",
|
|
39
|
-
"docs",
|
|
39
|
+
"docs/agent-runtime-quickstart.md",
|
|
40
|
+
"docs/architecture.md",
|
|
41
|
+
"docs/code-scanning-launch-outreach.md",
|
|
42
|
+
"docs/compatibility.md",
|
|
43
|
+
"docs/decisions.md",
|
|
44
|
+
"docs/demo.svg",
|
|
45
|
+
"docs/feishu-lark-mcp.md",
|
|
46
|
+
"docs/github-code-scanning-for-mcp.md",
|
|
47
|
+
"docs/known-issues.md",
|
|
48
|
+
"docs/mcp-lock-files.md",
|
|
49
|
+
"docs/mcp-safety-field-report-2026-06.md",
|
|
50
|
+
"docs/mcp-safety-report-latest.md",
|
|
51
|
+
"docs/mcp-security-field-guide.md",
|
|
52
|
+
"docs/mcp-server-safety-index.md",
|
|
53
|
+
"docs/methodology.md",
|
|
54
|
+
"docs/metrics-dashboard.md",
|
|
55
|
+
"docs/openclaw-agent-template",
|
|
56
|
+
"docs/proof.md",
|
|
57
|
+
"docs/reference-evaluations.md",
|
|
58
|
+
"docs/safety-index",
|
|
59
|
+
"docs/setup-ci-doctor.md",
|
|
60
|
+
"docs/target-contribution-guide.md",
|
|
61
|
+
"docs/target-registry.md",
|
|
40
62
|
"schemas"
|
|
41
63
|
],
|
|
42
64
|
"scripts": {
|
|
@@ -85,6 +107,9 @@
|
|
|
85
107
|
"mcp-monitoring",
|
|
86
108
|
"security",
|
|
87
109
|
"mcp-security",
|
|
110
|
+
"sarif",
|
|
111
|
+
"code-scanning",
|
|
112
|
+
"github-code-scanning",
|
|
88
113
|
"ai-security",
|
|
89
114
|
"supply-chain-security",
|
|
90
115
|
"ci-cd",
|
|
@@ -106,15 +131,15 @@
|
|
|
106
131
|
},
|
|
107
132
|
"devDependencies": {
|
|
108
133
|
"@eslint/js": "10.0.1",
|
|
109
|
-
"@types/node": "26.0.
|
|
110
|
-
"@typescript-eslint/eslint-plugin": "8.62.
|
|
111
|
-
"@typescript-eslint/parser": "8.62.
|
|
134
|
+
"@types/node": "26.0.1",
|
|
135
|
+
"@typescript-eslint/eslint-plugin": "8.62.1",
|
|
136
|
+
"@typescript-eslint/parser": "8.62.1",
|
|
112
137
|
"ajv": "8.20.0",
|
|
113
|
-
"eslint": "10.
|
|
138
|
+
"eslint": "10.6.0",
|
|
114
139
|
"globals": "17.7.0",
|
|
115
140
|
"tsx": "4.22.4",
|
|
116
141
|
"typescript": "6.0.3",
|
|
117
|
-
"typescript-eslint": "8.62.
|
|
142
|
+
"typescript-eslint": "8.62.1",
|
|
118
143
|
"vitest": "4.1.9"
|
|
119
144
|
}
|
|
120
145
|
}
|