# 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
**Recommended:** Install with [pipx](https://pipx.pypa.io/) for isolated command-line tools:
```bash
pipx install fips-agents-cli
```
pipx installs the CLI in an isolated environment while making it globally available. This prevents dependency conflicts with other Python packages.
<details>
<summary><b>Alternative: Using pip</b></summary>
If you prefer pip or don't have pipx installed:
```bash
pip install fips-agents-cli
```
**Note:** Consider using a virtual environment to avoid dependency conflicts.
</details>
<details>
<summary><b>Alternative: Install from source (for development)</b></summary>
For contributing or local development:
```bash
# 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]
```
</details>
## Quick Start
### Create a new MCP server project
```bash
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
```bash
fips-agents create mcp-server my-server --target-dir ~/projects
```
### Skip git initialization
```bash
fips-agents create mcp-server my-server --no-git
```
### Generate components in an existing project
```bash
# 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
```bash
# 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
```bash
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:**
```bash
# 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
```bash
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:**
```bash
# 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
```bash
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:**
```bash
# 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
```bash
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:**
```bash
# 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
```bash
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:**
```bash
# 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:
```json
[
{
"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:
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# 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:
- **macOS**: `brew install git`
- **Linux**: `sudo apt-get install git` or `sudo yum install git`
- **Windows**: Download from https://git-scm.com/downloads
### 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:
- Check your internet connection
- Verify the template repository is accessible: https://github.com/rdwj/mcp-server-template
- Try again later if GitHub is experiencing issues
### "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
- **Repository**: https://github.com/rdwj/fips-agents-cli
- **Issues**: https://github.com/rdwj/fips-agents-cli/issues
- **MCP Protocol**: https://modelcontextprotocol.io/
## Changelog
### Version 0.1.6
- Feature: Added `fips-agents patch` command for selective template updates without losing custom code
- Feature: Resource subdirectory support - organize resources in hierarchies (e.g., `country-profiles/japan`)
- Feature: `generate resource` now supports subdirectory paths for better organization
- Improvement: Recursive resource loading from subdirectories with automatic discovery
- Improvement: Patch command shows interactive diffs for files that may be customized
- Improvement: Template version tracking enables smart updates via `.template-info` file
- Enhancement: Cleaned up redundant auto-discovery code from template `__init__.py` files
### Version 0.1.5
- Feature: Added `.template-info` file to track CLI version and template commit hash in generated projects
- Improvement: Implemented auto-discovery for tools/resources/prompts/middleware components, eliminating manual registration in `__init__.py` files
- Improvement: Template components can now be added or removed by simply creating/deleting filesβno registry updates required
### Version 0.1.4
- Fix: Fixed Containerfile in template to remove incorrect prompts/ copy line
- Fix: Fixed CLI to correctly update entry point script names for new projects
- Fix: Updated CLI to handle new multi-module template structure (core/, tools/, etc.)
- Fix: Updated fallback project name to match current template (fastmcp-unified-template)
- Improvement: Improved messaging when template uses multi-module structure
### Version 0.1.3
- Improvement: Enhanced prompt creation to comply with FastMCP 2.9+ requirements
### Version 0.1.2
- Documentation: Updated documentation and improved release management guidance
- Automation: Added `/create-release` slash command for automated release workflow
- Automation: Created `scripts/release.sh` for streamlined version management and tagging
- Documentation: Added `RELEASE_CHECKLIST.md` with comprehensive release procedures
### Version 0.1.1
- 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
Raw data
{
"_id": null,
"home_page": null,
"name": "fips-agents-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "agents, ai, cli, code-generator, fips, mcp, scaffolding",
"author": null,
"author_email": "Wes Jackson <wjackson@redhat.com>",
"download_url": "https://files.pythonhosted.org/packages/3b/93/fad86898d8bb830b1e8cb6360431f0bb50e8b5ac6796ff74c144690c287c/fips_agents_cli-0.1.6.tar.gz",
"platform": null,
"description": "# FIPS Agents CLI\n\nA command-line tool for creating and managing FIPS-compliant AI agent projects, with a focus on MCP (Model Context Protocol) server development.\n\n## Features\n\n- \ud83d\ude80 Quick project scaffolding from templates\n- \ud83d\udce6 MCP server project generation\n- \ud83d\udd27 Automatic project customization\n- \u26a1 Component generation (tools, resources, prompts, middleware)\n- \ud83c\udfa8 Beautiful CLI output with Rich\n- \u2705 Git repository initialization\n- \ud83e\uddea Comprehensive test coverage with auto-run\n\n## Installation\n\n**Recommended:** Install with [pipx](https://pipx.pypa.io/) for isolated command-line tools:\n\n```bash\npipx install fips-agents-cli\n```\n\npipx installs the CLI in an isolated environment while making it globally available. This prevents dependency conflicts with other Python packages.\n\n<details>\n<summary><b>Alternative: Using pip</b></summary>\n\nIf you prefer pip or don't have pipx installed:\n\n```bash\npip install fips-agents-cli\n```\n\n**Note:** Consider using a virtual environment to avoid dependency conflicts.\n\n</details>\n\n<details>\n<summary><b>Alternative: Install from source (for development)</b></summary>\n\nFor contributing or local development:\n\n```bash\n# Clone the repository\ngit clone https://github.com/rdwj/fips-agents-cli.git\ncd fips-agents-cli\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\n\n# Install in editable mode with dev dependencies\npip install -e .[dev]\n```\n\n</details>\n\n## Quick Start\n\n### Create a new MCP server project\n\n```bash\nfips-agents create mcp-server my-awesome-server\n```\n\nThis will:\n1. Clone the MCP server template\n2. Customize the project with your chosen name\n3. Initialize a git repository\n4. Provide next steps for development\n\n### Specify a target directory\n\n```bash\nfips-agents create mcp-server my-server --target-dir ~/projects\n```\n\n### Skip git initialization\n\n```bash\nfips-agents create mcp-server my-server --no-git\n```\n\n### Generate components in an existing project\n\n```bash\n# Navigate to your MCP server project\ncd my-mcp-server\n\n# Generate a new tool\nfips-agents generate tool search_documents --description \"Search through documents\"\n\n# Generate a resource\nfips-agents generate resource config_data --description \"Application configuration\"\n\n# Generate a prompt\nfips-agents generate prompt code_review --description \"Review code for best practices\"\n\n# Generate middleware\nfips-agents generate middleware auth_middleware --description \"Authentication middleware\"\n```\n\n## Usage\n\n### Basic Commands\n\n```bash\n# Display version\nfips-agents --version\n\n# Get help\nfips-agents --help\nfips-agents create --help\nfips-agents create mcp-server --help\nfips-agents generate --help\nfips-agents generate tool --help\n```\n\n### Create MCP Server\n\n```bash\nfips-agents create mcp-server <project-name> [OPTIONS]\n```\n\n**Arguments:**\n- `project-name`: Name for your MCP server project (must start with lowercase letter, contain only lowercase letters, numbers, hyphens, and underscores)\n\n**Options:**\n- `--target-dir, -t PATH`: Target directory for the project (default: current directory)\n- `--no-git`: Skip git repository initialization\n- `--help`: Show help message\n\n**Examples:**\n\n```bash\n# Create in current directory\nfips-agents create mcp-server my-mcp-server\n\n# Create in specific directory\nfips-agents create mcp-server my-server -t ~/projects\n\n# Create without git initialization\nfips-agents create mcp-server my-server --no-git\n```\n\n### Generate Components\n\nThe `generate` command group allows you to scaffold MCP components (tools, resources, prompts, middleware) in existing MCP server projects.\n\n**Important**: Run these commands from within your MCP server project directory.\n\n#### Generate Tool\n\n```bash\nfips-agents generate tool <name> [OPTIONS]\n```\n\n**Arguments:**\n- `name`: Tool name in snake_case (e.g., `search_documents`, `fetch_data`)\n\n**Options:**\n- `--description, -d TEXT`: Tool description\n- `--async/--sync`: Generate async or sync function (default: async)\n- `--with-context`: Include FastMCP Context parameter\n- `--with-auth`: Include authentication decorator\n- `--params PATH`: JSON file with parameter definitions\n- `--read-only`: Mark as read-only operation (default: true)\n- `--idempotent`: Mark as idempotent (default: true)\n- `--open-world`: Mark as open-world operation\n- `--return-type TEXT`: Return type annotation (default: str)\n- `--dry-run`: Show what would be generated without creating files\n\n**Examples:**\n\n```bash\n# Basic tool generation\nfips-agents generate tool search_documents --description \"Search through documents\"\n\n# Tool with context and authentication\nfips-agents generate tool fetch_user_data --description \"Fetch user data\" --with-context --with-auth\n\n# Tool with parameters from JSON file\nfips-agents generate tool advanced_search --params params.json\n\n# Sync tool with custom return type\nfips-agents generate tool process_data --sync --return-type \"dict[str, Any]\"\n\n# Dry run to preview\nfips-agents generate tool test_tool --description \"Test\" --dry-run\n```\n\n#### Generate Resource\n\n```bash\nfips-agents generate resource <name> [OPTIONS]\n```\n\n**Arguments:**\n- `name`: Resource name in snake_case (e.g., `config_data`, `user_profile`)\n\n**Options:**\n- `--description, -d TEXT`: Resource description\n- `--async/--sync`: Generate async or sync function (default: async)\n- `--with-context`: Include FastMCP Context parameter\n- `--uri TEXT`: Resource URI (default: `resource://<name>`)\n- `--mime-type TEXT`: MIME type for resource (default: text/plain)\n- `--dry-run`: Show what would be generated without creating files\n\n**Examples:**\n\n```bash\n# Basic resource\nfips-agents generate resource config_data --description \"Application configuration\"\n\n# Resource with custom URI\nfips-agents generate resource user_profile --uri \"resource://users/{id}\" --description \"User profile data\"\n\n# Resource with specific MIME type\nfips-agents generate resource json_config --mime-type \"application/json\"\n```\n\n#### Generate Prompt\n\n```bash\nfips-agents generate prompt <name> [OPTIONS]\n```\n\n**Arguments:**\n- `name`: Prompt name in snake_case (e.g., `code_review`, `summarize_text`)\n\n**Options:**\n- `--description, -d TEXT`: Prompt description\n- `--params PATH`: JSON file with parameter definitions\n- `--with-schema`: Include JSON schema in prompt\n- `--dry-run`: Show what would be generated without creating files\n\n**Examples:**\n\n```bash\n# Basic prompt\nfips-agents generate prompt code_review --description \"Review code for best practices\"\n\n# Prompt with parameters\nfips-agents generate prompt summarize_text --params params.json --with-schema\n```\n\n#### Generate Middleware\n\n```bash\nfips-agents generate middleware <name> [OPTIONS]\n```\n\n**Arguments:**\n- `name`: Middleware name in snake_case (e.g., `auth_middleware`, `rate_limiter`)\n\n**Options:**\n- `--description, -d TEXT`: Middleware description\n- `--async/--sync`: Generate async or sync function (default: async)\n- `--dry-run`: Show what would be generated without creating files\n\n**Examples:**\n\n```bash\n# Basic middleware\nfips-agents generate middleware auth_middleware --description \"Authentication middleware\"\n\n# Sync middleware\nfips-agents generate middleware rate_limiter --sync --description \"Rate limiting middleware\"\n```\n\n#### Parameters JSON Schema\n\nWhen using `--params` flag, provide a JSON file with parameter definitions:\n\n```json\n[\n {\n \"name\": \"query\",\n \"type\": \"str\",\n \"description\": \"Search query\",\n \"required\": true,\n \"min_length\": 1,\n \"max_length\": 100\n },\n {\n \"name\": \"limit\",\n \"type\": \"int\",\n \"description\": \"Maximum results to return\",\n \"required\": false,\n \"default\": 10,\n \"ge\": 1,\n \"le\": 100\n }\n]\n```\n\n**Supported Types:**\n- `str`, `int`, `float`, `bool`\n- `list[str]`, `list[int]`, `list[float]`\n- `Optional[str]`, `Optional[int]`, `Optional[float]`, `Optional[bool]`\n\n**Pydantic Field Constraints:**\n- `min_length`, `max_length` (for strings)\n- `ge`, `le`, `gt`, `lt` (for numbers)\n- `pattern` (for regex validation on strings)\n- `default` (default value when optional)\n\n## Project Name Requirements\n\nProject names must follow these rules:\n- Start with a lowercase letter\n- Contain only lowercase letters, numbers, hyphens (`-`), and underscores (`_`)\n- Not be empty\n\n**Valid examples:** `my-server`, `test_mcp`, `server123`, `my-awesome-mcp-server`\n\n**Invalid examples:** `MyServer` (uppercase), `123server` (starts with number), `my@server` (special characters)\n\n## After Creating a Project\n\nOnce your project is created, follow these steps:\n\n```bash\n# 1. Navigate to your project\ncd my-mcp-server\n\n# 2. Create and activate virtual environment\npython -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\n\n# 3. Install the project\npip install -e .[dev]\n\n# 4. Run tests\npytest\n\n# 5. Start developing!\n# Edit src/my_mcp_server/ files to add your functionality\n```\n\n## Development\n\n### Setup Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/rdwj/fips-agents-cli.git\ncd fips-agents-cli\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate\n\n# Install with dev dependencies\npip install -e .[dev]\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=fips_agents_cli --cov-report=html\n\n# Run specific test file\npytest tests/test_create.py\n\n# Run specific test\npytest tests/test_create.py::TestCreateMcpServer::test_successful_creation\n```\n\n### Code Quality\n\n```bash\n# Format code with Black\nblack src tests\n\n# Lint with Ruff\nruff check src tests\n\n# Type checking (if using mypy)\nmypy src\n```\n\n### Project Structure\n\n```\nfips-agents-cli/\n\u251c\u2500\u2500 pyproject.toml # Project configuration\n\u251c\u2500\u2500 README.md # This file\n\u251c\u2500\u2500 src/\n\u2502 \u2514\u2500\u2500 fips_agents_cli/\n\u2502 \u251c\u2500\u2500 __init__.py # Package initialization\n\u2502 \u251c\u2500\u2500 __main__.py # Entry point for python -m\n\u2502 \u251c\u2500\u2500 cli.py # Main CLI application\n\u2502 \u251c\u2500\u2500 version.py # Version information\n\u2502 \u251c\u2500\u2500 commands/ # CLI command implementations\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u2502 \u2514\u2500\u2500 create.py # Create command\n\u2502 \u2514\u2500\u2500 tools/ # Utility modules\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 filesystem.py # Filesystem operations\n\u2502 \u251c\u2500\u2500 git.py # Git operations\n\u2502 \u2514\u2500\u2500 project.py # Project customization\n\u2514\u2500\u2500 tests/ # Test suite\n \u251c\u2500\u2500 __init__.py\n \u251c\u2500\u2500 conftest.py # Pytest fixtures\n \u251c\u2500\u2500 test_create.py # Create command tests\n \u251c\u2500\u2500 test_filesystem.py # Filesystem utilities tests\n \u2514\u2500\u2500 test_project.py # Project utilities tests\n```\n\n## Requirements\n\n- Python 3.10 or higher\n- Git (for cloning templates and initializing repositories)\n\n## Dependencies\n\n- **click** (>=8.1.0): Command-line interface creation\n- **rich** (>=13.0.0): Terminal output formatting\n- **gitpython** (>=3.1.0): Git operations\n- **tomlkit** (>=0.12.0): TOML file manipulation\n- **jinja2** (>=3.1.2): Template rendering for component generation\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Run tests (`pytest`)\n5. Format code (`black src tests`)\n6. Commit your changes (`git commit -m 'Add amazing feature'`)\n7. Push to the branch (`git push origin feature/amazing-feature`)\n8. Open a Pull Request\n\n## Troubleshooting\n\n### Git not found\n\nIf you see \"Git is not installed\" error:\n- **macOS**: `brew install git`\n- **Linux**: `sudo apt-get install git` or `sudo yum install git`\n- **Windows**: Download from https://git-scm.com/downloads\n\n### Directory already exists\n\nIf you see \"Directory already exists\" error:\n- Choose a different project name\n- Remove the existing directory: `rm -rf project-name`\n- Use a different target directory with `--target-dir`\n\n### Template clone fails\n\nIf template cloning fails:\n- Check your internet connection\n- Verify the template repository is accessible: https://github.com/rdwj/mcp-server-template\n- Try again later if GitHub is experiencing issues\n\n### \"Not in an MCP server project directory\"\n\nWhen using `generate` commands:\n- Ensure you're running the command from within an MCP server project\n- Check that `pyproject.toml` exists with `fastmcp` dependency\n- If the project wasn't created with `fips-agents create mcp-server`, generator templates may be missing\n\n### \"Component already exists\"\n\nIf you see this error:\n- Choose a different component name\n- Manually remove the existing component file from `src/<component-type>/`\n- Check the component type directory for existing files\n\n### Invalid component name\n\nComponent names must:\n- Be valid Python identifiers (snake_case)\n- Not be Python keywords (`for`, `class`, etc.)\n- Start with a letter or underscore\n- Contain only letters, numbers, and underscores\n\n## License\n\nMIT License - see LICENSE file for details\n\n## Links\n\n- **Repository**: https://github.com/rdwj/fips-agents-cli\n- **Issues**: https://github.com/rdwj/fips-agents-cli/issues\n- **MCP Protocol**: https://modelcontextprotocol.io/\n\n## Changelog\n\n### Version 0.1.6\n\n- Feature: Added `fips-agents patch` command for selective template updates without losing custom code\n- Feature: Resource subdirectory support - organize resources in hierarchies (e.g., `country-profiles/japan`)\n- Feature: `generate resource` now supports subdirectory paths for better organization\n- Improvement: Recursive resource loading from subdirectories with automatic discovery\n- Improvement: Patch command shows interactive diffs for files that may be customized\n- Improvement: Template version tracking enables smart updates via `.template-info` file\n- Enhancement: Cleaned up redundant auto-discovery code from template `__init__.py` files\n\n### Version 0.1.5\n\n- Feature: Added `.template-info` file to track CLI version and template commit hash in generated projects\n- Improvement: Implemented auto-discovery for tools/resources/prompts/middleware components, eliminating manual registration in `__init__.py` files\n- Improvement: Template components can now be added or removed by simply creating/deleting files\u2014no registry updates required\n\n### Version 0.1.4\n\n- Fix: Fixed Containerfile in template to remove incorrect prompts/ copy line\n- Fix: Fixed CLI to correctly update entry point script names for new projects\n- Fix: Updated CLI to handle new multi-module template structure (core/, tools/, etc.)\n- Fix: Updated fallback project name to match current template (fastmcp-unified-template)\n- Improvement: Improved messaging when template uses multi-module structure\n\n### Version 0.1.3\n\n- Improvement: Enhanced prompt creation to comply with FastMCP 2.9+ requirements\n\n### Version 0.1.2\n\n- Documentation: Updated documentation and improved release management guidance\n- Automation: Added `/create-release` slash command for automated release workflow\n- Automation: Created `scripts/release.sh` for streamlined version management and tagging\n- Documentation: Added `RELEASE_CHECKLIST.md` with comprehensive release procedures\n\n### Version 0.1.1\n\n- Added `fips-agents generate` command group\n- Component generation: tools, resources, prompts, middleware\n- Jinja2-based template rendering\n- Parameter validation and JSON schema support\n- Auto-run pytest on generated components\n- Dry-run mode for previewing changes\n- Comprehensive error handling and validation\n\n### Version 0.1.0 (MVP)\n\n- Initial release\n- `fips-agents create mcp-server` command\n- Template cloning and customization\n- Git repository initialization\n- Comprehensive test suite\n- Beautiful CLI output with Rich\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "CLI tool for creating and managing FIPS-compliant AI agent projects",
"version": "0.1.6",
"project_urls": {
"Homepage": "https://github.com/rdwj/fips-agents-cli",
"Issues": "https://github.com/rdwj/fips-agents-cli/issues",
"Repository": "https://github.com/rdwj/fips-agents-cli"
},
"split_keywords": [
"agents",
" ai",
" cli",
" code-generator",
" fips",
" mcp",
" scaffolding"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "002c234f2a2612c66f76b6e9d1b308ca570253a4945f7b25dca42190cd2a0b6d",
"md5": "e0d81f551cbb07cd2ce716045bfabd41",
"sha256": "169892517c2a0f5b680cfb915d7ee869fdcd5ba2453e20006ac61c3184ca2b00"
},
"downloads": -1,
"filename": "fips_agents_cli-0.1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e0d81f551cbb07cd2ce716045bfabd41",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 32097,
"upload_time": "2025-10-15T20:34:15",
"upload_time_iso_8601": "2025-10-15T20:34:15.611790Z",
"url": "https://files.pythonhosted.org/packages/00/2c/234f2a2612c66f76b6e9d1b308ca570253a4945f7b25dca42190cd2a0b6d/fips_agents_cli-0.1.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3b93fad86898d8bb830b1e8cb6360431f0bb50e8b5ac6796ff74c144690c287c",
"md5": "134a28eec4edbb70ac9bb11b4eac4885",
"sha256": "80f5e46dfa735644dccfa9a645cfa55b1a824b2aa0ffe273591a9667b61731e9"
},
"downloads": -1,
"filename": "fips_agents_cli-0.1.6.tar.gz",
"has_sig": false,
"md5_digest": "134a28eec4edbb70ac9bb11b4eac4885",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 107825,
"upload_time": "2025-10-15T20:34:16",
"upload_time_iso_8601": "2025-10-15T20:34:16.667352Z",
"url": "https://files.pythonhosted.org/packages/3b/93/fad86898d8bb830b1e8cb6360431f0bb50e8b5ac6796ff74c144690c287c/fips_agents_cli-0.1.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-15 20:34:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rdwj",
"github_project": "fips-agents-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "fips-agents-cli"
}