project-hub-mcp
by atikahjapry
README.md
# project-hub-mcp
> Run AI agent pipelines from Devin, Claude, and Cursor — via MCP.
**Project Hub MCP** is a [Model Context Protocol](https://modelcontextprotocol.io) server that lets your AI tools run multi-step agent pipelines directly from a conversation.
Built on top of [Project Hub](https://github.com/atikahjapry/project-hub) — the open-source AI agent pipeline desktop app.
---
## What it does
Once installed, your AI assistant can:
- **`list_pipelines`** — see all your pipelines
- **`run_pipeline`** — execute a pipeline (Issue Analyst → Code Writer → Test Runner → PR Opener)
- **`get_run_status`** — check logs and output of a run
- **`list_agents`** — see all available agents (Devin, shell, Python, HTTP)
- **`run_agent`** — run a single agent step with any input
- **`create_pipeline`** — define a new pipeline on the fly
- **`get_usage`** — check your monthly run count
---
## Install
### Devin
Add to your Devin MCP settings:
```json
{
"mcpServers": {
"project-hub": {
"command": "npx",
"args": ["-y", "project-hub-mcp"],
"env": {
"PROJECT_HUB_API_KEY": "phub_your_key_here"
}
}
}
}
```
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"project-hub": {
"command": "npx",
"args": ["-y", "project-hub-mcp"],
"env": {
"PROJECT_HUB_API_KEY": "phub_your_key_here"
}
}
}
}
```
### Cursor
Add to `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"project-hub": {
"command": "npx",
"args": ["-y", "project-hub-mcp"],
"env": {
"PROJECT_HUB_API_KEY": "phub_your_key_here"
}
}
}
}
```
### Local mode (no key required)
Set `PROJECT_HUB_LOCAL_MODE=1` to run locally with no API key and no run limits:
```json
{
"mcpServers": {
"project-hub": {
"command": "npx",
"args": ["-y", "project-hub-mcp"],
"env": {
"PROJECT_HUB_LOCAL_MODE": "1"
}
}
}
}
```
---
## Usage examples
Once installed, just talk to your AI:
> *"List my Project Hub pipelines"*
> *"Run the GitHub Issue → PR pipeline with input: Fix the login bug described in issue #42"*
> *"Check the status of run abc-123"*
> *"Run the Code Writer agent on this task: Add dark mode to the settings page"*
---
## Environment variables
| Variable | Default | Description |
|---|---|---|
| `PROJECT_HUB_API_KEY` | — | Your API key (get one free at https://projecthub.dev/api-key) |
| `PROJECT_HUB_LOCAL_MODE` | `0` | Set to `1` for unlimited local runs, no key needed |
| `PROJECT_HUB_DATA` | `~/.project-hub-mcp` | Directory where agents, pipelines, and run history are stored |
| `DEVIN_MODEL` | — | Default Devin model (e.g. `claude-sonnet-4`) |
| `DEVIN_PERMISSION_MODE` | `auto` | Devin permission mode: `auto`, `smart`, or `dangerous` |
| `DEVIN_WORKING_DIR` | `$HOME` | Default working directory for Devin agent runs |
---
## Pricing
| Plan | Price | Runs/month |
|---|---|---|
| Free | £0 | 10 |
| Pro | £19/mo | Unlimited |
Get your free API key: **https://projecthub.dev/api-key**
---
## Run from source
```bash
git clone https://github.com/atikahjapry/project-hub-mcp
cd project-hub-mcp
npm install
npm run build
# Run in local mode (no key, no limits)
PROJECT_HUB_LOCAL_MODE=1 node dist/index.js
```
---
## Security
### Data stored locally
Agents, pipelines, and run history are stored in `~/.project-hub-mcp/store.json` on your own machine. The directory is created with mode `0700` and the file with mode `0600` — readable only by your user account.
API keys are hashed with SHA-256 before being stored. The raw key is never written to disk.
### Secrets in `envVars`
When creating a shell or Python agent, the `envVars` field sets environment variables for the spawned process. **Use `$VARIABLE_NAME` references, not literal values** — the reference is stored, and the real value is resolved from your shell environment at runtime and never written to disk.
```jsonc
// Bad — literal token stored in store.json in plaintext
{ "GITHUB_TOKEN": "ghp_actualtoken123" }
// Good — reference stored; real value read from host env at runtime
{ "GITHUB_TOKEN": "$GITHUB_TOKEN" }
```
The server **enforces** this: `saveAgent` will throw if it detects a known secret pattern (GitHub tokens, OpenAI keys, AWS keys, long hex strings, etc.) in an `envVars` value. If you try to save such an agent you will get a clear error pointing to the offending key and showing the correct `$REF` form.
Put real secrets in your shell profile (`~/.bashrc`, `~/.zshrc`) or your MCP host's `env` config block, then reference them by name.
### Shell commands
Shell and Python agents run `bash -c <your-command>`. The user input passed to the agent is **not** interpolated into the command string — it is passed via the `AGENT_INPUT` environment variable to prevent shell injection.
Reference it in your command like this:
```bash
# Access user input safely via $AGENT_INPUT
echo "$AGENT_INPUT" | some-tool
```
### Logs
All stdout/stderr captured during agent runs is scrubbed for common secret patterns (`token=`, `password=`, `Bearer`, etc.) before being stored. If you need to ensure sensitive output is never logged, set `outputParser: "last_line"` or `"json_field"` on the agent to capture only structured output.
---
## How it works
- Agents and pipelines are stored locally in `~/.project-hub-mcp/store.json`
- The server runs via stdio — your AI tool spawns it as a subprocess
- Devin agents call the `devin` CLI — you need Devin installed (`https://devin.ai/download`)
- Shell agents run via `bash -c`; user input passed via `AGENT_INPUT` env var (never interpolated into the command)
- All run logs and outputs are persisted locally with secret scrubbing applied
---
## Related
- [Project Hub desktop app](https://github.com/atikahjapry/project-hub) — the full GUI for building and running pipelines
- [Project Hub landing page](https://github.com/atikahjapry/project-hub-landing) — marketing site and agent marketplace
---
MIT License · Built by [Atikah Japry](https://github.com/atikahjapry)
TDQS
A3.8/5.0
Scored across 7 tools
Disambiguation5/5
All 7 tools have clearly distinct purposes: creating vs running pipelines, running a single agent, checking run status, checking usage, and listing agents/pipelines. No overlap or ambiguity.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_pipeline, get_run_status, list_agents). No deviations or mixed conventions.
Tool Count5/5
7 tools is appropriate for the server's purpose of managing pipeline runs and agents. Each tool serves a distinct function without excess or deficiency.
Completeness4/5
The tool set covers the core lifecycle: create, run, monitor (status), list, and usage check. Minor gaps exist, such as missing update/delete for pipelines or agent management, but the surface is sufficient for common workflows.
Maintenance
ActivityMaintained
ResponsivenessSyncing