PHPackages                             survos/mcp-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. survos/mcp-bundle

ActiveSymfony-bundle[HTTP &amp; Networking](/categories/http)

survos/mcp-bundle
=================

Exposes a Survos app to AI coding agents as MCP tools (via symfony/ai-mate). Tools are thin wrappers over existing console exports (meta:export, atlas:export, dataset:\*), giving agents a queryable view of the app's declared metadata graph and its dataset workflows.

2.10.19(2w ago)030MITPHPPHP ^8.5

Since Apr 1Pushed 1w agoCompare

[ Source](https://github.com/survos/mcp-bundle)[ Packagist](https://packagist.org/packages/survos/mcp-bundle)[ GitHub Sponsors](https://github.com/kbond)[ RSS](/packages/survos-mcp-bundle/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (90)Versions (110)Used By (0)

Survos MCP Bundle
=================

[](#survos-mcp-bundle)

Exposes a Survos application to AI coding agents as **MCP tools**, via [symfony/ai-mate](https://github.com/symfony/ai-mate).

The goal: when an agent is asked to *"design a dashboard for a tenant"* or *"show me how to display this entity's fields"*, it can query the app's **declared metadata** (field-bundle `#[Field]` / `#[RouteMeta]` / `#[RouteIdentity]`, atlas's route/entity graph) instead of guessing from variable names — and it can drive dataset workflows (`dataset:head`, `import:convert`) by intent.

> **Status: repurposed scaffold (2026-06).** This bundle previously held an experimental MCP *client* (JSON-RPC over Symfony HttpClient). That code was removed: the official [`mcp/sdk`](https://packagist.org/packages/mcp/sdk)`Mcp\Client` fully supersedes it (typed results, cursor pagination, progress callbacks, HTTP **and** stdio transports, and it accepts a PSR-18 client — so you can still pass Symfony's `Psr18Client`). The bundle now goes the *other*direction: it **provides** tools to an agent. See [PLAN.md](PLAN.md) for the full design and build steps.

Architecture
------------

[](#architecture)

- **Transport = ai-mate.** This bundle declares `extra.ai-mate.scan-dirs: ["src/Mcp"]`and ships `#[McpTool]` classes (`Mcp\Capability\Attribute\McpTool`, from `mcp/sdk`).
- **Tools wrap existing exports — they don't reinvent them.** `meta:export`(field-bundle) and `atlas:export` (atlas-bundle) already emit the metadata graph; the dataset commands already exist. MCP tools call them.
- **Why wrappers, not services:** ai-mate builds its **own** standalone container and never boots the app kernel, so a `#[McpTool]` cannot autowire app compile-time services (`EntityMetaRegistry`, `DatasetResolver`, …). Each tool therefore runs `bin/console  --format=json` via `symfony/process` and returns the parsed JSON. The in-app console command is the real engine.

Tools (planned — see PLAN.md)
-----------------------------

[](#tools-planned--see-planmd)

ToolWrapsAnswers`describe_entity``meta:export --entity --fields`fields, facets, widgets, URL identity for displaying an entity`routes_for_entity``meta:export --entity`routes by `Purpose` — "design a dashboard for a tenant"`find_routes_injecting`meta + atlasroutes that inject an entity (declared + inferred candidates)`suggest_pages``meta:export` gapsmissing routes worth adding`atlas_attributes` / `atlas_query``atlas:export`the raw attribute/route/entity map`dataset_head` / `dataset_list` / `dataset_convert``dataset:*` / `import:convert`dataset workflows by intent`survos_command`any `bin/console`generic long-tail fallbackInstallation
------------

[](#installation)

```
composer require survos/mcp-bundle
```

Then, in the host app: register the bundle, run `vendor/bin/mate discover`, and enable the extension in `mate/extensions.php`. Verify with `vendor/bin/mate debug:capabilities --format=json`.

Requires
--------

[](#requires)

PHP 8.4+, Symfony 8.1+. Extends `Survos\Kit\AbstractSurvosBundle`.

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance91

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

109

Last Release

16d ago

PHP version history (2 changes)2.0.215PHP ^8.4

2.9.3PHP ^8.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/21b39551f92ed4143772c622f9e571589c5a72c96ab3c53fe67489ce0d83e806?d=identicon)[tacman1123](/maintainers/tacman1123)

---

Top Contributors

[![tacman](https://avatars.githubusercontent.com/u/619585?v=4)](https://github.com/tacman "tacman (8 commits)")

---

Tags

symfonymcpaimetadataAgenttoolingai-mate

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/survos-mcp-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/survos-mcp-bundle/health.svg)](https://phpackages.com/packages/survos-mcp-bundle)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
