Fênix Cloud MCP server implemented in Python
Project description
Fenix MCP Server
Python MCP server for Fenix Cloud API integration
Quick Start • Installation • Configuration • Structure
Overview
Fenix MCP connects MCP-compatible clients (Claude Code, Cursor, Windsurf, VS Code, etc.) directly to the Fenix Cloud APIs. Every tool invocation hits the live backend—no outdated snapshots or hallucinated IDs.
Available Tools:
knowledge— Documentation CRUD, work items, modes, rulesproductivity— TODO managementintelligence— Memories and smart operationsuser_config— User configuration documentsinitialize— Personalized setuphealth— Backend health check
Quick Start
pipx install fenix-mcp # Install
fenix-mcp --pat <your-token> # Run (STDIO mode)
Requirements
| Requirement | Version |
|---|---|
| Python | 3.10+ |
| Fenix PAT Token | Required |
| MCP Client | Claude Code, Cursor, Windsurf, VS Code, etc. |
Installation
With pipx (recommended)
pipx install fenix-mcp
With pip
pip install --user fenix-mcp
Upgrade
pipx upgrade fenix-mcp
# or
pip install --upgrade fenix-mcp
Configuration
MCP Client Setup
Claude Code — ~/.claude/config.toml
[mcp_servers.fenix]
command = "fenix-mcp"
args = ["--pat", "your-token"]
Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"fenix": {
"command": "fenix-mcp",
"args": ["--pat", "your-token"],
"disabled": false
}
}
}
VS Code / Windsurf — settings.json
{
"modelContextProtocol.mcpServers": {
"fenix": {
"command": "fenix-mcp",
"args": ["--pat", "your-token"]
}
}
}
Environment Variables
| Variable | Description | Default |
|---|---|---|
FENIX_API_URL |
Fenix Cloud API base URL | https://fenix-api.devshire.app |
FENIX_PAT_TOKEN |
Token (alternative to --pat) |
empty |
FENIX_TRANSPORT_MODE |
stdio, http, or both |
stdio |
FENIX_HTTP_HOST |
HTTP transport host | 127.0.0.1 |
FENIX_HTTP_PORT |
HTTP transport port | 5003 |
FENIX_LOG_LEVEL |
Log level (DEBUG, INFO, etc.) |
INFO |
See .env.example for reference.
HTTP Transport
export FENIX_TRANSPORT_MODE=http
export FENIX_HTTP_PORT=5003
fenix-mcp --pat <your-token>
JSON-RPC endpoint: http://127.0.0.1:5003/jsonrpc
Run both STDIO and HTTP:
export FENIX_TRANSPORT_MODE=both
fenix-mcp --pat <your-token>
Project Structure
fenix-mcp-py/
├── fenix_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
fenix_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/ → Fenix 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 fenix-mcp-py
pip install -e .[dev]
Scripts
| Command | Description |
|---|---|
pytest |
Run tests |
pytest --cov=fenix_mcp |
Run with coverage |
black fenix_mcp/ tests/ |
Format code |
flake8 fenix_mcp/ tests/ |
Lint |
mypy fenix_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: fenix-mcp
Add scripts directory to PATH:
# macOS/Linux
export PATH="$PATH:~/.local/bin"
# Windows
# Add %APPDATA%\Python\Python311\Scripts to PATH
401 Unauthorized
- Check
--patorFENIX_PAT_TOKENis set correctly - Regenerate token in Fenix Cloud if expired
Run HTTP and STDIO simultaneously
export FENIX_TRANSPORT_MODE=both
fenix-mcp --pat <your-token>
Security
- Store tokens securely (keychain,
pass,.env) - Never commit secrets to git
- Revoke tokens when no longer needed
- Use
pipxto isolate from global Python
Useful Links
| Resource | URL |
|---|---|
| PyPI | https://pypi.org/project/fenix-mcp/ |
| Fenix Cloud | https://fenix.devshire.app |
| MCP Protocol | https://modelcontextprotocol.io |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fenix_mcp-2.14.1.tar.gz.
File metadata
- Download URL: fenix_mcp-2.14.1.tar.gz
- Upload date:
- Size: 59.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
588553b40e94f574f9b68f49b49260990e9818cb96d00bfdc6042bd0b1956f02
|
|
| MD5 |
7fe51a8f9e182cb40aae14eb3c2fd0d0
|
|
| BLAKE2b-256 |
6ab56c337b0228398f2541f3adc8eb9932c8b629ad78ed0d35aa78fa8968d543
|
File details
Details for the file fenix_mcp-2.14.1-py3-none-any.whl.
File metadata
- Download URL: fenix_mcp-2.14.1-py3-none-any.whl
- Upload date:
- Size: 87.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42835767cc9a2920ecbaca8a87b41af291175da1cec544e250e9b88fda7e72c8
|
|
| MD5 |
2085310525a240eb2a53e75aac718d79
|
|
| BLAKE2b-256 |
1435925fc2e3d846d612392f2acdc4b0b209d903a21a6395289ebdc94f1a0126
|