Observable agent workspace control plane for MCP servers, FastMCP gateways, packs, profiles, skills, prompts, resources, and client syncs.
Project description
Rosetta MCP Observable Platform
Rosetta MCP is a scaffold for an observable agent workspace control plane. It manages MCP servers, FastMCP gateway profiles, client syncs, packs, skills, prompts, resources, instruction files, env requirements, and infra.
What is included
- Rich/Typer CLI
- FastAPI control plane
- FastMCP gateway skeleton
- Generic graph runtime wrappers for LangGraph/LangChain runnables
- Live LangChain
create_agent(...)demos with Rosetta-injected MCP tools, prompts, resources, blobs, transforms, and local/LangSmith trace metadata - MCP discovery and inspection helpers
- Codex, Deep Agents, and LangChain render targets
- AGENTS.md, CLAUDE.md, SKILL.md, prompt rendering
- Postgres + Alembic scaffold
- Infra folder with Postgres, OTel Collector, Prometheus, Grafana, and Jaeger
- Unit, integration, API, and e2e test scaffolding
- Universal core components for IDs, results, context, security, and pagination
- Observability layer with structlog, Rich, OpenTelemetry, and Prometheus helpers
Install
From PyPI, the planned distribution name is rosetta-mcp-workspace:
python -m pip install "rosetta-mcp-workspace[all]"
The import package remains rosetta_mcp and the console command remains
rosetta.
For local development:
pdm install -G :all -d -G :all
That installs all project extras plus all dependency groups. For a smaller day-to-day install, select only the groups you need, for example:
pdm install -G dev -G api -G mcp -G langchain
Copy .env.example to .env for live LLM/MCP traces. Keep real
values local; .env is ignored by git.
Validate
Fast syntax and scaffold checks:
make verify-fast
Full validation after installing all groups:
make verify
CLI examples
pdm run rosetta init --scope project
pdm run rosetta add context7 -- npx -y @upstash/context7-mcp
pdm run rosetta list
pdm run rosetta obs config
pdm run rosetta platform doctor
pdm run rosetta verify quick
pdm run rosetta verify plan --no-pytest
pdm run rosetta prompt list
pdm run rosetta skill render mcp-inspection
pdm run rosetta instructions render --target agents
pdm run rosetta fastmcp sync --targets mcp-json,codex,langchain --mode gateway --write
Documentation
The docs build with Sphinx, MyST Markdown, autodoc, Napoleon, and type-hint rendering:
pdm install -G docs
pdm run sphinx-build -W -b html docs docs/_build/html
For local live preview:
pdm run sphinx-autobuild docs docs/_build/html
Read the Docs configuration lives in .readthedocs.yaml.
Graph runtime and live LLM traces
Rosetta includes a generic graph runtime kit under
rosetta_mcp.graph_runtime. It is not a broad agent layer. It is the
connective tissue between Rosetta registry/profile selections and graph-like
runtimes:
- wrap an existing compiled graph or runnable with
RosettaGraphHandle - compile one minimal LangChain v1
create_agent(...)graph with selected MCP tools and injected context - pass stable runnable config with
thread_id, tags, metadata, and trace flags - inject selected prompts/resources/blobs as system text, messages, state, or availability metadata
- preview FastMCP transform selections such as namespace, visibility, resources-as-tools, and prompts-as-tools
Preview the graph runtime configuration without calling an LLM:
pdm run rosetta graph config \
--name rosetta-agent \
--server-mode gateway_only \
--prompt runtime-contract \
--prompt-mode system \
--resource resource://rosetta/demo/integration-goal \
--resource-mode system \
--resources-as-tools \
--prompts-as-tools \
--trace
Call the real Rosetta gateway status MCP tool and print a local trace:
pdm run rosetta graph status --local-trace
Compile a live LangChain agent, let the LLM call the gateway status tool, and print the message/tool trace:
pdm run rosetta graph agent-smoke --local-trace
Run the richer proof that combines a real MCP tool, local tools, prompt injection, resource/blob injection, transform metadata, and trace output:
pdm run rosetta graph rich-demo --local-trace
Use --langsmith instead of --local-trace only when LANGSMITH_API_KEY is
set and you want hosted LangSmith traces. Use repeated --env-file PATH to
load additional env files before .env, .env.llm, and .env.mcp.
More detail: Graph Runtime.
Release Status
This repository is configured for standard Python builds and PyPI trusted
publishing. The original rosetta-mcp package name is already occupied on PyPI
by a different project, so this repository uses rosetta-mcp-workspace as its
publishable distribution name.
Release docs: Release And Publishing.
API and gateway listeners
The default root workflow avoids trapping you in foreground listeners.
make up,make obs,make down,make status, andmake logsoperate on detached infra services.- Foreground app listeners are explicit:
make serve-apiandmake serve-gateway. - Optional local background app listeners are explicit:
make api-bgandmake gateway-bg.
Run the API in the foreground:
make serve-api
# or
pdm run rosetta api serve
Run the gateway in the foreground:
make serve-gateway
Run local app listeners in the background with pid/log files:
make api-bg
make gateway-bg
make app-status
make app-logs
make app-stop
Smoke test API endpoints:
curl http://127.0.0.1:8765/health
curl http://127.0.0.1:8765/observability/config
curl http://127.0.0.1:8765/platform/info
curl http://127.0.0.1:8765/verification/plan
Makefile quickstart
The root Makefile is ergonomic. Infra implementation still lives in infra/Makefile, but common commands work from the repo root:
make setup # install deps, create infra env, run fast checks
make up # start Postgres in the background
make obs # start Postgres + OTel + Prometheus + Grafana + Jaeger in the background
make status # show compose service status
make logs # tail infra logs
make migrate # run Alembic migrations
make psql # open psql
make serve-api # run FastAPI in the foreground
make serve-gateway # run FastMCP gateway in the foreground
make api-bg # optional: run FastAPI in background, log to .rosetta/run/api.log
make gateway-bg # optional: run gateway in background, log to .rosetta/run/gateway.log
make app-stop # stop background local app listeners
make down # stop infra
Namespaced aliases still work:
make infra-up
make infra-migrate
make infra-psql
make db-up
make db-migrate
make obs-up
Open after make obs:
- Grafana: http://localhost:3000
- Prometheus: http://localhost:9090
- Jaeger: http://localhost:16686
Design
Rosetta treats tools, prompts, resources, skills, templates, env requirements, runtimes, and policies as first-class workspace objects. The gateway is the normal interface for clients, while direct config rendering remains a debugging fallback.
The graph runtime layer keeps that same shape for agents: selectors and injection settings are explicit, external graphs are wrapped rather than mutated, and Rosetta-created LangChain agents receive tools/context before compile.
Current root workflow fixes
Use the root Makefile for normal work:
make setup
make up
make migrate
make status
make serve-api
Notes:
make compileusespdm run python, so it works even when the shell has no globalpythonexecutable.make migratedelegates toinfra/Makefile, waits for Postgres, and passesROSETTA_MCP_SYNC_DATABASE_URLbased oninfra/.env.- Docker Postgres defaults to host port
55432; Alembic no longer trieslocalhost:5432unless you overridePOSTGRES_PORT. - Foreground listeners are explicit: use
make serve-apiormake serve-gateway.make apiandmake gatewayremain compatibility aliases. - If an old Docker volume has a different Postgres password, run
make reset.
Built-in catalog workflow
Rosetta includes a starter catalog of common MCP servers, packs, and profiles. Use these to bootstrap a workspace without hand-writing every config.
pdm run rosetta catalog servers
pdm run rosetta pack list
pdm run rosetta profile list
# Install recommended workspace servers into the project registry.
pdm run rosetta profile install workspace
# Or install a focused pack.
pdm run rosetta pack install mcp-dev-pack
# Render gateway configs after installing servers.
pdm run rosetta fastmcp sync --targets mcp-json,codex,langchain --mode gateway --write
Useful profiles:
workspace- filesystem, git, context7, sqlite, with safe defaults.research- web/paper/documentation discovery tools.data- database inspection with conservative mutation policy.mcp-dev- MCP authoring, inspection, and client config generation.deploy-readonly- explicit infrastructure inspection profile.
Gateway helper commands:
pdm run rosetta gateway explain
pdm run rosetta gateway tools
pdm run rosetta gateway resources
pdm run rosetta gateway prompts
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rosetta_mcp_workspace-0.4.0.tar.gz.
File metadata
- Download URL: rosetta_mcp_workspace-0.4.0.tar.gz
- Upload date:
- Size: 90.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75f049fbbb2efe3b7bb66d6f70e22acea5cf4ce978fb76a7b491547da4845bb7
|
|
| MD5 |
94e70c8c617ab14177b7b12fc150d35e
|
|
| BLAKE2b-256 |
2ab4a7ec3509ba493719e0fc006bd882b5eb6ebf7f0a5b3bc0cceddc610b5579
|
Provenance
The following attestation bundles were made for rosetta_mcp_workspace-0.4.0.tar.gz:
Publisher:
release.yml on pr1m8/rosetta-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rosetta_mcp_workspace-0.4.0.tar.gz -
Subject digest:
75f049fbbb2efe3b7bb66d6f70e22acea5cf4ce978fb76a7b491547da4845bb7 - Sigstore transparency entry: 1512272496
- Sigstore integration time:
-
Permalink:
pr1m8/rosetta-mcp@11f1ea1b8442273332c574410b382eed50f0a31c -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/pr1m8
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11f1ea1b8442273332c574410b382eed50f0a31c -
Trigger Event:
push
-
Statement type:
File details
Details for the file rosetta_mcp_workspace-0.4.0-py3-none-any.whl.
File metadata
- Download URL: rosetta_mcp_workspace-0.4.0-py3-none-any.whl
- Upload date:
- Size: 109.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8eb81ed60f5f53c0e2315c8f275816faee066fb872318fa2fe3685b6453ee244
|
|
| MD5 |
81ab8ef9e03100fc67a2dd68b96c15b6
|
|
| BLAKE2b-256 |
fb057d72c2348b879e195ca053fb57b1e3c90227650eaebea4b30ed60f178c64
|
Provenance
The following attestation bundles were made for rosetta_mcp_workspace-0.4.0-py3-none-any.whl:
Publisher:
release.yml on pr1m8/rosetta-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rosetta_mcp_workspace-0.4.0-py3-none-any.whl -
Subject digest:
8eb81ed60f5f53c0e2315c8f275816faee066fb872318fa2fe3685b6453ee244 - Sigstore transparency entry: 1512272565
- Sigstore integration time:
-
Permalink:
pr1m8/rosetta-mcp@11f1ea1b8442273332c574410b382eed50f0a31c -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/pr1m8
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@11f1ea1b8442273332c574410b382eed50f0a31c -
Trigger Event:
push
-
Statement type: