Metadata-Version: 2.4
Name: pycycle-mcp
Version: 0.1.0
Summary: An MCP around pyCycle/OpenMDAO cycle workflows
Author-email: The Design Research Collective <ask-drc@cmu.edu>
Maintainer-email: Mayank Dixit <mayankd@andrew.cmu.edu>, Christopher McComb <ccm@cmu.edu>
Project-URL: Homepage, https://github.com/cmudrc/pycycle-mcp
Project-URL: Repository, https://github.com/cmudrc/pycycle-mcp
Project-URL: Issues, https://github.com/cmudrc/pycycle-mcp/issues
Project-URL: Documentation, https://cmudrc.github.io/pycycle-mcp/
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: anyio<5.0.0,>=4.0.0
Requires-Dist: fastmcp~=2.13.1
Requires-Dist: pydantic<3.0.0,>=2.6.0
Requires-Dist: numpy>=1.26
Provides-Extra: full
Requires-Dist: openmdao>=3.27.0; extra == "full"
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"
Requires-Dist: pytest-cov>=4.1; extra == "dev"
Requires-Dist: mypy>=1.11; extra == "dev"
Requires-Dist: ruff>=0.6.0; extra == "dev"
Requires-Dist: sphinx>=8.0; extra == "dev"
Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "dev"
Requires-Dist: build>=1.2.0; extra == "dev"
Requires-Dist: twine>=5.1.0; extra == "dev"
Requires-Dist: pre-commit>=3.8.0; extra == "dev"
Dynamic: license-file

# pycycle-mcp

[![CI](https://github.com/cmudrc/pycycle-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/cmudrc/pycycle-mcp/actions/workflows/ci.yml)
[![Docs](https://github.com/cmudrc/pycycle-mcp/actions/workflows/docs-pages.yml/badge.svg)](https://github.com/cmudrc/pycycle-mcp/actions/workflows/docs-pages.yml)
[![Examples](https://github.com/cmudrc/pycycle-mcp/actions/workflows/examples.yml/badge.svg)](https://github.com/cmudrc/pycycle-mcp/actions/workflows/examples.yml)

`pycycle-mcp` is a lightweight Model Context Protocol server for pyCycle/OpenMDAO
engine-cycle workflows. The repository includes deterministic examples/tests so
local development and CI can validate tooling contracts without requiring a full
runtime installation of pyCycle/OpenMDAO assets.

## Overview

The project currently provides:

- A FastMCP-powered server with stdio and HTTP-compatible transports.
- Tooling for cycle lifecycle, variable inspection/updates, execution, sweeps,
  and total-derivative evaluation.
- Pydantic-backed validation with structured MCP-style error payloads.
- Deterministic examples for repository scaffolding checks and smoke tests.

## Quickstart

Requires Python 3.12+.

```bash
python3 -m venv .venv
source .venv/bin/activate
make dev
make test
make ci
```

Start the server over stdio:

```bash
pycycle-mcp --transport stdio
```

Inspect the non-blocking HTTP transport configuration example:

```bash
PYTHONPATH=src python3 examples/server/http_launch_config.py
```

## Examples

The examples are deterministic and aligned with the current repository
contracts.

- Examples index: [`examples/README.md`](examples/README.md)
- Tool discovery: [`examples/client/tool_discovery.py`](examples/client/tool_discovery.py)
- Session lifecycle: [`examples/cpacs/session_lifecycle.py`](examples/cpacs/session_lifecycle.py)
- Export snapshot: [`examples/cpacs/export_snapshot.py`](examples/cpacs/export_snapshot.py)

## Docs

- Docs source: [`docs/index.rst`](docs/index.rst)
- Published docs (placeholder): <https://cmudrc.github.io/pycycle-mcp/>

Build the docs locally with:

```bash
make docs
```

## Python API Rename

The package import root is now:

- `pycycle_mcp` (new)

Legacy pre-rename import paths and CLI aliases are intentionally
removed.

## Contributing

Contribution guidelines live in [`CONTRIBUTING.md`](CONTRIBUTING.md).
