@kryptosai/mcp-observatory 0.20.3 → 0.22.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.
Files changed (71) hide show
  1. package/COMMERCIAL.md +67 -0
  2. package/PRIVACY.md +52 -0
  3. package/README.md +100 -4
  4. package/TERMS.md +30 -0
  5. package/dist/src/checks/resources.js +9 -19
  6. package/dist/src/checks/resources.js.map +1 -1
  7. package/dist/src/checks/security-rules.js.map +1 -1
  8. package/dist/src/checks/security.js +33 -14
  9. package/dist/src/checks/security.js.map +1 -1
  10. package/dist/src/checks/tools-invoke.js.map +1 -1
  11. package/dist/src/checks/tools.js.map +1 -1
  12. package/dist/src/ci-issue.js +3 -1
  13. package/dist/src/ci-issue.js.map +1 -1
  14. package/dist/src/cli.js +48 -1
  15. package/dist/src/cli.js.map +1 -1
  16. package/dist/src/commands/ci-report.js +4 -0
  17. package/dist/src/commands/ci-report.js.map +1 -1
  18. package/dist/src/commands/enterprise-report.d.ts +12 -0
  19. package/dist/src/commands/enterprise-report.js +192 -0
  20. package/dist/src/commands/enterprise-report.js.map +1 -0
  21. package/dist/src/commands/init-ci.d.ts +31 -0
  22. package/dist/src/commands/init-ci.js +238 -0
  23. package/dist/src/commands/init-ci.js.map +1 -0
  24. package/dist/src/commands/scan.js +4 -0
  25. package/dist/src/commands/scan.js.map +1 -1
  26. package/dist/src/commands/score.js +2 -0
  27. package/dist/src/commands/score.js.map +1 -1
  28. package/dist/src/commands/telemetry.js +47 -2
  29. package/dist/src/commands/telemetry.js.map +1 -1
  30. package/dist/src/commands/test.js +11 -5
  31. package/dist/src/commands/test.js.map +1 -1
  32. package/dist/src/commercial.d.ts +5 -0
  33. package/dist/src/commercial.js +46 -0
  34. package/dist/src/commercial.js.map +1 -0
  35. package/dist/src/reporters/common.d.ts +16 -0
  36. package/dist/src/reporters/common.js +76 -0
  37. package/dist/src/reporters/common.js.map +1 -1
  38. package/dist/src/reporters/html.js +20 -0
  39. package/dist/src/reporters/html.js.map +1 -1
  40. package/dist/src/reporters/markdown.js +14 -2
  41. package/dist/src/reporters/markdown.js.map +1 -1
  42. package/dist/src/reporters/pr-comment.js +18 -1
  43. package/dist/src/reporters/pr-comment.js.map +1 -1
  44. package/dist/src/reporters/terminal.js +9 -1
  45. package/dist/src/reporters/terminal.js.map +1 -1
  46. package/dist/src/runner.js +1 -1
  47. package/dist/src/runner.js.map +1 -1
  48. package/dist/src/telemetry.d.ts +27 -0
  49. package/dist/src/telemetry.js +57 -3
  50. package/dist/src/telemetry.js.map +1 -1
  51. package/dist/src/types.d.ts +5 -0
  52. package/dist/src/validate.js +48 -5
  53. package/dist/src/validate.js.map +1 -1
  54. package/docs/architecture.md +32 -0
  55. package/docs/certification-campaign-template.md +181 -0
  56. package/docs/certification-distribution.md +129 -0
  57. package/docs/compatibility.md +164 -0
  58. package/docs/decisions.md +23 -0
  59. package/docs/demo.svg +59 -0
  60. package/docs/directory-listing-copy.md +78 -0
  61. package/docs/distribution-launch.md +76 -0
  62. package/docs/enterprise-outreach-playbook.md +83 -0
  63. package/docs/feishu-lark-mcp.md +65 -0
  64. package/docs/known-issues.md +27 -0
  65. package/docs/mcp-safety-report-latest.md +85 -0
  66. package/docs/project-case-study.md +106 -0
  67. package/docs/proof.md +68 -0
  68. package/docs/publish-readiness.md +77 -0
  69. package/package.json +33 -18
  70. package/schemas/diff-artifact.schema.json +62 -66
  71. package/schemas/run-artifact.schema.json +107 -142
