Skip to main content

rosetta-mcp

Model Context Protocol (MCP) server for Rosetta (Enterprise Engineering Governance and Instructions Management System)

Powered by RAGFlow for advanced RAG capabilities

This package provides a FastMCP server that connects to Rosetta servers for advanced retrieval-augmented generation (RAG) capabilities. It enables AI assistants like Claude Desktop, Cursor, and other MCP clients to search, retrieve, and manage documents in Rosetta knowledge bases.

Community

Features

  • 🧭 Context Bootstrap - get_context_instructions loads bootstrap rules for agent setup
  • 📚 Instruction Retrieval - query_instructions fetches docs by keyword or tags
  • 🗂️ Instruction Browsing - list_instructions lists folders/files by virtual path prefix
  • 🔗 Instruction Resources - rosetta://{path*} resource template for bundled reads
  • 🌐 Environment-Based Config - Zero configuration, reads from environment variables
  • 🔐 STDIO + HTTP OAuth - API-key runtime plus OAuth proxy support for HTTP transports
  • 📊 Usage Analytics - Built-in PostHog integration for tracking feature adoption (enabled by default, opt-out)

Installation

Using uvx (recommended)

The easiest way to use rosetta-mcp is with uvx, which automatically handles installation:

uvx rosetta-mcp@latest

Using pip

Install globally or in a virtual environment:

pip install rosetta-mcp

Then run:

rosetta-mcp

As a Python Module

You can also run it as a module:

python -m rosetta_mcp

Configuration

Rosetta MCP supports two runtime modes:

  1. STDIO (default) for MCP clients that launch a local process (command + args)
  2. HTTP for remote/server deployment behind OAuth

Complete Environment Variable Reference

