diff --git a/README.md b/README.md index 83e760c..e7151f1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,102 @@ # python-openstackmcp-server -openstack mcp server + +Openstack mcp server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) server that provides an interface for AI assistants to interact with OpenStack services. + +```mermaid +flowchart LR + AI[AI Assistant] <-->|MCP Protocol| Server[OpenStack MCP Server] + Server <-->|OpenStack SDK| SDK[OpenStack SDK] + SDK <-->|REST API| Cloud[OpenStack Cloud] +``` + +# Table of Contents +- [Table of Contents](#table-of-contents) +- [Features](#features) +- [Quick Start with Claude Desktop](#quick-start-with-claude-desktop) + - [Requirements](#requirements) + - [Using python](#using-python) + - [Using uvx](#using-uvx) + - [Contributing](#contributing) + - [License](#license) + +# Features +- **MCP Protocol Support**: Implements the Model Context Protocol for AI assistants. +- **Compute Tools**: Manage OpenStack compute resources (servers, flavors). +- **Image Tools**: Manage OpenStack images. +- **Identity Tools**: Handle OpenStack identity and authentication. +- **Network Tools**: Manage OpenStack networking resources. +- **Block Storage Tools**: Manage OpenStack block storage resources. + +# Quick Start with Claude Desktop + +Get started quickly with the OpenStack MCP server using Claude Desktop + +## Requirements +- Python 3.10 or higher +- OpenStack credentials configured in `clouds.yaml` file +- Claude Desktop installed + +1. **Create or update your `clouds.yaml` file with your OpenStack credentials.** + + Example `clouds.yaml`: + ```yaml + clouds: + openstack: + auth: + auth_url: https://your-openstack-auth-url.com + username: your-username + password: your-password + project_name: your-project-name + user_domain_name: Default + project_domain_name: Default + region_name: your-region + interface: public + identity_api_version: 3 + ``` + +2. **Create or update your Claude Desktop configuration file**: + - **macOS**: Edit `$HOME/Library/Application Support/Claude/claude_desktop_config.json` + - **Windows**: Edit `%APPDATA%\Claude\claude_desktop_config.json` + - **Linux**: Edit `$HOME/.config/Claude/claude_desktop_config.json` + +### Using python + + ```json + { + "mcpServers": { + "openstack-mcp-server": { + "command": "/path/to/your/python", + "args": [ + "python-openstackmcp-server" + ], + "env" : { + "OS_CLIENT_CONFIG_FILE": "/path/to/your/clouds.yaml" + } + } + } + } + ``` + +### Using uvx + + ```json + { + "mcpServers": { + "openstack-mcp-server": { + "command": "uvx", + "args": [ + "python-openstackmcp-server" + ], + "env" : { + "OS_CLIENT_CONFIG_FILE": "/path/to/your/clouds.yaml" + } + } + } + } + ``` + +# Contributing +Contributions are welcome! Please see the [CONTRIBUTING](CONTRIBUTING.rst) file for details on how to contribute to this project. + +# License +This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details. \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index c831d2c..ebd9042 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,9 @@ dependencies = [ "pydantic>=2.11.7", ] +[project.scripts] +python-openstackmcp-server = "openstack_mcp_server:main" + [dependency-groups] dev = [ "ruff>=0.12.5",