Skip to main content

CLI tool for creating and managing FIPS-compliant AI agent projects

Project description

FIPS Agents CLI

A command-line tool for creating and managing FIPS-compliant AI agent projects, with a focus on MCP (Model Context Protocol) server development.

Features

  • ๐Ÿš€ Quick project scaffolding from templates
  • ๐Ÿ“ฆ MCP server project generation
  • ๐Ÿ”ง Automatic project customization
  • โšก Component generation (tools, resources, prompts, middleware)
  • ๐ŸŽจ Beautiful CLI output with Rich
  • โœ… Git repository initialization
  • ๐Ÿงช Comprehensive test coverage with auto-run

Installation

Using pipx (Recommended)

pipx install fips-agents-cli

Using pip

pip install fips-agents-cli

From Source (Development)

# Clone the repository
git clone https://github.com/rdwj/fips-agents-cli.git
cd fips-agents-cli

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in editable mode with dev dependencies
pip install -e .[dev]

Quick Start

Create a new MCP server project

fips-agents create mcp-server my-awesome-server

This will:

  1. Clone the MCP server template
  2. Customize the project with your chosen name
  3. Initialize a git repository
  4. Provide next steps for development

Specify a target directory

fips-agents create mcp-server my-server --target-dir ~/projects

Skip git initialization

fips-agents create mcp-server my-server --no-git

Generate components in an existing project

# Navigate to your MCP server project
cd my-mcp-server

# Generate a new tool
fips-agents generate tool search_documents --description "Search through documents"

# Generate a resource
fips-agents generate resource config_data --description "Application configuration"

# Generate a prompt
fips-agents generate prompt code_review --description "Review code for best practices"

# Generate middleware
fips-agents generate middleware auth_middleware --description "Authentication middleware"

Usage

Basic Commands

# Display version
fips-agents --version

# Get help
fips-agents --help
fips-agents create --help
fips-agents create mcp-server --help
fips-agents generate --help
fips-agents generate tool --help

Create MCP Server

fips-agents create mcp-server <project-name> [OPTIONS]

Arguments:

  • project-name: Name for your MCP server project (must start with lowercase letter, contain only lowercase letters, numbers, hyphens, and underscores)

Options:

  • --target-dir, -t PATH: Target directory for the project (default: current directory)
  • --no-git: Skip git repository initialization
  • --help: Show help message

Examples:

# Create in current directory
fips-agents create mcp-server my-mcp-server

# Create in specific directory
fips-agents create mcp-server my-server -t ~/projects

# Create without git initialization
fips-agents create mcp-server my-server --no-git

Generate Components

The generate command group allows you to scaffold MCP components (tools, resources, prompts, middleware) in existing MCP server projects.

Important: Run these commands from within your MCP server project directory.

Generate Tool

fips-agents generate tool <name> [OPTIONS]

Arguments:

  • name: Tool name in snake_case (e.g., search_documents, fetch_data)

Options:

  • --description, -d TEXT: Tool description
  • --async/--sync: Generate async or sync function (default: async)
  • --with-context: Include FastMCP Context parameter
  • --with-auth: Include authentication decorator
  • --params PATH: JSON file with parameter definitions
  • --read-only: Mark as read-only operation (default: true)
  • --idempotent: Mark as idempotent (default: true)
  • --open-world: Mark as open-world operation
  • --return-type TEXT: Return type annotation (default: str)
  • --dry-run: Show what would be generated without creating files

Examples:

# Basic tool generation
fips-agents generate tool search_documents --description "Search through documents"

# Tool with context and authentication
fips-agents generate tool fetch_user_data --description "Fetch user data" --with-context --with-auth

# Tool with parameters from JSON file
fips-agents generate tool advanced_search --params params.json

# Sync tool with custom return type
fips-agents generate tool process_data --sync --return-type "dict[str, Any]"

# Dry run to preview
fips-agents generate tool test_tool --description "Test" --dry-run

Generate Resource

fips-agents generate resource <name> [OPTIONS]

Arguments:

  • name: Resource name in snake_case (e.g., config_data, user_profile)

