# Agent Guidelines for openproject-mcp Welcome to the `openproject-mcp` project. This document defines operating principles, architectural conventions, coding practices, and workflow expectations for AI agents collaborating on this codebase. ## 1. Project Overview `openproject-mcp` is a Model Context Protocol (MCP) server that acts as an intelligent bridge to [OpenProject](https://github.com/opf/openproject). It enables LLM agents and clients (e.g., Claude Desktop, Antigravity, Cursor) to browse, query, and interact with OpenProject instances using user API keys via OpenProject's REST API v3. ### Primary Objectives - Expose OpenProject projects, work packages, queries, users, and taxonomies as MCP tools and resources. - Provide secure, transparent authentication via OpenProject API tokens. - Handle OpenProject's HAL+JSON schema and complex query filter syntax gracefully. - Ensure lightweight, resilient runtime execution over standard MCP transports (stdio). --- ## 2. General Principles for Agents 1. **Check Documentation First**: Before proposing or executing architectural changes, consult [docs/ARCHITECTURE.md](file:///home/user/openproject-mcp/docs/ARCHITECTURE.md) and [docs/DECISIONS.md](file:///home/user/openproject-mcp/docs/DECISIONS.md). 2. **Document Architectural Decisions**: If a change alters the design, dependencies, or interfaces, record a new entry or update existing records in [docs/DECISIONS.md](file:///home/user/openproject-mcp/docs/DECISIONS.md). 3. **Preserve Repository Integrity**: Do not delete existing comments, licenses, or configuration files unless specifically tasked with refactoring them. 4. **Security by Design**: Never log or commit credentials, API tokens, or session secrets. --- ## 3. Technology Stack & Coding Standards ### Stack - **Runtime & Package Manager**: **Bun** (>= 1.2 / 1.3). - Default to using Bun instead of Node.js. - Use `bun ` instead of `node ` or `ts-node `. - Use `bun test` instead of `jest` or `vitest` (using `import { test, expect, describe } from "bun:test"`). - Use `bun add` / `bun install` instead of `npm install`, `pnpm`, or `yarn`. - Use `bun run