Skip to main content

Allye MCP

Allye MCP Server
Python MCP server for Allye Cloud API integration

PyPI Python License codecov

Quick Start • Installation • Configuration • Structure • Testing


Overview

Allye MCP connects MCP-compatible clients (Claude Code, Cursor, Windsurf, VS Code, etc.) directly to the Allye Cloud APIs. Every tool invocation hits the live backend—no outdated snapshots or hallucinated IDs.

Available Tools:

  • knowledge — Documentation CRUD, modes
  • skills — Authorized document library: create, read, edit, trash, and revision history
  • productivity — TODO management
  • intelligence — Memories and smart operations
  • user_config — User configuration documents
  • initialize — Personalized setup
  • health — Backend health check
  • projects, epics, specs, tasks — Projects module (Project → Epic → Spec → Task)
  • team — Default team: team_set_default sets your default team (shared by all your sessions)

Skills library

The default skills tool supports skill_list, skill_get, skill_create, skill_update, skill_delete, skill_list_revisions, and skill_restore_revision. Creation accepts name, content, scope (personal, team, or organization), optional description, and optional category. Reading or saving uses skill_id; restoring also uses the revision_id returned by history.

Reads show the latest authorized document, not only published releases. Delete moves a document to trash without erasing its history. Restore creates a new revision; it never changes an existing revision or the approved release pointer. The API enforces all permissions and company/team boundaries. The advanced Skills implementation is retained but not advertised by the default registry.

Projects (spec-driven work)

Four tools cover the Projects module: projects (projects and their apps, including app_archive/app_unarchive; project_resolve finds the project/app/team of a repository URL), epics (status calculated from specs; epic_cancel/epic_reopen), specs (19 actions: lifecycle transitions, versions, diff, anchors, coverage, dependencies, spec_context, spec_stale; spec_validate checks a draft spec and proposed tasks without writing) and tasks (14 actions: CRUD, task_bulk_create, transitions, task_next).

Every entity is referenced by key (ALY, ALY-7, ALY-7.3) or UUID. There are no free status changes and no deletes: only transition actions and cancel/reopen. spec_approve requires user_requested=true and must only be used when the user explicitly asks. Uncovered acceptance criteria never block; responses carry a Warning: uncovered ACs line. The API enforces permissions (projects:select, projects:insert, projects:update) and the HTTP contract lives in the allye-api Projects plan §6. Projects replaces the former work items, boards and sprints tools (their data was migrated to Projects).


Quick Start

Configure the server name allye with the canonical URL:

https://mcp.allye.app/mcp

Use the client's native MCP OAuth flow. Do not configure a fixed Authorization header, PAT, legacy client ID, tenant path, or token helper. The client discovers OAuth from:

https://mcp.allye.app/.well-known/oauth-protected-resource/mcp

Examples:

# Claude Code
claude mcp add --transport http allye https://mcp.allye.app/mcp

# Codex
codex mcp add allye --url https://mcp.allye.app/mcp
codex mcp login allye

For OpenCode, define an enabled remote server named allye at the same URL, then run opencode mcp auth allye. With Pi and pi-mcp-adapter, configure the same name and URL, then use /mcp-auth allye and /mcp reconnect allye. Each installation completes its own browser authorization.

Local STDIO with an explicit PAT

PAT authentication remains supported only for local STDIO:

pipx install allye-mcp
ALLYE_TRANSPORT_MODE=stdio allye-mcp --pat <your-token>

Requirements

Mode Authentication Client
Remote HTTP Native OAuth v2 OAuth-capable MCP client
Local STDIO Explicit Allye PAT Any STDIO-capable MCP client

Python 3.10+ is required when running the server locally.


Installation

pipx install allye-mcp

With pip

pip install --user allye-mcp

Upgrade

pipx upgrade allye-mcp
# or
pip install --upgrade allye-mcp

Configuration

STDIO client setup

The PAT belongs only to the local STDIO process:

{
  "mcpServers": {
    "allye": {
      "command": "allye-mcp",
      "args": ["--pat", "your-token"],
      "env": {
        "ALLYE_TRANSPORT_MODE": "stdio"
      }
    }
  }
}

ALLYE_PAT_TOKEN may replace --pat for STDIO. Never attach either credential to an HTTP MCP request.

