project-manager
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/ — 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),sseorstreamable-httpfor network-based transports
def main(...):
Creates a
ProjectManagerClient— your HTTP client that talks to the FastAPI backendCalls
build_mcp(client)— registers all thepm_*tools with the MCP framework, wrapping the client's methods as Claude-callable toolsmcp.run(transport=transport)— starts the server loop, listening for tool calls from Claudeclient.close()infinally— 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
"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.