Skip to main content
Glama
samrullo

project-manager

by samrullo
README.md
# What is this project

This project implements stdio MCP server, so that Claude can search data by sending requests to an API backend running on localhost:8000

**Documentation:** [docs/](docs/README.md) — implementation overview and full `pm_*` tool reference.

This is the **entry point** for your MCP server. Breaking it down:

**`@click.command()` + `@click.option`** — CLI interface with two flags:
- `--base-url`: override the API URL without changing env vars (e.g. `--base-url http://staging:8000`)
- `--transport`: how Claude communicates with the server — `stdio` (default, used by Claude Desktop via stdin/stdout pipes), `sse` or `streamable-http` for network-based transports

**`def main(...)`**:
1. Creates a `ProjectManagerClient` — your HTTP client that talks to the FastAPI backend
2. Calls `build_mcp(client)` — registers all the `pm_*` tools with the MCP framework, wrapping the client's methods as Claude-callable tools
3. `mcp.run(transport=transport)` — starts the server loop, listening for tool calls from Claude
4. `client.close()` in `finally` — cleanly shuts down the HTTP client when the process exits

**Why `stdio` is the default:** Claude Desktop launches this as a subprocess and communicates via stdin/stdout pipes — no network port needed. The `sse`/`streamable-http` options would be for remote deployments where Claude connects over HTTP instead.

In short: this boots the bridge between Claude and your project manager API, using whichever communication channel fits the deployment context.

# How to register this local MCP server with Claude Desktop
You add below into ```mcpServers``` section of ```%APPDATA%\Claude\claude_desktop_config.json``` 

What does this achieve in ```%APPDATA%\Claude\claude_desktop_config.json``` 

```json
 "project-manager": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "c:\\Users\\amrusub\\programming\\pet_projects\\project_manager_mcp",
        "project-manager-mcp"
      ],
      "env": {
        "PROJECT_MANAGER_API_BASE": "http://127.0.0.1:8000"
      }
    }
  },
```

This registers a local MCP server called **"project-manager"** with Claude Desktop. Here's what each part does:

**`command: "uv"`** — uses `uv` (the fast Python package manager) to run the server

**`args`** — tells uv to run the `project-manager-mcp` entry point from your local project directory at `c:\Users\amrusub\programming\pet_projects\project_manager_mcp`

**`env`** — sets an environment variable so the MCP server knows to talk to your locally running API at `http://127.0.0.1:8000`

**Net effect:** When Claude Desktop starts, it spins up your local `project-manager-mcp` Python process in the background. Claude then gets access to whatever tools that server exposes (in your case, the `project-manager:pm_*` tools visible in this conversation — create tasks, list projects, manage users, etc.), all backed by your local FastAPI server on port 8000.

So it's essentially a bridge: Claude ↔ MCP server process ↔ your local REST API.

TDQS

C2.5/5.0

Scored across 46 tools

Disambiguation5/5

Each tool targets a distinct resource and action (e.g., pm_create_comment vs pm_create_task). The names and descriptions make it clear which entity is being operated on, with no overlapping functionality. The distinction between pm_list_tags and pm_list_user_labels is explicit.

Naming Consistency5/5

All tools follow the consistent pattern `pm_verb_noun`. Verbs are standard (create, get, list, update, delete, upload, download, export, attach, detach) and nouns correspond to resources. No mixed conventions or vague names.

Tool Count2/5

46 tools is well above the typical well-scoped range (3-15). Even for a comprehensive project manager, this number is high and may overwhelm agents. It borders on excessive, as per calibration (25+ is too many).

Completeness3/5

The server covers CRUD for many entities (projects, tasks, comments, tags, users, files) but lacks update operations for organizations, teams, and user labels. Also team and organization deletion are missing. These are notable gaps that agents may encounter.

Maintenance

ActivityStale
ResponsivenessNo issues