{
  "markdown": "<p align=\"center\">\n  <a href=\"https://www.buymeacoffee.com/oaslananka\">\n    <img src=\"https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=%E2%98%95&slug=oaslananka&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff\" alt=\"Buy me a coffee\" />\n  </a>\n</p>\n\n# MCP Infrastructure Suite\n\n> The missing infrastructure layer for Model Context Protocol ecosystems.\n\n[![CI](https://github.com/oaslananka/mcp-suite/actions/workflows/ci.yml/badge.svg)](https://github.com/oaslananka/mcp-suite/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/oaslananka/mcp-suite/graph/badge.svg)](https://codecov.io/gh/oaslananka/mcp-suite)\n[![npm scope](https://img.shields.io/badge/npm-@oaslananka-EA580C)](https://www.npmjs.com/search?q=%40oaslananka%20mcp)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)\n[![MCP Spec 2025-11-25](https://img.shields.io/badge/MCP%20Spec-2025--11--25-16A34A)](https://modelcontextprotocol.io)\n[![Node >= 24](https://img.shields.io/badge/node-%3E%3D24-339933)](https://nodejs.org/)\n[![pnpm](https://img.shields.io/badge/pnpm-10-F69220)](https://pnpm.io/)\n[![Smithery Ready](https://img.shields.io/badge/Smithery-ready-111827)](https://smithery.ai/docs)\n\n```mermaid\nflowchart LR\n    Shared[\"@oaslananka/shared\"]\n    Forge[\"@oaslananka/forge\"]\n    Sentinel[\"@oaslananka/sentinel\"]\n    Atlas[\"@oaslananka/atlas\"]\n    Composer[\"@oaslananka/composer\"]\n    Bridge[\"@oaslananka/bridge\"]\n    Observatory[\"@oaslananka/observatory\"]\n    Lab[\"@oaslananka/lab\"]\n\n    Shared --> Forge\n    Shared --> Sentinel\n    Shared --> Atlas\n    Shared --> Composer\n    Shared --> Bridge\n    Shared --> Observatory\n    Shared --> Lab\n\n    Clients[\"IDE / Agent / SDK clients\"] --> Sentinel\n    Clients --> Composer\n    Composer --> Backends[\"Backend MCP servers\"]\n    Sentinel --> Backends\n    Forge --> Composer\n    Forge --> Sentinel\n    Atlas --> Clients\n    Observatory --> Sentinel\n    Observatory --> Forge\n    Lab --> Composer\n```\n\n## Why mcp-suite?\n\nMost MCP projects stop at the server boundary. `mcp-suite` focuses on the harder production layer around it: transport compatibility, trust boundaries, orchestration, discovery, observability, and operator workflows. That makes it useful once you move past a single local demo and start running MCP in teams, CI, or internal platforms.\n\nThe suite is built for guarded GitHub-hosted release automation, with every publishable package prepared for public npm publishing under the `@oaslananka` scope. The monorepo stays strict TypeScript, Turborepo, pnpm, and release-please manifest based.\n\nCompared with one-off MCP utilities, the packages here are designed to compose: `shared` defines the protocol/runtime baseline, `sentinel` and `composer` control traffic, `forge` orchestrates work, `atlas` catalogs capability, `bridge` generates servers, `observatory` closes the feedback loop, and `lab` gives contributors a desktop workbench.\n\n## Packages\n\n| Package                   | What it does                                                                    | Docs                                               |\n| ------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------- |\n| `@oaslananka/shared`      | Shared MCP protocol, transports, auth, retry, telemetry, and testing primitives | [Shared docs](./docs/packages/shared.md)           |\n| `@oaslananka/forge`       | Pipeline engine for orchestrating MCP tools and external steps                  | [Forge docs](./docs/packages/forge.md)             |\n| `@oaslananka/sentinel`    | Zero-trust security proxy with audit, approval, and PII controls                | [Sentinel docs](./docs/packages/sentinel.md)       |\n| `@oaslananka/atlas`       | Registry API and catalog UI for discovering MCP servers                         | [Atlas docs](./docs/packages/atlas.md)             |\n| `@oaslananka/composer`    | Aggregation proxy for multiple backend MCP servers                              | [Composer docs](./docs/packages/composer.md)       |\n| `@oaslananka/bridge`      | OpenAPI and schema-first MCP server generation                                  | [Bridge docs](./docs/packages/bridge.md)           |\n| `@oaslananka/observatory` | Metrics, traces, anomaly detection, alerting, and dashboard UI                  | [Observatory docs](./docs/packages/observatory.md) |\n| `@oaslananka/lab`         | Electron desktop workbench for connecting to and debugging MCP servers          | [Lab docs](./docs/packages/lab.md)                 |\n\n### MCP Lab Screenshot\n\n![MCP Lab desktop screenshot](./assets/lab.png)\n\n## Local Playground\n\nThe reproducible demo path is a local playground with seeded Atlas and Observatory data:\n\n```bash\npnpm install --frozen-lockfile\npnpm build\npnpm run playground:seed\npnpm run playground:atlas\n```\n\nThen start Observatory in another terminal:\n\n```bash\npnpm run playground:observatory\n```\n\nOpen Atlas at [http://localhost:4003](http://localhost:4003), Observatory at [http://localhost:4006](http://localhost:4006), and Lab with `pnpm --filter @oaslananka/lab dev`. Full steps live in the [local playground guide](./docs/guide/playground.md).\n\n## Quick Start\n\n```bash\npnpm install --frozen-lockfile\npnpm build\n\n# Seed and run Atlas\npnpm --filter @oaslananka/atlas exec node dist/cli.js seed --db ./data/atlas.sqlite\npnpm --filter @oaslananka/atlas exec node dist/cli.js serve --db ./data/atlas.sqlite --port 4003\n\n# In another terminal, run Observatory\npnpm --filter @oaslananka/observatory exec node dist/cli.js serve --db ./data/observatory.sqlite --port 4006\n```\n\nOnce the services are up:\n\n- Atlas UI: [http://localhost:4003](http://localhost:4003)\n- Atlas health: [http://localhost:4003/health](http://localhost:4003/health)\n- Observatory UI: [http://localhost:4006](http://localhost:4006)\n- Observatory health: [http://localhost:4006/health](http://localhost:4006/health)\n\n## Architecture\n\n`shared` carries the protocol baseline, logger factory, transports, telemetry helpers, and test fixtures used everywhere else. MCP client-facing traffic is typically wrapped by `sentinel` for policy and audit, then aggregated through `composer`, or orchestrated from `forge`. `atlas` and `observatory` are HTTP-first operator surfaces, while `lab` is the developer-facing desktop entry point.\n\nThe suite currently defaults to MCP protocol version `2025-11-25` while keeping compatibility helpers for `2025-11-05` handshakes during the 1.0 transition.\n\nArchitecture decisions are recorded in the [ADR index](./docs/adr/index.md).\n\n## Development\n\n```bash\nmake install\npnpm run format:check\nmake lint\nmake typecheck\nmake test\npnpm run security\nmake test-coverage\nmake knip\npnpm run release:dry-run\n```\n\nMore setup and workflow guidance lives in [docs/development.md](./docs/development.md), [docs/testing.md](./docs/testing.md), [docs/security.md](./docs/security.md), [docs/release.md](./docs/release.md), the generated API reference path in [docs/api-reference.md](./docs/api-reference.md), and the guide docs under [docs/guide](./docs/guide/introduction.md).\n\n## Release Policy\n\n- release-please manifest mode owns version bumps, changelogs, tags, and GitHub releases.\n- GitHub Actions builds npm package tarballs, a machine-readable release manifest, SBOM, checksums, and attestations from clean checkout state.\n- Production npm publishing is separate, environment-protected, and uses npm trusted publishing/OIDC after checksum, attestation, package-content, and clean-install verification.\n- Partial npm publication is resumable: identical immutable versions are skipped, missing versions publish in dependency order, and integrity conflicts fail closed.\n- Docs-only, internal-only, and CI-only changes do not publish to npm or update registry metadata.\n\n## Contributing\n\nContributions are welcome. Start with [CONTRIBUTING.md](./CONTRIBUTING.md), use Conventional Commits for user-visible changes, and keep GitHub Actions parity when adding validation steps.\nFor issue triage, support, stale handling, labels, and maintainer response targets, see [docs/governance.md](./docs/governance.md).\n\n## Roadmap\n\n- `@oaslananka/gateway`: HTTP-first multi-tenant MCP gateway\n- `@oaslananka/sdk`: cross-language SDK surface starting with Python\n- Forge visual editor built on React Flow\n- Atlas federation across multiple registry instances\n- Observatory exports for Grafana and OTel collector pipelines\n- Sentinel policy integration with OPA\n\n## License\n\nApache 2.0 — © 2025-2026 oaslananka\n",
  "bytes": 8639,
  "sha": "5959efc95b67922f8361fd1ca307081fa3df316d1c3fd1bbbc6f97bddd46ae9e",
  "repo_slug": "oaslananka/mcp-suite",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_oaslananka_sentinel_4e036fe6/readme"
}