Skip to main content
Glama
evrenonur
by evrenonur
README.md
# AIProject MCP Server

This MCP server wraps the AIProject project/task API described in `api.md`.

## Run

```bash
npm install
npm run build
npm start
```

Use `aiproject-mcp` as a stdio MCP server after build.

## MCP Config

Local build:

```json
{
  "mcpServers": {
    "aiproject": {
      "command": "C:\\ServBay\\bin\\node.cmd",
      "args": [
        "C:\\Users\\Onur\\Desktop\\mcp\\dist\\src\\index.js"
      ],
      "env": {
        "AIPROJECT_BASE_URL": "http://127.0.0.1:8000/",
        "AIPROJECT_API_KEY": "<API_KEY>"
      }
    }
  }
}
```

After npm publish:

```json
{
  "mcpServers": {
    "aiproject": {
      "command": "npx",
      "args": [
        "-y",
        "aiproject-mcp"
      ],
      "env": {
        "AIPROJECT_BASE_URL": "http://127.0.0.1:8000/",
        "AIPROJECT_API_KEY": "<API_KEY>"
      }
    }
  }
}
```

## Credentials

The server reads credentials from environment variables:

- `AIPROJECT_BASE_URL`: API root or app root. Both `http://127.0.0.1:8000` and `http://127.0.0.1:8000/api/v1` are accepted. If the app root is supplied, `/api/v1` is appended automatically.
- `AIPROJECT_API_KEY`: API key sent as `X-API-Key`.

Every MCP tool also accepts optional credential overrides in its input:

- `baseUrl`: Override `AIPROJECT_BASE_URL` for one call.
- `apiKey`: Override `AIPROJECT_API_KEY` for one call.

## Tools

- `aiproject_get_me`: `GET /me`; verify the API key and return the current user.
- `aiproject_list_projects`: `GET /projects`; paginated project summaries.
- `aiproject_create_project`: `POST /projects`; create a project with `name`, `github_url`, `clickup_url`.
- `aiproject_get_project`: `GET /projects/{project}`; get one project.
- `aiproject_update_project`: `PUT /projects/{project}`; full project update, all project fields required.
- `aiproject_delete_project`: `DELETE /projects/{project}`; deletes the project and its tasks.
- `aiproject_list_tasks`: `GET /projects/{project}/tasks`; paginated task summaries. Does not return `content`.
- `aiproject_create_task`: `POST /projects/{project}/tasks`; create a task with long `content` and assignments. Returns summary without `content`.
- `aiproject_get_task`: `GET /projects/{project}/tasks/{task}`; the only task read tool that returns long `content`.
- `aiproject_update_task`: `PUT /projects/{project}/tasks/{task}`; full task update. The sent assignments replace the old list. Returns summary without `content`.
- `aiproject_delete_task`: `DELETE /projects/{project}/tasks/{task}`; deletes the task and assignments.
- `aiproject_update_assignment_status`: `PATCH /projects/{project}/tasks/{task}/assignments/{type}`; update one existing team status. It does not create missing assignments.

## Usage Guidance

List tasks first with `aiproject_list_tasks` because it returns lightweight summaries. Call `aiproject_get_task` only for the specific task whose long `content` must be read.

Use `aiproject_update_assignment_status` when only one team's status changes. Use `aiproject_update_task` when the title, content, or assignment team list changes.

## Test

```bash
npm test
```

By default, the integration test calls `http://127.0.0.1:8000/api/v1/me` through MCP with a dummy API key and expects the documented 401 auth response. To test with a real key:

```bash
$env:AIPROJECT_BASE_URL = "http://127.0.0.1:8000/"
$env:AIPROJECT_API_KEY = "<API_KEY>"
npm test
```

TDQS

A4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation on projects, tasks, or user info, with clear separation of concerns. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow the consistent verb_noun pattern with snake_case, prefixed by 'aiproject_', making the naming predictable and easy to parse.

Tool Count5/5

12 tools is an appropriate scope for a project/task management server, covering CRUD for two main entities plus user and assignment status operations.

Completeness4/5

Core CRUD lifecycle for projects and tasks is complete. Minor gap: no dedicated assignment creation tool, but assignments are managed through task creation/update, so it's a minor weakness.

Maintenance

ActivityMaintained
ResponsivenessSyncing