project_list
List and filter projects within an organization to track progress and manage hierarchical structures for technical project management.
Instructions
PROJECT MANAGEMENT: List projects in an organization.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | Filter by organization ID (case-insensitive) |
Implementation Reference
- src/tpm_mcp/server.py:446-455 (registration)Registers the 'project_list' tool with the MCP server, defining its name, description, and input schema (optional org_id filter).Tool( name="project_list", description="PROJECT MANAGEMENT: List projects in an organization.", inputSchema={ "type": "object", "properties": { "org_id": {"type": "string", "description": "Filter by organization ID (case-insensitive)"} }, }, ),
- src/tpm_mcp/server.py:520-522 (handler)Tool handler in _handle_tool: retrieves projects using db.list_projects (filtered by org_id if provided), serializes to JSON, and returns.if name == "project_list": projects = db.list_projects(args.get("org_id")) return _json([p.model_dump() for p in projects])
- src/tpm_mcp/db.py:238-257 (helper)Core implementation in TrackerDB: queries projects table (optionally filtered case-insensitively by org_id), maps rows to Project models.def list_projects(self, org_id: str | None = None) -> list[Project]: if org_id: org_id = self._normalize_id(org_id) rows = self.conn.execute( "SELECT * FROM projects WHERE LOWER(org_id) = ? ORDER BY name", (org_id,) ).fetchall() else: rows = self.conn.execute("SELECT * FROM projects ORDER BY name").fetchall() return [ Project( id=r["id"], org_id=r["org_id"], name=r["name"], repo_path=r["repo_path"], description=r["description"], created_at=datetime.fromisoformat(r["created_at"]), ) for r in rows ]
- src/tpm_mcp/models.py:52-58 (schema)Pydantic model for Project used in output serialization (model_dump() produces the JSON response structure).class Project(BaseModel): id: str org_id: str name: str repo_path: str | None = None description: str | None = None created_at: datetime