aiproject-mcp
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