Variable Scope Default Notes
ROSETTA_SERVER_URL Runtime (all modes) https://<production server URL>/ Rosetta Server base URL
ROSETTA_API_KEY Runtime (all modes) Empty Required for Rosetta Server access
VERSION Runtime (all modes) r3 Used for instruction dataset resolution (aia-{version})
ROSETTA_TRANSPORT Runtime (all modes) stdio stdio or http
ROSETTA_HTTP_HOST Runtime (HTTP) 0.0.0.0 HTTP bind host
ROSETTA_HTTP_PORT Runtime (HTTP) 8000 HTTP bind port
REDIS_URL Runtime (HTTP) Empty Optional Redis session store; empty uses in-memory store
ROSETTA_ALLOWED_ORIGINS Runtime (HTTP) Empty Comma-separated Origin allowlist
ROSETTA_OAUTH_MODE Runtime (HTTP OAuth) oauth oauth (introspection), oidc (JWT via discovery doc), or github (GitHub OAuth)
ROSETTA_OAUTH_OIDC_CONFIG_URL Runtime (HTTP OAuth, oidc) Empty IdP OIDC discovery URL (e.g. https://keycloak.host/realms/x/.well-known/openid-configuration)
ROSETTA_OAUTH_AUTHORIZATION_ENDPOINT Runtime (HTTP OAuth, oauth) Empty IdP authorize endpoint
ROSETTA_OAUTH_TOKEN_ENDPOINT Runtime (HTTP OAuth, oauth) Empty IdP token endpoint
ROSETTA_OAUTH_INTROSPECTION_ENDPOINT Runtime (HTTP OAuth, oauth) Empty IdP token introspection endpoint
ROSETTA_OAUTH_REVOCATION_ENDPOINT Runtime (HTTP OAuth) Empty IdP token revocation endpoint (optional)
ROSETTA_OAUTH_CLIENT_ID Runtime (HTTP OAuth) Empty Client ID registered with the IdP
ROSETTA_OAUTH_CLIENT_SECRET Runtime (HTTP OAuth) Empty Client secret registered with the IdP
ROSETTA_OAUTH_BASE_URL Runtime (HTTP OAuth) Empty Our public MCP URL for OAuth callbacks; fallback is http://{ROSETTA_HTTP_HOST}:{ROSETTA_HTTP_PORT}
ROSETTA_OAUTH_CALLBACK_PATH Runtime (HTTP OAuth) /auth/callback OAuth callback path mounted by Rosetta MCP
ROSETTA_OAUTH_REQUIRED_SCOPES Runtime (HTTP OAuth) Empty Space-separated scopes required on tokens (e.g. offline_access)
ROSETTA_OAUTH_VALID_SCOPES Runtime (HTTP OAuth, oauth) Empty Space-separated scopes advertised in .well-known; empty = derived from required scopes
ROSETTA_OAUTH_EXTRA_SCOPES Runtime (HTTP OAuth) Empty Space-separated scopes forwarded to IdP authorize endpoint (e.g. openid email offline_access)
ROSETTA_JWT_SIGNING_KEY Runtime (HTTP OAuth) Empty Secret for signing FastMCP JWTs; if unset, derived from client secret
FERNET_KEY Runtime (HTTP OAuth) Empty Fernet key for encrypting OAuth token storage in Redis
ROSETTA_READ_POLICY Runtime (authz) all all or none for non-instruction dataset reads; unsupported values fall back to all
ROSETTA_USER_EMAIL Runtime (authz) rosetta@example.com STDIO identity and HTTP fallback identity
ROSETTA_MODE Runtime (prompts) HARD Prompt mode selection: HARD or SOFT
INSTRUCTION_ROOT_FILTER Runtime (instructions query) Empty Comma-separated root tags filter
ROSETTA_DEBUG Runtime (debug) Disabled Enable debug logs (1, true, yes, on); legacy alias IMS_DEBUG still honored
FASTMCP_LOG_LEVEL Runtime (debug) INFO Set to DEBUG alongside ROSETTA_DEBUG=1 for full FastMCP internals (auth, middleware)
FASTMCP_ENABLE_RICH_LOGGING Runtime (debug) true Set to false to disable Rich formatting — use in production/Grafana to prevent multiline log splitting
POSTHOG_API_KEY Runtime (analytics) Disabled Your PostHog project API key (opt-in, set to enable)
POSTHOG_HOST Runtime (analytics) https://eu.i.posthog.com PostHog endpoint
USER Runtime (analytics context) OS-dependent Username source (priority 1)
USERNAME Runtime (analytics context) OS-dependent Username source (priority 2)
LOGNAME Runtime (analytics context) OS-dependent Username source (priority 3)

Shared Variables (Both Modes)

Variable Description Default
ROSETTA_SERVER_URL Rosetta Server base URL https://<production server URL>/
ROSETTA_API_KEY API key used by Rosetta MCP to access Rosetta Server Required
VERSION Instruction release used for instruction dataset resolution (aia-{version}) r3
ROSETTA_DEBUG Enable debug logging to stderr (1/true/yes/on); legacy alias IMS_DEBUG still honored Disabled
FASTMCP_LOG_LEVEL Set to DEBUG alongside ROSETTA_DEBUG=1 for full FastMCP internals INFO
FASTMCP_ENABLE_RICH_LOGGING Set to false to disable Rich formatting (use in production/Grafana) true
POSTHOG_API_KEY Your PostHog project API key (opt-in, disabled by default) Disabled
POSTHOG_HOST PostHog host https://eu.i.posthog.com

STDIO Mode (Default)

Set:

ROSETTA_TRANSPORT=stdio

STDIO keeps API-key access and does not use OAuth. User identity for authorization checks comes from:

ROSETTA_USER_EMAIL=rosetta@example.com

HTTP Mode

Set:

ROSETTA_TRANSPORT=http
ROSETTA_HTTP_HOST=0.0.0.0
ROSETTA_HTTP_PORT=8000

Optional HTTP runtime settings:

Variable Description Default
REDIS_URL Shared session store for multi-instance deployments In-memory store
ROSETTA_ALLOWED_ORIGINS Comma-separated allowlist for Origin header validation No restriction

OAuth variables for HTTP mode:

Variable Mode Description
ROSETTA_OAUTH_MODE all oauth (default), oidc, or github
ROSETTA_OAUTH_OIDC_CONFIG_URL oidc IdP OIDC discovery URL
ROSETTA_OAUTH_AUTHORIZATION_ENDPOINT oauth IdP authorize URL
ROSETTA_OAUTH_TOKEN_ENDPOINT oauth IdP token URL
ROSETTA_OAUTH_INTROSPECTION_ENDPOINT oauth IdP introspection URL
ROSETTA_OAUTH_REVOCATION_ENDPOINT oauth IdP revocation URL (optional)
ROSETTA_OAUTH_CLIENT_ID all Client ID (IdP or GitHub OAuth App)
ROSETTA_OAUTH_CLIENT_SECRET all Client secret (IdP or GitHub OAuth App)
ROSETTA_OAUTH_BASE_URL all Our public MCP URL for OAuth callbacks
ROSETTA_OAUTH_CALLBACK_PATH all Callback path (default /auth/callback)
ROSETTA_OAUTH_REQUIRED_SCOPES all Space-separated scopes required on tokens (github default: user)
ROSETTA_OAUTH_VALID_SCOPES oauth Space-separated scopes advertised in .well-known
ROSETTA_OAUTH_EXTRA_SCOPES oauth, oidc Space-separated scopes forwarded to IdP authorize
ROSETTA_JWT_SIGNING_KEY all Secret for signing FastMCP JWTs
FERNET_KEY both Fernet key for encrypting token storage in Redis

Authorization policy variables:

Variable Description Default
ROSETTA_READ_POLICY all or none for non-instruction dataset reads; unsupported values fall back to all all
ROSETTA_USER_EMAIL Fallback user email (used in STDIO, and HTTP fallback) rosetta@example.com

OAuth callback URL examples:

  • Production: https://rosetta.example.com/auth/callback
  • Local: http://localhost:8000/auth/callback

Usage with MCP Clients

STDIO Mode (Cursor / Claude / local MCP clients)

Add to .cursor/mcp.json (or equivalent client config):

{
  "mcpServers": {
    "Rosetta": {
      "command": "uvx",
      "args": ["rosetta-mcp@latest"],
      "env": {
        "ROSETTA_TRANSPORT": "stdio",
        "ROSETTA_SERVER_URL": "https://<production server URL>",
        "ROSETTA_API_KEY": "your-rosetta-api-key",
        "ROSETTA_USER_EMAIL": "you@example.com"
      }
    }
  }
}

HTTP Mode (Server deployment)

Start Rosetta MCP in HTTP mode:

ROSETTA_TRANSPORT=http \
ROSETTA_SERVER_URL="https://<production server URL>" \
ROSETTA_API_KEY="your-rosetta-api-key" \
ROSETTA_HTTP_HOST=0.0.0.0 \
ROSETTA_HTTP_PORT=8000 \
ROSETTA_OAUTH_AUTHORIZATION_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/auth" \
ROSETTA_OAUTH_TOKEN_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/token" \
ROSETTA_OAUTH_INTROSPECTION_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/token/introspect" \
ROSETTA_OAUTH_CLIENT_ID="<client-id>" \
ROSETTA_OAUTH_CLIENT_SECRET="<client-secret>" \
ROSETTA_OAUTH_BASE_URL="https://rosetta.example.com" \
rosetta-mcp

For multi-instance deployment with shared session state, add REDIS_URL:

ROSETTA_TRANSPORT=http \
ROSETTA_SERVER_URL="https://<production server URL>" \
ROSETTA_API_KEY="your-rosetta-api-key" \
ROSETTA_HTTP_HOST=0.0.0.0 \
ROSETTA_HTTP_PORT=8000 \
REDIS_URL="redis://localhost:6379/0" \
ROSETTA_OAUTH_AUTHORIZATION_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/auth" \
ROSETTA_OAUTH_TOKEN_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/token" \
ROSETTA_OAUTH_INTROSPECTION_ENDPOINT="https://idp.example.com/realms/<realm>/protocol/openid-connect/token/introspect" \
ROSETTA_OAUTH_CLIENT_ID="<client-id>" \
ROSETTA_OAUTH_CLIENT_SECRET="<client-secret>" \
ROSETTA_OAUTH_BASE_URL="https://rosetta.example.com" \
rosetta-mcp

If your MCP client supports HTTP servers directly, point it to:

http://<host>:<port>/mcp

Minimal HTTP client config shape (client-specific fields may vary):

{
  "mcpServers": {
    "RosettaHTTP": {
      "url": "<rosetta MCP production server URL>"
    }
  }
}

Available MCP Tools

1. get_context_instructions

Load bootstrap context instructions (prep step entry point).

Parameters:

  • topic (str, optional): Brief intent summary (<=10 words), used for tracking only

Example:

get_context_instructions(topic="update readme")

2. query_instructions

Fetch instruction documents from the instruction dataset.

Parameters:

  • query (str, optional): Keyword query
  • tags (list[str], optional): Tag-based query (OR logic)
  • topic (str, optional): Tracking-only intent hint

At least one of query or tags is required.

Validation notes:

  • query: up to 2000 characters
  • tags: up to 50 items, each up to 128 characters
  • single-string tags input must be non-empty

Example:

query_instructions(tags=["bootstrap"])

3. list_instructions

List immediate children under a virtual instruction path without loading file content.

Parameters:

  • full_path_from_root (str): Virtual path prefix such as skills, rules, or workflows, or all to list all instruction files without content

Validation notes:

  • Use "" or / to list the root
  • Use all to list all <rosetta:file /> entries without content
  • all includes a note that duplicate path values are bundled/combined when acquired
  • Use guaranteed unique 3-part/2-part tags to read specific content
  • full_path_from_root must stay relative
  • full_path_from_root must not contain . or .. path segments
  • max length: 512 characters

Example:

list_instructions(full_path_from_root="rules")
list_instructions(full_path_from_root="all")

Resource Template

rosetta://{path*}

Reads bundled instruction content by resource path.

path must be a relative resource path without . or .. path segments. Blank paths are not valid resource URIs.

rosetta://rules/bootstrap-core-policy.md

Development

Local Installation

Install directly from PyPI:

pip install rosetta-mcp

Or for the latest development version, install from source if you have the code locally:

pip install -e .

Running Tests

pip install -e ".[dev]"
pytest

Building for Distribution

python -m build

Docker Image Build

The project includes a GitHub Actions workflow for automated Docker image building and publishing to GCP Artifact Registry.

Version Management: The workflow automatically extracts the version from pyproject.toml during the build process—no manual files or commits needed.

Image Tag Format: {version}-{git-short-sha} (e.g., 2.0.0b59-a1b2c3d)

Image Location: https://hub.docker.com/repository/docker/griddynamics/rosetta-mcp/general

How it works:

  1. Extracts version from pyproject.toml
  2. Passes version to the reusable build workflow via app-version parameter
  3. Builds and tags Docker image as {version}-{git-sha}

Usage Analytics

Rosetta MCP includes built-in usage analytics via PostHog to help understand feature adoption and usage patterns.

Default Behavior

Analytics are disabled by default. No data is collected unless you deploy a PostHog instance and provide its API key.

Enable Analytics

To enable usage analytics, set POSTHOG_API_KEY and POSTHOG_HOST pointing to your PostHog instance:

{
  "mcpServers": {
    "Rosetta": {
      "env": {
        "POSTHOG_API_KEY": "phc_YOUR_PROJECT_API_KEY",
        "POSTHOG_HOST": "https://posthog.internal.company.com"
      }
    }
  }
}

Where to Find Your Project API Key:

  1. Log into your PostHog dashboard
  2. Navigate to: Project SettingsProject API Key
  3. Copy the key (starts with phc_)

Important: Use Project API Key (write-only, for event ingestion), not Personal API Key.

What's Tracked

When enabled, Rosetta records basic operational metadata that matches information already flowing through the MCP server — no additional data is surfaced.

Per tool call:

  • IP address (from the HTTP request)
  • User email (from OAuth in HTTP mode) or local username (from OS environment in STDIO mode)
  • Coding agent name and version (e.g. Claude Code 1.0.17)
  • MCP tool called (e.g. query_instructions) and tool parameters
  • MCP server version, session ID, call duration, success/error status

Excluded (stripped by before_send hook):

  • limit, offset, page — pagination
  • compact_view — view settings
  • model, temperature, max_tokens — RAG tuning parameters

Privacy & Control

  • Opt-in: Analytics disabled by default, enable by setting POSTHOG_API_KEY
  • Self-hosted: You deploy and control the PostHog instance on your infrastructure
  • Write-only: Project API key can only send events, cannot read analytics data
  • Non-blocking: Analytics never delays or breaks MCP tool responses

Requirements

  • Python >= 3.10
  • Rosetta Server running and accessible
  • ragflow-sdk >= 0.24.0
  • mcp >= 1.26.0
  • posthog >= 7.0.0 (for built-in analytics)

License

Apache-2.0 - see LICENSE file for details.

This package is built on RAGFlow by InfiniFlow, which is licensed under the Apache-2.0 License. We gratefully acknowledge the RAGFlow project and its contributors.

Links

Support

For issues and questions, visit the package page: https://pypi.org/project/rosetta-mcp/

Release files for rosetta-mcp 3.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rosetta-mcp 3.0.5
File Size Uploaded
rosetta_mcp-3.0.5.tar.gz 253.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rosetta-mcp 3.0.5
File Interpreter ABI Platform
rosetta_mcp-3.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 468.4 kB

Release files / rosetta_mcp-3.0.5.tar.gz

Download URL rosetta_mcp-3.0.5.tar.gz
Size 253.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3e0bd3c3f66274c540013fcd25682685f09e28c78ecc3d0c2c21c0d8e9763584
BLAKE2b-256 checksum
How to use checksums
c3b29dafdd4cdc27baf10b454f0e23f8ff5a78daf3928b639150248e62dda380
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / rosetta_mcp-3.0.5-py3-none-any.whl

Download URL rosetta_mcp-3.0.5-py3-none-any.whl
Size 214.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b92afd37b7b9f72bf9b26fb4e1cf6191d82c86825c67ccc8fbda0874c485a51
BLAKE2b-256 checksum
How to use checksums
34bd12588bdf923ca2a7e6fb60f4d68d801b14962583079711423d2d14391cab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

3.0.5 This release

2 release files

3.0.4

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.29

2 release files

2.0.28

2 release files

2.0.27

2 release files

2.0.26

2 release files

2.0.25

2 release files

2.0.23

2 release files

2.0.21

2 release files

2.0.18

2 release files

2.0.17

2 release files

2.0.13

2 release files

2.0.12

2 release files

2.0.11

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.2

2 release files

2.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page