@santete/mcp-server
v0.1.0
Published
AgentPM MCP Server — expose project tasks, approvals, and context to AI coding agents
Maintainers
Readme
@agentpm/mcp-server
The Model Context Protocol (MCP) server for the AgentPM SDLC control plane.
@agentpm/mcp-server allows AI coding agents (such as Cursor, Claude Code, Claude Desktop, and Copilot) to connect directly with your AgentPM control plane. Through this server, your AI agents can check out tasks, report progress, request human-in-the-loop approvals, submit daily standups, and track task blockers.
Features
- 🔄 Closed-Loop Task Management: Let agents automatically read the next prioritized task and update status upon coding completion.
- 🚦 Approval Gates: Agents can submit code changes or PRs for review and block execution until human approvals are received.
- 📋 Automated Standups: AI agents can submit their daily accomplishments, plans, and blockers to the PM Dashboard.
- 🧠 PM Sophia Integrations: Retrieve sprint velocity summaries, costs, and token diagnostics.
Installation & Running
You can run the MCP server directly via npx (recommended) or install it globally.
Running with npx
npx @agentpm/mcp-serverConfiguration
The server requires the following environment variables:
| Variable | Description | Required |
|----------|-------------|----------|
| AGENTPM_API_KEY | Your AgentPM client connector API Key (generated in the Dashboard under /api-keys). | Yes |
| SUPABASE_URL | The URL of your Supabase project. | Yes |
(Note: The server connects directly to your Supabase project instance using client-safe row-level security parameters enabled by the API Key).
Client Integration Examples
1. Cursor
Go to Settings ➔ Features ➔ MCP and click + Add New MCP Server:
- Name:
AgentPM - Type:
command - Command:
npx @agentpm/mcp-server - Environment Variables:
AGENTPM_API_KEY:your_agentpm_api_keySUPABASE_URL:https://your-supabase-id.supabase.co
2. Claude Desktop
Add this to your claude_desktop_config.json (located at %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"agentpm": {
"command": "npx",
"args": ["-y", "@agentpm/mcp-server"],
"env": {
"AGENTPM_API_KEY": "your_agentpm_api_key",
"SUPABASE_URL": "https://your-supabase-id.supabase.co"
}
}
}
}Exposed Tools
The server registers 10 main tools:
1. get_next_task
Fetches the next prioritized task from the project backlog.
- Inputs: None
- Returns: A JSON object representing the task (ID, title, description, priority, etc.).
2. get_task_detail
Retrieves detailed information for a specific task.
- Inputs:
taskId(string, required): The UUID of the task.
3. update_task_status
Updates a task's state.
- Inputs:
taskId(string, required): Task UUID.status(string, required): One ofbacklog,in_progress,in_review,completed,cancelled.
4. report_progress
Sends a progress update to the activity log.
- Inputs:
taskId(string, required): Task UUID.percent(number, required): Progress percentage (0-100).comment(string, optional): Update details.
5. log_activity
Logs a custom developer/agent action or diagnostic message to the dashboard activity feed.
- Inputs:
eventType(string, required): Event label (e.g.agent.build_start).message(string, required): Brief text description of the event.metadata(object, optional): Custom JSON payload.
6. request_approval
Submits a task or PR for code review and requests approval from registered gates.
- Inputs:
taskId(string, required): Task UUID.prNumber(number, optional): Linked GitHub PR number.contextDescription(string, required): Summary of the code changes.
7. get_approval_status
Queries the resolution status of an active approval request.
- Inputs:
requestId(string, required): Approval request UUID.
8. submit_standup
Submits the daily standup details.
- Inputs:
yesterday(string, required): What was accomplished yesterday.today(string, required): Plan for today.blockers(string, optional): Obstacles/blockers.sessionId(string, optional): Associated agent session UUID.
9. flag_blocker
Flags or unflags a task as blocked.
- Inputs:
taskId(string, required): Task UUID.isBlocked(boolean, required): Whether the task is blocked.reason(string, optional): Explanation for blocking.
10. get_sprint_summary
Fetches the AI executive summary report of the current sprint.
- Inputs:
sprintId(string, optional): Target sprint UUID. If omitted, fetches active sprint.
License
MIT