Environment variables
Variable Purpose HTTP requirement
ALLYE_API_URL Private Allye API listener used for delegated calls Required
ALLYE_AUTH_SERVER_URL OAuth issuer (https://api.allye.app/oauth/v2 in production) Required
ALLYE_JWKS_URL Issuer JWKS endpoint (https://api.allye.app/oauth/v2/jwks) Required
ALLYE_MCP_RESOURCE Public resource/audience (https://mcp.allye.app/mcp) Required
ALLYE_INTERNAL_RESOURCE Private API audience (https://api.allye.app/internal/mcp) Required
ALLYE_MCP_CLIENT_ID Internal client (allye-mcp-internal) Required
ALLYE_MCP_CLIENT_SECRET Internal client secret from the secret manager Required
ALLYE_ALLOWED_ORIGINS JSON array of browser origins (production: ["https://allye.app"]) Required
ALLYE_JWKS_CACHE_TTL Public-key cache duration in seconds Default 3600
ALLYE_TRANSPORT_MODE stdio, http, or both Set to http or both
ALLYE_HTTP_HOST HTTP bind host Default 127.0.0.1
ALLYE_HTTP_PORT HTTP bind port Default 3000
ALLYE_LOG_LEVEL DEBUG, INFO, WARNING, ERROR, or CRITICAL Default INFO
ALLYE_PAT_TOKEN Local STDIO credential Never used for HTTP

See .env.example for the complete template.

HTTP resource-server operation

Supply all required values through the deployment secret/configuration manager, then start without --pat:

export ALLYE_TRANSPORT_MODE=http
allye-mcp

The only MCP endpoint is POST /mcp. Protected-resource metadata is available only at GET /.well-known/oauth-protected-resource/mcp; GET /mcp is not an SSE transport. GET /health remains a public local diagnostic and grants no tool access.

HTTP and STDIO can run together:

export ALLYE_TRANSPORT_MODE=both
export ALLYE_PAT_TOKEN=<stdio-only-token>
allye-mcp

The HTTP side still requires the full OAuth configuration and never falls back to that PAT. Missing startup configuration fails closed. If JWKS, service-token, grant activity, or required API authorization is unavailable, protected requests return HTTP 503; the server does not reinterpret the failure as an invalid user token, open a login flow, or run the tool.


Project Structure

allye-mcp-py/
├── allye_mcp/                  # Main package
│   ├── main.py                 # Entry point (CLI)
│   ├── application/            # Use cases and services
│   ├── domain/                 # Business entities
│   ├── infrastructure/         # External integrations (API, transport)
│   └── interface/              # MCP protocol handlers
├── tests/                      # Test suite
├── docs/                       # Documentation
├── pyproject.toml              # Project configuration
└── .env.example                # Environment template
allye_mcp/ — Package Structure
Directory Responsibility
main.py CLI entry point, argument parsing, server bootstrap
application/ Use cases, handlers for each MCP tool
domain/ Business entities, DTOs, validation
infrastructure/ API client, HTTP transport, logging
interface/ MCP protocol implementation, tool registration

Architecture

MCP Client → interface/ → application/ → infrastructure/ → Allye API
                              ↓
                          domain/
                        (entities)

Tech Stack

Layer Technology
Runtime Python 3.10+
Validation Pydantic 2
HTTP aiohttp, requests
Config pydantic-settings
Testing pytest, pytest-asyncio
Linting flake8, black, mypy

Development

Setup

# Clone and install
git clone <repo>
cd allye-mcp-py
pip install -e .[dev]

Scripts

Command Description
pytest Run tests
pytest --cov=allye_mcp Run with coverage
black allye_mcp/ tests/ Format code
flake8 allye_mcp/ tests/ Lint
mypy allye_mcp/ Type check

Commit Convention

Follow Conventional Commits:

Prefix Description Version Bump
fix: Bug fixes Patch
feat: New features Minor
BREAKING CHANGE: Breaking changes Major
chore: Maintenance None
docs: Documentation None

CI/CD

Platform Usage
GitHub Actions Tests, lint, build on push/PR to main
Semantic Release Auto-version based on commits
PyPI Package distribution

Troubleshooting

command not found: allye-mcp

Add scripts directory to PATH:

# macOS/Linux
export PATH="$PATH:~/.local/bin"

# Windows
# Add %APPDATA%\Python\Python311\Scripts to PATH
401 Unauthorized
  • Remote HTTP: the grant or access token is no longer active. Use the harness's native authentication command for the allye entry when you intentionally want to authorize again. Do not add a static bearer header.
  • Local STDIO: check the explicit --pat or ALLYE_PAT_TOKEN value.
503 Service Unavailable

OAuth activity could not be established safely. Keep the existing client registration and credentials, restore the issuer/JWKS/private API dependency, and retry. A 503 is not a signal to clear credentials or open a new browser authorization.

Run HTTP and STDIO simultaneously

Configure all HTTP OAuth variables, then provide a PAT only for the STDIO side:

export ALLYE_TRANSPORT_MODE=both
export ALLYE_PAT_TOKEN=<stdio-only-token>
allye-mcp

Security

  • Keep the internal MCP client secret in the deployment secret manager.
  • Let remote harnesses store OAuth credentials in their native credential store.
  • Keep local STDIO PATs out of project configuration and version control.
  • Never forward external bearer tokens to the Allye API.
  • Revoke only the affected MCP grant when access is no longer needed.
  • Use pipx to isolate a local STDIO installation from global Python.

Resource URL
PyPI https://pypi.org/project/allye-mcp/
Allye Cloud https://allye.devshire.app
MCP Protocol https://modelcontextprotocol.io

Metadata

Release files for allye-mcp 1.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for allye-mcp 1.17.0
File Size Uploaded Provenance Actions
allye_mcp-1.17.0.tar.gz 165.0 kB Without provenance Details for allye_mcp-1.17.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for allye-mcp 1.17.0
File Interpreter ABI Platform Actions
allye_mcp-1.17.0-py3-none-any.whl Python 3 none any Details for allye_mcp-1.17.0-py3-none-any.whl

Total release size: 361.3 kB

Release files / allye_mcp-1.17.0.tar.gz

Download URL allye_mcp-1.17.0.tar.gz
Size 165.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0f811f4ecc6849e2526a3a4e22c12f56b2305a0e0e626761d82036a8b96136a9
BLAKE2b-256 checksum
How to use checksums
5815fac10a9f769be9e1bd2cb3bfbb117d4964dd06c5595bccd1114a0fe1ce6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / allye_mcp-1.17.0-py3-none-any.whl

Download URL allye_mcp-1.17.0-py3-none-any.whl
Size 196.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3c1f94a0740ee367efd1d5f462c9b243f1e83c3dbf578aa2fb602d68bc26baef
BLAKE2b-256 checksum
How to use checksums
ca12d590825be64e2edc4dd53a1b61b5db9a52b61133edb974313c8bf6507005
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for allye-mcp 1.17.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.17.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page