@@ -0,0 +1,164 @@
1
+ # MCP Server Compatibility
2
+
3
+ MCP Observatory supports two transport adapters — **local-process (stdio)** and **HTTP (Streamable HTTP + SSE)** — which together cover ~95% of the MCP server ecosystem.
4
+
5
+ This document tracks which servers work, how to configure them, and what patterns are not yet supported.
6
+
7
+ ## Tested and Passing
8
+
9
+ These servers have been tested directly with MCP Observatory and produce valid results.
10
+
11
+ | Server | Package | Transport | Setup | Tools | Prompts | Resources |
12
+ |--------|---------|-----------|-------|-------|---------|-----------|
13
+ | Everything | [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) | stdio | Zero-config | ✅ pass | ✅ pass | ✅ pass |
14
+ | Filesystem | [`@modelcontextprotocol/server-filesystem`](https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem) | stdio | Path args | ✅ pass | — unsupported | — unsupported |
15
+ | Context7 | [`@upstash/context7-mcp`](https://www.npmjs.com/package/@upstash/context7-mcp) | stdio | Zero-config | ✅ pass | — unsupported | — unsupported |
16
+ | Puppeteer | [`puppeteer-mcp-server`](https://www.npmjs.com/package/puppeteer-mcp-server) | stdio | Zero-config | ✅ pass | — unsupported | ✅ pass |
17
+ | OpenTofu | [`@opentofu/opentofu-mcp-server`](https://www.npmjs.com/package/@opentofu/opentofu-mcp-server) | stdio | Zero-config | ✅ pass | — unsupported | ✅ pass |
18
+ | Ref Tools | [`ref-tools-mcp`](https://www.npmjs.com/package/ref-tools-mcp) | stdio | Zero-config | ✅ pass | ✅ pass | — unsupported |
19
+ | Promptopia | [`promptopia-mcp`](https://www.npmjs.com/package/promptopia-mcp) | stdio | Zero-config | ✅ pass | ✅ pass | — unsupported |
20
+ | GitHub MCP | Docker-based | stdio | `GITHUB_PERSONAL_ACCESS_TOKEN` | ✅ pass | ✅ pass | ✅ pass |
21
+
22
+ ## Compatible (stdio, zero-config or env vars only)
23
+
24
+ These servers use standard stdio transport and should work with MCP Observatory. Most just need an API key as an env var.
25
+
26
+ ### Zero-config (just `npx`)
27
+
28
+ | Server | Package | Command |
29
+ |--------|---------|---------|
30
+ | Sequential Thinking | [`@modelcontextprotocol/server-sequential-thinking`](https://www.npmjs.com/package/@modelcontextprotocol/server-sequential-thinking) | `npx -y @modelcontextprotocol/server-sequential-thinking` |
31
+ | Memory | [`@modelcontextprotocol/server-memory`](https://www.npmjs.com/package/@modelcontextprotocol/server-memory) | `npx -y @modelcontextprotocol/server-memory` |
32
+ | ESLint | [`@eslint/mcp`](https://www.npmjs.com/package/@eslint/mcp) | `npx -y @eslint/mcp` |
33
+ | SAP UI5 | [`@ui5/mcp-server`](https://www.npmjs.com/package/@ui5/mcp-server) | `npx -y @ui5/mcp-server` |
34
+
35
+ ### API key via env var
36
+
37
+ | Server | Package | Env Var | Command |
38
+ |--------|---------|---------|---------|
39
+ | Brave Search | [`@modelcontextprotocol/server-brave-search`](https://www.npmjs.com/package/@modelcontextprotocol/server-brave-search) | `BRAVE_API_KEY` | `npx -y @modelcontextprotocol/server-brave-search` |
40
+ | Sentry | [`@sentry/mcp-server`](https://www.npmjs.com/package/@sentry/mcp-server) | `SENTRY_AUTH_TOKEN` | `npx -y @sentry/mcp-server` |
41
+ | Tavily | [`tavily-mcp`](https://www.npmjs.com/package/tavily-mcp) | `TAVILY_API_KEY` | `npx -y tavily-mcp` |
42
+ | Firecrawl | [`firecrawl-mcp`](https://www.npmjs.com/package/firecrawl-mcp) | `FIRECRAWL_API_KEY` | `npx -y firecrawl-mcp` |
43
+ | HubSpot | [`@hubspot/mcp-server`](https://www.npmjs.com/package/@hubspot/mcp-server) | API key | `npx -y @hubspot/mcp-server` |
44
+ | LaunchDarkly | [`@launchdarkly/mcp-server`](https://www.npmjs.com/package/@launchdarkly/mcp-server) | API key | `npx -y @launchdarkly/mcp-server` |
45
+ | Notion | [`@notionhq/notion-mcp-server`](https://www.npmjs.com/package/@notionhq/notion-mcp-server) | `OPENAPI_MCP_HEADERS` | `npx -y @notionhq/notion-mcp-server` |
46
+ | Stripe | [`@stripe/mcp`](https://www.npmjs.com/package/@stripe/mcp) | `--api-key` arg | `npx -y @stripe/mcp --api-key ${STRIPE_API_KEY}` |
47
+
48
+ Target config example with env vars:
49
+
50
+ ```json
51
+ {
52
+ "targetId": "brave-search",
53
+ "adapter": "local-process",
54
+ "command": "npx",
55
+ "args": ["-y", "@modelcontextprotocol/server-brave-search"],
56
+ "env": { "BRAVE_API_KEY": "your-key-here" },
57
+ "timeoutMs": 15000
58
+ }
59
+ ```
60
+
61
+ ### Positional args required
62
+
63
+ | Server | Package | Args | Command |
64
+ |--------|---------|------|---------|
65
+ | Filesystem | [`@modelcontextprotocol/server-filesystem`](https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem) | Directory paths | `npx -y @modelcontextprotocol/server-filesystem /path/to/dir` |
66
+ | PostgreSQL | [`@modelcontextprotocol/server-postgres`](https://www.npmjs.com/package/@modelcontextprotocol/server-postgres) | Connection URL | `npx -y @modelcontextprotocol/server-postgres postgres://...` |
67
+ | SQLite | [`@modelcontextprotocol/server-sqlite`](https://www.npmjs.com/package/@modelcontextprotocol/server-sqlite) | `--db-path` | `npx -y @modelcontextprotocol/server-sqlite --db-path ./db.sqlite` |
68
+ | Redis | [`@modelcontextprotocol/server-redis`](https://www.npmjs.com/package/@modelcontextprotocol/server-redis) | Redis URL | `npx -y @modelcontextprotocol/server-redis redis://localhost:6379` |
69
+ | Git | [`mcp-server-git`](https://pypi.org/project/mcp-server-git/) | `--repository` | `uvx mcp-server-git --repository /path/to/repo` |
70
+ | Nx | [`nx-mcp`](https://www.npmjs.com/package/nx-mcp) | Workspace path | `npx -y nx-mcp --workspace /path` |
71
+
72
+ ### Python servers (via `uvx`)
73
+
74
+ Python-based MCP servers work with the `local-process` adapter as long as `uv` is installed:
75
+
76
+ ```json
77
+ {
78
+ "targetId": "git-server",
79
+ "adapter": "local-process",
80
+ "command": "uvx",
81
+ "args": ["mcp-server-git", "--repository", "."],
82
+ "timeoutMs": 15000
83
+ }
84
+ ```
85
+
86
+ ## Compatible (HTTP/SSE remote)
87
+
88
+ These servers expose a hosted HTTP endpoint. Use the `http` adapter:
89
+
90
+ | Server | URL | Auth |
91
+ |--------|-----|------|
92
+ | Cloudflare | `https://observability.mcp.cloudflare.com/mcp` | API token via `authToken` |
93
+ | Exa | `https://mcp.exa.ai/mcp` | `EXA_API_KEY` via `authToken` |
94
+ | Tavily (remote) | `https://mcp.tavily.com/mcp` | Bearer token via `authToken` |
95
+ | Context7 (remote) | `https://mcp.context7.com/mcp` | Optional API key |
96
+
97
+ Target config example:
98
+
99
+ ```json
100
+ {
101
+ "targetId": "cloudflare",
102
+ "adapter": "http",
103
+ "url": "https://observability.mcp.cloudflare.com/mcp",
104
+ "authToken": "your-cloudflare-api-token",
105
+ "timeoutMs": 15000
106
+ }
107
+ ```
108
+
109
+ ## Compatible (Docker)
110
+
111
+ Many MCP servers ship Docker images. These work with the `local-process` adapter — Docker's `-i` flag attaches stdin/stdout, which is standard stdio transport.
112
+
113
+ ```json
114
+ {
115
+ "targetId": "github-docker",
116
+ "adapter": "local-process",
117
+ "command": "docker",
118
+ "args": ["run", "-i", "--rm",
119
+ "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN}",
120
+ "ghcr.io/github/github-mcp-server"],
121
+ "timeoutMs": 30000
122
+ }
123
+ ```
124
+
125
+ ```bash
126
+ mcp-observatory run -- docker run -i --rm ghcr.io/github/github-mcp-server
127
+ ```
128
+
129
+ All official `@modelcontextprotocol/server-*` packages publish Docker images that work this way.
130
+
131
+ ## Known Incompatible
132
+
133
+ These servers do not work with MCP Observatory due to transport or architecture constraints:
134
+
135
+ | Server | Why | Workaround |
136
+ |--------|-----|------------|
137
+ | BrowserTools MCP | Custom WebSocket transport between Chrome extension, middleware, and MCP server | None — non-standard transport |
138
+ | Google Drive | Requires interactive OAuth browser flow before first use | Pre-authenticate manually, then run Observatory |
139
+ | `@modelcontextprotocol/server-map` | Times out under stdio harness | May need specific startup args |
140
+ | `@modelcontextprotocol/server-threejs` | Closes connection before init | App-oriented, not a pure stdio server |
141
+ | `@modelcontextprotocol/server-pdf` | Times out under probe setup | May need specific startup args |
142
+ | `@jsonresume/mcp` | Closes connection before init | May expect different invocation |
143
+
144
+ ## Transport Coverage
145
+
146
+ MCP Observatory covers both standard MCP transports:
147
+
148
+ | Transport | Adapter | Status |
149
+ |-----------|---------|--------|
150
+ | **stdio** (subprocess, JSON-RPC over stdin/stdout) | `local-process` | ✅ Supported |
151
+ | **Streamable HTTP** (POST to endpoint, SSE response) | `http` | ✅ Supported |
152
+ | **HTTP+SSE** (deprecated, separate GET/POST endpoints) | `http` (fallback) | ✅ Supported |
153
+ | WebSocket (non-standard) | — | ❌ Not supported |
154
+
155
+ Per the [MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports), stdio and Streamable HTTP are the two standard transports. The deprecated HTTP+SSE transport is handled automatically via SDK fallback.
156
+
157
+ ## Ecosystem Stats
158
+
159
+ Based on analysis of the top 30+ MCP servers by npm downloads:
160
+
161
+ - **~85%** use stdio as primary transport → covered by `local-process` adapter
162
+ - **~10%** are HTTP-only remote services → covered by `http` adapter
163
+ - **~5%** support both stdio and HTTP → both adapters work
164
+ - **<1%** use non-standard transports (WebSocket) → not supported
@@ -0,0 +1,23 @@
1
+ # Decisions
2
+
3
+ These decisions exist so the repo does not drift into vague feature accumulation.
4
+
5
+ ## 2026-03-19: Semantics v1 stays intentionally narrow
6
+
7
+ `semantics` only checks advertised capability, callable endpoint response, and minimal expected shape. The first job of MCP Observatory is to explain drift, not to claim semantic correctness it does not yet earn.
8
+
9
+ ## 2026-03-19: The project stays CLI-first
10
+
11
+ The durable product surface is the artifact plus the report. A dashboard can wait. Until the evidence surface is boringly trustworthy, adding hosted UX would mostly be theater.
12
+
13
+ ## 2026-03-19: `unsupported` and `failed` remain separate
14
+
15
+ `unsupported` means the target did not advertise the capability. `failed` means the capability path or startup path should have worked and did not. Collapsing those states would hide useful ecosystem truth.
16
+
17
+ ## 2026-03-19: installability is part of the credibility bar
18
+
19
+ The package stays scoped as `@kryptosai/mcp-observatory`, and the release flow should be able to publish it. Until npm credentials are configured, GitHub release tarballs are the honest fallback. The repo should never imply a one-command install path that does not actually work.
20
+
21
+ ## 2026-03-19: Every release needs a reason to exist
22
+
23
+ Packaging-only churn is not a release story. Every release should include at least one real-server learning, one report-quality improvement, or one schema trust improvement.
package/docs/demo.svg ADDED
@@ -0,0 +1,59 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="820" height="320" viewBox="0 0 820 320">
2
+ <defs>
3
+ <style>
4
+ .bg { fill: #1e1e2e; }
5
+ .title-bar { fill: #313244; }
6
+ .dot-red { fill: #f38ba8; }
7
+ .dot-yellow { fill: #f9e2af; }
8
+ .dot-green { fill: #a6e3a1; }
9
+ .text { fill: #cdd6f4; font-family: 'Menlo', 'Monaco', 'Courier New', monospace; font-size: 13px; }
10
+ .bold { fill: #cdd6f4; font-weight: bold; }
11
+ .dim { fill: #6c7086; }
12
+ .green { fill: #a6e3a1; }
13
+ .yellow { fill: #f9e2af; }
14
+ .prompt { fill: #89b4fa; }
15
+ .line { stroke: #45475a; stroke-width: 1; }
16
+ </style>
17
+ </defs>
18
+ <rect class="bg" width="820" height="320" rx="10"/>
19
+ <rect class="title-bar" width="820" height="36" rx="10"/>
20
+ <rect class="title-bar" x="0" y="26" width="820" height="10"/>
21
+ <circle class="dot-red" cx="20" cy="18" r="6"/>
22
+ <circle class="dot-yellow" cx="40" cy="18" r="6"/>
23
+ <circle class="dot-green" cx="60" cy="18" r="6"/>
24
+ <text class="dim" x="350" y="22" text-anchor="middle">mcp-observatory — scan</text>
25
+
26
+ <text class="prompt" x="20" y="65">$</text>
27
+ <text class="text" x="35" y="65">npx @kryptosai/mcp-observatory scan --invoke-tools</text>
28
+
29
+ <text class="bold" x="20" y="100">Discovered 2 MCP server(s):</text>
30
+ <text class="dim" x="30" y="118">github (from ~/.claude.json)</text>
31
+ <text class="dim" x="30" y="136">filesystem (from ~/.claude.json)</text>
32
+
33
+ <text class="bold" x="20" y="170">Scan Results:</text>
34
+
35
+ <text class="bold" x="20" y="195">Target</text>
36
+ <text class="bold" x="230" y="195">Gate</text>
37
+ <text class="bold" x="300" y="195">Tools</text>
38
+ <text class="bold" x="400" y="195">Prompts</text>
39
+ <text class="bold" x="510" y="195">Resources</text>
40
+ <text class="bold" x="630" y="195">Invoke</text>
41
+
42
+ <line class="line" x1="20" y1="203" x2="750" y2="203"/>
43
+
44
+ <text class="text" x="20" y="225">github</text>
45
+ <text class="green" x="230" y="225">pass</text>
46
+ <text class="green" x="300" y="225">pass</text>
47
+ <text class="green" x="400" y="225">pass</text>
48
+ <text class="green" x="510" y="225">pass</text>
49
+ <text class="yellow" x="630" y="225">partial</text>
50
+
51
+ <text class="text" x="20" y="250">filesystem</text>
52
+ <text class="green" x="230" y="250">pass</text>
53
+ <text class="green" x="300" y="250">pass</text>
54
+ <text class="dim" x="400" y="250">unsupported</text>
55
+ <text class="dim" x="510" y="250">unsupported</text>
56
+ <text class="green" x="630" y="250">pass</text>
57
+
58
+ <text class="dim" x="20" y="295">Checked 2 servers in 3.2s</text>
59
+ </svg>
@@ -0,0 +1,78 @@
1
+ # Directory And Marketplace Listing Copy
2
+
3
+ ## Standard Positioning
4
+
5
+ MCP Observatory helps teams test, secure, and monitor MCP servers before agents depend on them.
6
+
7
+ ## Short Description
8
+
9
+ CI, security checks, schema drift detection, reports, and badges for MCP servers.
10
+
11
+ ## Medium Description
12
+
13
+ MCP Observatory is a CLI, GitHub Action, and MCP server for testing MCP servers before agents depend on them. It checks tools, prompts, resources, schema quality, security footguns, regressions, and drift, then generates reports and badges maintainers can share.
14
+
15
+ ## Long Description
16
+
17
+ MCP Observatory gives MCP servers production safety rails: one-command CI setup, compatibility checks, security analysis, schema drift detection, record/replay/verify workflows, PR comments, health score badges, and static enterprise reports. It can run as a CLI, inside GitHub Actions, or as an MCP server that lets agents inspect other MCP servers.
18
+
19
+ Free for local OSS use. Paid pilots are available for hosted reporting, private repo CI history, recurring security reports, certification, support, and fleet visibility.
20
+
21
+ ## Primary CTA
22
+
23
+ Add MCP CI in one command:
24
+
25
+ ```bash
26
+ npx @kryptosai/mcp-observatory init-ci --all --command "npx -y my-mcp-server"
27
+ ```
28
+
29
+ ## Tags
30
+
31
+ ### GitHub Topics
32
+
33
+ - `mcp`
34
+ - `model-context-protocol`
35
+ - `mcp-server`
36
+ - `mcp-testing`
37
+ - `mcp-security`
38
+ - `mcp-ci`
39
+ - `schema-drift`
40
+ - `developer-tools`
41
+ - `security`
42
+ - `github-action`
43
+
44
+ ### Directory Tags
45
+
46
+ - MCP
47
+ - Model Context Protocol
48
+ - Security
49
+ - Developer Tools
50
+ - Testing
51
+ - CI/CD
52
+ - Observability
53
+ - Schema Drift
54
+ - Regression Testing
55
+ - AI Agents
56
+
57
+ ### npm Keywords
58
+
59
+ - `mcp`
60
+ - `mcp-server`
61
+ - `model-context-protocol`
62
+ - `mcp-testing`
63
+ - `mcp-security`
64
+ - `mcp-ci`
65
+ - `schema-drift`
66
+ - `github-action`
67
+ - `developer-tools`
68
+ - `security`
69
+ - `production-monitoring`
70
+ - `enterprise-report`
71
+
72
+ ## Links
73
+
74
+ - README: `https://github.com/KryptosAI/mcp-observatory#readme`
75
+ - GitHub Action: `https://github.com/KryptosAI/mcp-observatory/tree/main/action`
76
+ - Certification guide: `https://github.com/KryptosAI/mcp-observatory/blob/main/docs/certification-distribution.md`
77
+ - Proof: `https://github.com/KryptosAI/mcp-observatory/blob/main/docs/proof.md`
78
+ - Commercial pilots: `https://github.com/KryptosAI/mcp-observatory/blob/main/COMMERCIAL.md`
@@ -0,0 +1,76 @@
1
+ # Distribution And Pilot Launch
2
+
3
+ Use this as the reversible launch motion for MCP Observatory commercialization.
4
+
5
+ For the release gate and publication checklist, see [Publish And Distribution Readiness](./publish-readiness.md).
6
+ For listing copy, use [Directory And Marketplace Listing Copy](./directory-listing-copy.md).
7
+ For public proof, use [MCP Observatory Proof](./proof.md).
8
+
9
+ ## Positioning
10
+
11
+ MCP Observatory helps teams test, secure, and monitor MCP servers before agents depend on them.
12
+
13
+ ## Public Surface Checklist
14
+
15
+ - README pricing and enterprise CTA
16
+ - npm description and keywords
17
+ - GitHub repository homepage pointing to the README or commercial page
18
+ - MCP directory listings updated with production/security language
19
+ - Launch post published
20
+ - Badge or certification language available for passing servers
21
+ - Certification distribution loop published at [`docs/certification-distribution.md`](./certification-distribution.md)
22
+
23
+ ## Launch Post Draft
24
+
25
+ MCP servers are becoming production dependencies. If an agent depends on a server, that server needs regression tests, security checks, and monitoring before it breaks workflows.
26
+
27
+ MCP Observatory scans MCP servers, verifies capabilities, detects schema drift, records/replays sessions, and can run in CI or as an MCP server itself.
28
+
29
+ Free for local OSS use. Paid pilots are available for hosted reporting, private repo CI, security reports, production monitoring, certification, support, and fleet visibility.
30
+
31
+ Production MCP usage? Contact william@banksey.com.
32
+
33
+ ## Outreach Template
34
+
35
+ Subject: MCP production testing and security checks
36
+
37
+ Hi,
38
+
39
+ I noticed signals that your team may be evaluating or using MCP servers. MCP Observatory helps teams test, secure, and monitor MCP servers before agents depend on them.
40
+
41
+ We are running a small number of production pilots for hosted reports, private repo CI, security monitoring, certification, support, and fleet visibility.
42
+
43
+ Would it be useful to compare what your MCP servers look like today and where regressions or production risk could show up?
44
+
45
+ William
46
+
47
+ ## Helpful Maintainer PR Motion
48
+
49
+ For popular MCP server repositories, open small PRs that add:
50
+
51
+ - `.github/workflows/mcp-observatory.yml`
52
+ - optional README badge
53
+ - a short PR body explaining the security/compatibility benefit
54
+
55
+ Frame this as free OSS safety infrastructure:
56
+
57
+ > I added a lightweight MCP Observatory check so users can see this server is tested for compatibility, schema drift, and common security issues. It runs in GitHub Actions, comments a readable report on PRs, and does not require an account.
58
+
59
+ Use the full template in [`certification-distribution.md`](./certification-distribution.md).
60
+
61
+ Track each outbound wave with [`certification-campaign-template.md`](./certification-campaign-template.md).
62
+
63
+ ## Account Ranking Inputs
64
+
65
+ Rank prospects with:
66
+
67
+ - Company domain or GitHub organization
68
+ - Evidence source: git email domain, git remote URL, hostname domain, CI provider
69
+ - Event count and unique sessions
70
+ - Commands used
71
+ - Targets or servers seen
72
+ - Production signals: CI, private repo naming, repeated scans, security checks, matrix scans
73
+ - Confidence: high, medium, low
74
+ - Tier recommendation: Team, Business, Enterprise, Strategic
75
+
76
+ Do not publish raw emails. Keep account evidence internal.
@@ -0,0 +1,83 @@
1
+ # Enterprise Outreach Playbook
2
+
3
+ Use this playbook after running:
4
+
5
+ ```bash
6
+ npm run telemetry:intelligence -- --input telemetry-exports/events-flat-full.json --out-dir reports
7
+ ```
8
+
9
+ Start from `reports/telemetry-usage-summary.html` to confirm external usage before reading account rankings. Do not treat first-party CI, release workflows, or internal/personal sessions as market traction.
10
+
11
+ Do not include raw personal emails in public issues, posts, or docs. Use account domains, GitHub orgs, and aggregate telemetry evidence.
12
+
13
+ ## Priority Accounts
14
+
15
+ | Priority | Account | Evidence | Motion |
16
+ | ---: | --- | --- | --- |
17
+ | 1 | `thinkingdata.cn` | High-confidence external usage, repeated sessions, private-network target signal, Feishu/Lark MCP targets | Enterprise pilot |
18
+ | 2 | `kimquy.capital` | Recent light usage across multiple sessions | Business pilot / design partner |
19
+ | 3 | `paperstreetdata.com` | Small usage cluster | Business pilot / testimonial ask |
20
+ | 4 | `cyberneticsplus.com` | Single company signal | Team pilot / feedback ask |
21
+ | 5 | GitHub org/user signals | CI or repo-based usage | Team pilot unless company identity is confirmed |
22
+
23
+ ## ThinkingData First Email
24
+
25
+ Subject: MCP security reporting for Feishu/Lark production workflows
26
+
27
+ Hi,
28
+
29
+ I build MCP Observatory, an open source tool for testing, securing, and monitoring MCP servers before agents depend on them.
30
+
31
+ We are seeing serious production-style usage patterns around Feishu/Lark MCP workflows and internal HTTP MCP targets. I am opening a small number of enterprise pilots for teams that want hosted MCP security reports, private-repo CI history, and fleet visibility across agent environments.
32
+
33
+ If your team is running MCP servers in production, I can prepare a short evidence-based report and a pilot proposal focused on:
34
+
35
+ - Feishu/Lark MCP compatibility
36
+ - private HTTP MCP health checks
37
+ - security findings and schema drift
38
+ - CI history and production monitoring
39
+ - MCP fleet visibility across teams
40
+
41
+ Would it be useful to compare notes this week?
42
+
43
+ William
44
+
45
+ ## Pilot Routing
46
+
47
+ - Repeated sessions + internal/private target: Enterprise Pilot, starts at `$3k/month`.
48
+ - Major platform, AI lab, or very large company: Strategic only, `$250k+/year` anchor.
49
+ - Light but recent company usage: Business Pilot, starts at `$999/month`.
50
+ - GitHub-user-only or hobby-looking usage: Team Pilot, starts at `$299/month`.
51
+
52
+ ## Call Agenda
53
+
54
+ 1. Confirm whether MCP is already in production or only evaluation.
55
+ 2. Identify the owner: platform, security, AI infra, developer productivity, or app team.
56
+ 3. Ask which value matters most: CI, security report, dashboard, certification, fleet inventory, or private deployment.
57
+ 4. Offer to generate a static enterprise report from their first pilot run.
58
+ 5. Quote manually. Do not route large companies to self-serve Team/Business pricing.
59
+
60
+ ## Evidence Packet
61
+
62
+ Prepare this before outreach:
63
+
64
+ ```bash
65
+ npx @kryptosai/mcp-observatory enterprise-report \
66
+ --account "Account Name" \
67
+ --format html \
68
+ --output reports/account-enterprise-report.html
69
+ ```
70
+
71
+ Include only aggregate facts:
72
+
73
+ - company or GitHub organization domain
74
+ - event count
75
+ - unique sessions
76
+ - first seen / last seen
77
+ - commands used
78
+ - targets seen
79
+ - CI/private-network/security signals
80
+ - confidence
81
+ - recommended pilot tier
82
+
83
+ Do not include raw hostnames, personal emails, tokens, or private URLs in external outreach.
@@ -0,0 +1,65 @@
1
+ # Testing Feishu/Lark MCP Servers
2
+
3
+ Feishu and Lark workflows often put documents, approvals, project data, and internal knowledge behind MCP servers. MCP Observatory helps teams test those servers before agents depend on them.
4
+
5
+ ## Local Server Check
6
+
7
+ ```bash
8
+ npx @kryptosai/mcp-observatory test --security npx -y feishu-doc-mcp
9
+ ```
10
+
11
+ Use `--security` when the server exposes document search, write actions, internal URLs, or credential-backed tools.
12
+
13
+ ## Internal HTTP MCP Check
14
+
15
+ For an internal HTTP MCP endpoint, create a target file:
16
+
17
+ ```json
18
+ {
19
+ "targetId": "feishu-doc-mcp",
20
+ "adapter": "http",
21
+ "url": "https://internal.example.com/mcp",
22
+ "authToken": "${FEISHU_MCP_TOKEN}",
23
+ "timeoutMs": 30000
24
+ }
25
+ ```
26
+
27
+ Then run:
28
+
29
+ ```bash
30
+ export FEISHU_MCP_TOKEN="..."
31
+ npx @kryptosai/mcp-observatory test --target feishu-target.json --security
32
+ ```
33
+
34
+ ## CI Report
35
+
36
+ ```yaml
37
+ name: Feishu MCP Check
38
+ on: [pull_request]
39
+
40
+ jobs:
41
+ observatory:
42
+ runs-on: ubuntu-latest
43
+ env:
44
+ MCP_OBSERVATORY_ORG: your-company.com
45
+ MCP_OBSERVATORY_CONTACT: mcp-owner@your-company.com
46
+ steps:
47
+ - uses: actions/checkout@v4
48
+ - uses: KryptosAI/mcp-observatory/action@main
49
+ with:
50
+ target: feishu-target.json
51
+ security: true
52
+ ```
53
+
54
+ ## Enterprise Report
55
+
56
+ ```bash
57
+ npx @kryptosai/mcp-observatory enterprise-report \
58
+ --account "Feishu MCP production fleet" \
59
+ --format html \
60
+ --output feishu-mcp-report.html
61
+ ```
62
+
63
+ Production teams can use the report for MCP owner reviews, private-repo CI history, security review, and certification conversations.
64
+
65
+ Contact `william@banksey.com` for production Feishu/Lark MCP usage, hosted reporting, private deployment, or fleet visibility.
@@ -0,0 +1,27 @@
1
+ # Known Issues
2
+
3
+ ## `unsupported` vs `failed`
4
+
5
+ This distinction is one of the main reasons the repo exists.
6
+
7
+ - `unsupported` means the target did not advertise the capability. Example: `@modelcontextprotocol/server-filesystem` currently surfaces `prompts` and `resources` as `unsupported`.
8
+ - `failed` means the capability path or startup path should have worked and did not. Example: a target that advertises a capability but errors during the list call, or a package that closes the connection before initialization completes.
9
+
10
+ Collapsing those states would make the ecosystem look simpler than it is.
11
+
12
+ ## Not every MCP package is a drop-in stdio target
13
+
14
+ Some packages in the ecosystem are app-oriented, require additional startup flags, or close immediately when invoked like a plain local-process stdio server. That is not a failure of MCP Observatory; it is useful ecosystem signal.
15
+
16
+ Observed examples during launch hardening:
17
+
18
+ - `@modelcontextprotocol/server-map` timed out under the current local-process harness
19
+ - `@modelcontextprotocol/server-threejs` closed the connection before initialization completed
20
+ - `@jsonresume/mcp` closed the connection before initialization completed
21
+ - `@modelcontextprotocol/server-pdf` timed out under the current probe setup
22
+
23
+ These are good candidates for future integration work because they help clarify:
24
+
25
+ - stdio vs app/server transport expectations
26
+ - startup requirements for package-specific servers
27
+ - how MCP Observatory should present connection/setup failures clearly
@@ -0,0 +1,85 @@
1
+ # MCP Safety Report
2
+
3
+ Latest generated baseline: June 19, 2026.
4
+
5
+ MCP servers are becoming production dependencies. When agents depend on a server, that server needs repeatable compatibility checks, security review, schema drift detection, and visible trust signals.
6
+
7
+ ## What Observatory Checks
8
+
9
+ MCP Observatory checks:
10
+
11
+ - tools, prompts, and resources list/respond correctly
12
+ - advertised capabilities match observed behavior
13
+ - safe read-only tools can be invoked
14
+ - schemas are usable by agents
15
+ - security footguns are visible before production use
16
+ - runs can be compared for regressions and schema drift
17
+ - artifacts can be rendered as JSON, Markdown, HTML, JUnit, SARIF, or PR comments
18
+
19
+ ## Aggregate Usage Snapshot
20
+
21
+ Safe aggregate telemetry from the latest local export:
22
+
23
+ | Metric | Value |
24
+ | --- | ---: |
25
+ | Total telemetry events | 10,278 |
26
+ | Unique sessions | 7,211 |
27
+ | External sessions | 5,368 |
28
+ | External CI sessions | 2,434 |
29
+ | Attributed company/org sessions | 128 |
30
+
31
+ Top external commands:
32
+
33
+ 1. `serve`
34
+ 2. `run`
35
+ 3. `diff`
36
+ 4. `test`
37
+ 5. `scan`
38
+ 6. `history`
39
+
40
+ No raw emails, hostnames, private URLs, tokens, or response bodies are included in this report.
41
+
42
+ ## Common MCP Failure Classes
43
+
44
+ From public sample artifacts and Observatory check categories, the most important failure classes are:
45
+
46
+ - server startup failure
47
+ - malformed or missing tools/list, prompts/list, or resources/list responses
48
+ - schema quality issues that make tools harder for agents to call correctly
49
+ - regressions between two runs
50
+ - unexpected drift from a recorded baseline
51
+ - broad filesystem/network/security-sensitive tool surfaces
52
+ - slow or unreliable connection behavior
53
+
54
+ ## How Maintainers Add The Check
55
+
56
+ ```bash
57
+ npx @kryptosai/mcp-observatory init-ci --all --command "npx -y my-mcp-server"
58
+ ```
59
+
60
+ That creates a GitHub Action and a README badge snippet. The action can comment on PRs and fail when MCP compatibility or security checks regress.
61
+
62
+ ## Production Path
63
+
64
+ Production teams can use MCP Observatory for:
65
+
66
+ - private repo CI history
67
+ - hosted reporting
68
+ - recurring security reports
69
+ - MCP certification
70
+ - support and rollout review
71
+ - fleet visibility across teams and repos
72
+
73
+ Contact `william@banksey.com` for pilots.
74
+
75
+ ## Launch Post
76
+
77
+ MCP servers are becoming production dependencies.
78
+
79
+ I built MCP Observatory so MCP maintainers can add CI, security checks, schema drift detection, PR reports, and trust badges in one command:
80
+
81
+ ```bash
82
+ npx @kryptosai/mcp-observatory init-ci --all --command "npx -y my-mcp-server"
83
+ ```
84
+
85
+ Free for local OSS use. Paid pilots are available for hosted reporting, private repo CI, certification, support, and fleet visibility.