Skip to main content
Glama
README.md
# APS MCP Server

A minimal MCP server integrating Autodesk ACC APIs via APS toolkit.

## Video Overview
[![IMAGE ALT TEXT HERE](./images/APS_MCP_Thumbnail.PNG)](https://www.youtube.com/watch?v=pUtWc8oFCEA)


## Setup

### Option 1: Using uv (recommended)

1. Install uv if you don't have it:
   ```
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```

2. Copy `.env.sample` to `.env` and fill in your credentials:
   ```
   cp .env.sample .env
   ```

3. Create and activate a virtual environment:
   ```
   uv venv
   # On Windows:
   .venv\Scripts\activate
   # On Unix or MacOS:
   source .venv/bin/activate
   ```

4. Install dependencies:
   ```
   uv pip install -r requirements.txt
   ```

5. Run the MCP server:
   ```
   python aps_dm_server.py
   ```

### Option 2: Using pip

1. Copy `.env.sample` to `.env` and fill in your credentials:
   ```
   cp .env.sample .env
   ```

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

3. Install dependencies:
   ```
   pip install -r requirements.txt
   ```

4. Run the MCP server:
   ```
   python aps_dm_server.py
   ```

## Integration with Claude Desktop

To use this MCP server with Claude Desktop:

1. Make sure you have Claude Desktop installed (download from [Claude.ai](https://claude.ai/))
2. Open your Claude Desktop configuration file:
   ```
   code ~/Library/Application\ Support/Claude/claude_desktop_config.json
   ```
   Create it if it doesn't exist.

3. Add the appropriate configuration:

   **Option A: Direct Python from virtual environment (most reliable)**
   ```json
   {
       "mcpServers": {
           "acc": {
               "command": "/ABSOLUTE/PATH/TO/YOUR/.venv/bin/python",
               "args": [
                   "/ABSOLUTE/PATH/TO/YOUR/aps_dm_server.py"
               ],
               "env": {
                   "PYTHONPATH": "/ABSOLUTE/PATH/TO/YOUR/PROJECT/FOLDER"
               }
           }
       }
   }
   ```
   Replace paths with absolute paths to your environment and project.

   **Option B: Using uv**
   ```json
   {
       "mcpServers": {
           "acc": {
               "command": "/ABSOLUTE/PATH/TO/uv",
               "args": [
                   "--directory",
                   "/ABSOLUTE/PATH/TO/YOUR/PROJECT/FOLDER",
                   "run",
                   "aps_dm_server.py"
               ]
           }
       }
   }
   ```
   Find the absolute path to `uv` by running `which uv` in your terminal.

4. Save the file and restart Claude Desktop completely
5. Look for the hammer icon in Claude Desktop to access the ACC tools

## macOS Specific Setup

macOS users may encounter permission issues when integrating with Claude Desktop:

1. **Permission Issues**: If you see errors like `Operation not permitted` in logs:
   - Open System Preferences → Privacy & Security → Full Disk Access
   - Add Terminal and Claude applications by clicking the "+" button
   
2. **Working Directory Issues**: If you see errors about current directory not existing:
   - Always use absolute paths in your configuration
   - Consider storing projects in locations with fewer permissions restrictions (e.g., Documents folder)

3. **Finding the correct Python path**: To get the exact path to your virtual environment's Python:
   ```
   source .venv/bin/activate  # Activate your environment first
   which python  # Get the full path
   ```

4. **Checking logs for troubleshooting**:
   ```
   tail -n 50 -f ~/Library/Logs/Claude/mcp*.log
   ```

## Requirements
- Python 3.11 or higher
- Dependencies listed in requirements.txt

## System Architecture

This MCP server acts as a bridge between Claude AI and the Autodesk APS platform. The diagram below illustrates how data flows through the system:

![System Architecture](./images/system-diagram.png)

1. Your query to Claude triggers tool selection
2. Claude sends MCP requests to your local server
3. The MCP server connects to APS/ACC using your credentials
4. Data flows back to Claude which processes and formats results

## Available Tools

The MCP server exposes the following tools:

- `get_hubs`: Get all available hubs
- `get_projects`: Get all projects within a hub
- `get_project_files`: Get files in a specific folder of a project
- `get_versions`: Get version information for a specific item

## Troubleshooting

If you encounter issues with Claude Desktop integration:

1. **Server not showing up**: 
   - Check configuration file syntax (valid JSON)
   - Use absolute paths everywhere
   - Restart Claude Desktop completely

2. **Permission errors**:
   - Grant Full Disk Access to Terminal and Claude
   - Try using Python directly rather than through uv
   - Try moving the project to a location with fewer restrictions

3. **Environment errors**:
   - Ensure all dependencies are installed
   - Try using the direct path to Python in your virtual environment
   - Check your `.env` file has correct Autodesk credentials

4. **Logs check**:
   ```
   tail -n 50 -f ~/Library/Logs/Claude/mcp*.log
   ```

5. **Manual testing**:
   Test your server works by running it directly:
   ```
   cd /path/to/your/project
   source .venv/bin/activate
   python aps_dm_server.py
   ```

## Using with OpenAI Agents SDK

This project includes integration with the OpenAI Agents SDK, allowing you to use the MCP server with an OpenAI agent.

1. Make sure your `.env` file includes your OpenAI API key:
   ```
   OPENAI_API_KEY=your_openai_api_key
   ```

2. Install the additional dependencies:
   ```
   uv pip install openai>=1.31.0
   ```

3. Run the agent:
   ```
   python main_agent.py
   ```

This will start an interactive session where you can ask the agent questions about your Autodesk projects.


## Dependencies and Licensing

This project uses the following open source components:

- **[aps-toolkit](https://github.com/chuongmep/aps-toolkit)** - A library for Autodesk Platform Services (GPL-3.0)
- **mcp** - Multimodal Capability Protocol implementation
- **python-dotenv** - Environment variable management
- **openai** and **openai-agents** - OpenAI integration

This project is licensed under the [GNU General Public License v3.0](LICENSE) as required by the aps-toolkit dependency.

## Disclaimer

This software is provided "as is", without warranty of any kind, express or implied. This is a prototype for demonstration purposes only. The author takes no responsibility for any damages or issues that may arise from using this software. Use at your own risk.