Options:

  • --description, -d TEXT: Resource description
  • --async/--sync: Generate async or sync function (default: async)
  • --with-context: Include FastMCP Context parameter
  • --uri TEXT: Resource URI (default: resource://<name>)
  • --mime-type TEXT: MIME type for resource (default: text/plain)
  • --dry-run: Show what would be generated without creating files

Examples:

# Basic resource
fips-agents generate resource config_data --description "Application configuration"

# Resource with custom URI
fips-agents generate resource user_profile --uri "resource://users/{id}" --description "User profile data"

# Resource with specific MIME type
fips-agents generate resource json_config --mime-type "application/json"

Generate Prompt

fips-agents generate prompt <name> [OPTIONS]

Arguments:

  • name: Prompt name in snake_case (e.g., code_review, summarize_text)

Options:

  • --description, -d TEXT: Prompt description
  • --params PATH: JSON file with parameter definitions
  • --with-schema: Include JSON schema in prompt
  • --dry-run: Show what would be generated without creating files

Examples:

# Basic prompt
fips-agents generate prompt code_review --description "Review code for best practices"

# Prompt with parameters
fips-agents generate prompt summarize_text --params params.json --with-schema

Generate Middleware

fips-agents generate middleware <name> [OPTIONS]

Arguments:

  • name: Middleware name in snake_case (e.g., auth_middleware, rate_limiter)

Options:

  • --description, -d TEXT: Middleware description
  • --async/--sync: Generate async or sync function (default: async)
  • --dry-run: Show what would be generated without creating files

Examples:

# Basic middleware
fips-agents generate middleware auth_middleware --description "Authentication middleware"

# Sync middleware
fips-agents generate middleware rate_limiter --sync --description "Rate limiting middleware"

Parameters JSON Schema

When using --params flag, provide a JSON file with parameter definitions:

[
  {
    "name": "query",
    "type": "str",
    "description": "Search query",
    "required": true,
    "min_length": 1,
    "max_length": 100
  },
  {
    "name": "limit",
    "type": "int",
    "description": "Maximum results to return",
    "required": false,
    "default": 10,
    "ge": 1,
    "le": 100
  }
]

Supported Types:

  • str, int, float, bool
  • list[str], list[int], list[float]
  • Optional[str], Optional[int], Optional[float], Optional[bool]

Pydantic Field Constraints:

  • min_length, max_length (for strings)
  • ge, le, gt, lt (for numbers)
  • pattern (for regex validation on strings)
  • default (default value when optional)

Project Name Requirements

Project names must follow these rules:

  • Start with a lowercase letter
  • Contain only lowercase letters, numbers, hyphens (-), and underscores (_)
  • Not be empty

Valid examples: my-server, test_mcp, server123, my-awesome-mcp-server

Invalid examples: MyServer (uppercase), 123server (starts with number), my@server (special characters)

After Creating a Project

Once your project is created, follow these steps:

# 1. Navigate to your project
cd my-mcp-server

# 2. Create and activate virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# 3. Install the project
pip install -e .[dev]

# 4. Run tests
pytest

# 5. Start developing!
# Edit src/my_mcp_server/ files to add your functionality

Development

Setup Development Environment

# Clone the repository
git clone https://github.com/rdwj/fips-agents-cli.git
cd fips-agents-cli

# Create virtual environment
python -m venv venv
source venv/bin/activate

# Install with dev dependencies
pip install -e .[dev]

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=fips_agents_cli --cov-report=html

# Run specific test file
pytest tests/test_create.py

# Run specific test
pytest tests/test_create.py::TestCreateMcpServer::test_successful_creation

Code Quality

# Format code with Black
black src tests

# Lint with Ruff
ruff check src tests

# Type checking (if using mypy)
mypy src

Project Structure

fips-agents-cli/
โ”œโ”€โ”€ pyproject.toml          # Project configuration
โ”œโ”€โ”€ README.md               # This file
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ fips_agents_cli/
โ”‚       โ”œโ”€โ”€ __init__.py     # Package initialization
โ”‚       โ”œโ”€โ”€ __main__.py     # Entry point for python -m
โ”‚       โ”œโ”€โ”€ cli.py          # Main CLI application
โ”‚       โ”œโ”€โ”€ version.py      # Version information
โ”‚       โ”œโ”€โ”€ commands/       # CLI command implementations
โ”‚       โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚       โ”‚   โ””โ”€โ”€ create.py   # Create command
โ”‚       โ””โ”€โ”€ tools/          # Utility modules
โ”‚           โ”œโ”€โ”€ __init__.py
โ”‚           โ”œโ”€โ”€ filesystem.py  # Filesystem operations
โ”‚           โ”œโ”€โ”€ git.py         # Git operations
โ”‚           โ””โ”€โ”€ project.py     # Project customization
โ””โ”€โ”€ tests/                  # Test suite
    โ”œโ”€โ”€ __init__.py
    โ”œโ”€โ”€ conftest.py         # Pytest fixtures
    โ”œโ”€โ”€ test_create.py      # Create command tests
    โ”œโ”€โ”€ test_filesystem.py  # Filesystem utilities tests
    โ””โ”€โ”€ test_project.py     # Project utilities tests

Requirements

  • Python 3.10 or higher
  • Git (for cloning templates and initializing repositories)

Dependencies

  • click (>=8.1.0): Command-line interface creation
  • rich (>=13.0.0): Terminal output formatting
  • gitpython (>=3.1.0): Git operations
  • tomlkit (>=0.12.0): TOML file manipulation
  • jinja2 (>=3.1.2): Template rendering for component generation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (pytest)
  5. Format code (black src tests)
  6. Commit your changes (git commit -m 'Add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

Troubleshooting

Git not found

If you see "Git is not installed" error:

Directory already exists

If you see "Directory already exists" error:

  • Choose a different project name
  • Remove the existing directory: rm -rf project-name
  • Use a different target directory with --target-dir

Template clone fails

If template cloning fails:

"Not in an MCP server project directory"

When using generate commands:

  • Ensure you're running the command from within an MCP server project
  • Check that pyproject.toml exists with fastmcp dependency
  • If the project wasn't created with fips-agents create mcp-server, generator templates may be missing

"Component already exists"

If you see this error:

  • Choose a different component name
  • Manually remove the existing component file from src/<component-type>/
  • Check the component type directory for existing files

Invalid component name

Component names must:

  • Be valid Python identifiers (snake_case)
  • Not be Python keywords (for, class, etc.)
  • Start with a letter or underscore
  • Contain only letters, numbers, and underscores

License

MIT License - see LICENSE file for details

Links

Changelog

Version 0.1.1 (Current)

  • Added fips-agents generate command group
  • Component generation: tools, resources, prompts, middleware
  • Jinja2-based template rendering
  • Parameter validation and JSON schema support
  • Auto-run pytest on generated components
  • Dry-run mode for previewing changes
  • Comprehensive error handling and validation

Version 0.1.0 (MVP)

  • Initial release
  • fips-agents create mcp-server command
  • Template cloning and customization
  • Git repository initialization
  • Comprehensive test suite
  • Beautiful CLI output with Rich

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fips_agents_cli-0.1.1.tar.gz (68.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fips_agents_cli-0.1.1-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file fips_agents_cli-0.1.1.tar.gz.

File metadata

  • Download URL: fips_agents_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 68.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fips_agents_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d4e6a32fc369a403cc684afbf253e1bbc002d5811a4b2e9022765bde3ae4e764
MD5 efd473d1d247d313092fae9486ba81b5
BLAKE2b-256 749a5132f507465f7552b37a63352c462ffb3730c6039f65523732e2736652a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fips_agents_cli-0.1.1.tar.gz:

Publisher: workflow.yaml on rdwj/fips-agents-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fips_agents_cli-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fips_agents_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d6746b4f1db42db498c1a5faa8ada8807b60b23cff048b0ed4715f926d178cb
MD5 652db610cbcedd15f390d22a595babd1
BLAKE2b-256 7a925f80e4f5477048f53fe985ede0d46c1c292bfd1b7ab50b28d90aaa8c6da3

See more details on using hashes here.

Provenance

The following attestation bundles were made for fips_agents_cli-0.1.1-py3-none-any.whl:

Publisher: workflow.yaml on rdwj/fips-agents-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page