jama-connect
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jama-connectwhat test cases are in the Enphase project?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jama-connect
Unified Jama Connect package — MCP server + REST API + web viewer + VS Code extension.
Version: 0.5.5 | Repo: github.com/kailash-enph/jama-connect
Features
MCP Server — Jama integration for Windsurf/Devin (stdio transport)
REST API — FastAPI on localhost:8765 with full Jama CRUD
Web Viewer — pre-built static site at
/viewer(no Node.js at runtime)VS Code Extension — rich-text editor for Jama items with TipTap
Daemon Mode —
jama-connect --daemonruns MCP + REST in one processCache Seed — pre-populated Enphase Jama cache (91 projects, 8500+ items) downloaded from SharePoint on first run
Devin Symlink —
jama-post-installcreates junction at~/.devin/mcp-servers/jama-connectSQLite Cache — FTS5 full-text search, schema v3, TTL invalidation
Cross-platform — Windows, macOS, Linux (pure Python, no WSL needed)
Related MCP server: mcp-xray-cloud
Installation
End-user (from PyPI or wheel)
pip install jama-connect
# Then activate — installs extensions + starts daemon:
jama-post-installDeveloper (full build from source)
# One command: compile extension → run tests → build wheel → pip install
.\client\scripts\build-and-install.ps1
# Script prints this at the end — copy and run:
jama-post-installbuild-and-install.ps1 options:
-SkipVsix # Skip vsce packaging (faster when only JS changed)
-SkipTests # Skip extension + Python tests
-Port N # Backend port to stop (default: 8765)CLI Commands
Command | What it does |
| MCP server (stdio) for Windsurf/Devin |
| REST API + web viewer (always-on daemon) |
| Stop daemon → install extensions → start daemon |
| Check install status without making changes |
| Install extensions but skip daemon start |
Running
Backend (always-on)
jama-rest is the primary process. It serves the REST API, web viewer, MCP
server (background thread), and SSE event bus — all on port 8765.
jama-rest # starts and stays runningOpen http://localhost:8765/viewer in your browser.
jama-post-install starts it automatically. To start it again after a reboot:
jama-rest
# or re-run jama-post-installMCP for Windsurf/Devin
Add to mcp_config.json and point at the running jama-rest — no separate
MCP process needed:
{
"mcpServers": {
"jama-mcp-v2": {
"command": "jama-connect",
"args": []
}
}
}Active Project
All three clients (VS Code extension, web viewer, MCP/AI) share one active project. Change it in any one place and all views update instantly via SSE:
VS Code → Settings panel → Project dropdown
Web Viewer → Project dropdown (top of tree page)
AI/MCP →
jama_set_active_project(project_id=20570)
First-Run Cache Seed
On first run (no ~/.jama-mcp-v2/projects/<id>.db exists), jama-connect will:
Check
~/Downloads/,~/.jama-mcp-v2/, cwd, and system temp forcache_seed.db.gzIf not found, open the SharePoint link in your browser and wait for you to download
After download, auto-find and decompress (44 MB → 321 MB)
This gives you instant access to 91 projects and 8500+ items without a full sync.
MCP Config (for Windsurf/Devin)
{
"jama-mcp-v2": {
"command": "jama-connect",
"args": [],
"env": {
"JAMA_URL": "https://enphase.jamacloud.com",
"JAMA_CLIENT_ID": "your-client-id",
"JAMA_CLIENT_SECRET": "your-client-secret",
"JAMA_CACHE_DIR": "~/.jama-mcp-v2",
"JAMA_REST_PORT": "8765"
}
}
}Credential Auto-Loading
All commands (jama-connect, jama-rest, jama-editor) automatically find credentials from your IDE's MCP config — no need to set env vars manually.
Searched in order (first match wins):
IDE | Config path |
Windsurf |
|
Devin |
|
Claude Desktop |
|
Cursor |
|
Looks for a jama-mcp-v2, jama-connect, or jama entry and reads the env block.
If no config is found, set env vars directly:
set JAMA_CLIENT_ID=your-client-id
set JAMA_CLIENT_SECRET=your-client-secretEnvironment Variables
Variable | Default | Purpose |
|
| Jama instance URL |
| auto from mcp_config | OAuth2 client ID |
| auto from mcp_config | OAuth2 client secret |
|
| Cache directory |
|
| REST API port |
|
| Jama API concurrency limit |
| (unset) | LAN cache server URL (e.g. |
Development
Prerequisites
Python ≥3.12
Node.js ≥18 (build-time only, for viewer)
uv (Python package manager)
Dev Setup
uv sync # install Python deps
cd viewer && npm ci # install viewer depsBuild & Install (one command)
# Full build: extension JS + tests + vsix + wheel + pip install
.\client\scripts\build-and-install.ps1
# Then activate on this machine:
jama-post-installFlags: -SkipVsix (no vsce), -SkipTests (no tests), -Port N
Build steps individually
# Extension JS only
cd client/vscode-extension && node esbuild.mjs
# Python wheel only
cd client/backend && uv build
# Extension tests
cd client/vscode-extension && npm test
# Python tests
cd client/backend && uv run pytest tests/ -vPublish
twine upload --repository-url http://nz-lnx-01/pypi dist/*Architecture
┌──────────────────────────────────────────────────────────┐
│ jama-rest (always-on — started by jama-post-install) │
│ │
│ main thread: Uvicorn :8765 │
│ /api/* REST endpoints (ProjectDb) │
│ /viewer/ Next.js static web viewer │
│ /api/events SSE push — active_project_changed │
│ /settings/* credentials, project selection │
│ │
│ background thread: MCP stdio (when AI connects) │
│ ~40 jama_* tools — uses same ProjectDb/SearchEngine │
│ exits when AI disconnects; REST stays up │
│ │
│ shared: ServiceRegistry │
│ CacheManager → projects/{id}.db (per-project data) │
│ SearchEngine → active project FTS5 │
│ JamaCache → cache.db (edit write buffer only) │
│ JamaApiClient → OAuth2 REST │
└──────────────────────────────────────────────────────────┘
│ HTTP :8765 │ HTTP :8765 │ stdio
▼ ▼ ▼
VS Code Extension Web Viewer Windsurf/Devin
(tree + item editor) (Next.js SPA) (MCP tools)
Active project changed in any client
→ POST /settings/project/select
→ SSE broadcast: active_project_changed
→ all tree views reload automaticallyFiles
Location | Purpose |
| Jama item/test cache |
| Editor drafts/schema |
| Service logs |
| Devin symlink/junction |
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for AI access to Swagger by SmartBear.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseCqualityCmaintenanceAn MCP server that enables AI assistants to interact with JIRA, allowing for querying issue details, creating and updating work items, and managing attachments through a standardized interface.124MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that connects AI assistants to Xray Cloud for Jira test management, enabling natural language interaction with tests, test plans, executions, and CI result imports.MIT
- FlicenseNot gradedqualityAmaintenanceAn MCP server that gives an AI agent read and write access to a live SysML v2 model through the vendor-neutral OMG SysML v2 REST API.2-
- AlicenseNot gradedqualityBmaintenanceMCP server for Atlassian Confluence and Jira, enabling AI assistants to search, create, and update issues and pages via natural language.MIT