fenix-mcp 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,208 @@
1
+ Metadata-Version: 2.4
2
+ Name: fenix-mcp
3
+ Version: 0.1.0
4
+ Summary: Fênix Cloud MCP server implemented in Python
5
+ Author: Fenix Inc
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: pydantic>=2.5
9
+ Requires-Dist: requests>=2.31
10
+ Requires-Dist: urllib3>=2.0
11
+ Requires-Dist: aiohttp>=3.9
12
+ Requires-Dist: pydantic-settings>=2.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=7.4; extra == "dev"
15
+ Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
16
+
17
+ # Fênix MCP — Live Access to Fênix Cloud Data
18
+
19
+ [![PyPI](https://img.shields.io/pypi/v/fenix-mcp.svg)](https://pypi.org/project/fenix-mcp/) [![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
20
+
21
+ **Fênix MCP** connects MCP-compatible clients (Codex, Cursor, Context7, Windsurf, VS Code, etc.) directly to the Fênix Cloud APIs. Every tool invocation hits the live backend—no outdated snapshots or hallucinated IDs.
22
+
23
+ ## ❌ Without Fênix MCP
24
+
25
+ - Manual lookups in the web console slow you down
26
+ - Agents fabricate document status, IDs, or team data
27
+ - Automation workflows stall on stale information
28
+
29
+ ## ✅ With Fênix MCP
30
+
31
+ - Real-time API calls over STDIO or HTTP
32
+ - Rich toolset: documentation CRUD, work items, modes, rules, TODOs, memories
33
+ - Built for multi-user environments and multiple MCP clients
34
+
35
+ ## 🛠 Requirements
36
+
37
+ - Python 3.10 or newer
38
+ - Fênix Cloud Personal Access Token (`FENIX_PAT_TOKEN`)
39
+ - Any MCP client (Codex, Cursor, VS Code MCP, etc.)
40
+
41
+ ## 🚀 Installation
42
+
43
+ ### With `pipx` (recommended)
44
+
45
+ ```bash
46
+ pipx install fenix-mcp
47
+ ```
48
+
49
+ ### With `pip`
50
+
51
+ ```bash
52
+ pip install --user fenix-mcp
53
+ ```
54
+
55
+ To upgrade:
56
+
57
+ ```bash
58
+ pipx upgrade fenix-mcp
59
+ # or
60
+ pip install --upgrade fenix-mcp
61
+ ```
62
+
63
+ ## ▶️ Quick Start
64
+
65
+ Launch the STDIO server by providing your token (or set `FENIX_PAT_TOKEN` beforehand):
66
+
67
+ ```bash
68
+ fenix-mcp --pat <your-token>
69
+ ```
70
+
71
+ The command accepts all flags supported by `fenix_mcp.main` and responds over STDIO, ready for MCP clients.
72
+
73
+ ## ⚙️ MCP Client Configuration
74
+
75
+ ### Codex CLI (`~/.codex/config.toml`)
76
+
77
+ ```toml
78
+ [mcp_servers.fenix]
79
+ command = "fenix-mcp"
80
+ args = ["--pat", "your-token"]
81
+ ```
82
+
83
+ ### Cursor (`~/.cursor/mcp.json`)
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "fenix": {
89
+ "command": "fenix-mcp",
90
+ "args": ["--pat", "your-token"],
91
+ "disabled": false
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ ### VS Code (Insiders) / Windsurf (`settings.json`)
98
+
99
+ ```json
100
+ {
101
+ "modelContextProtocol.mcpServers": {
102
+ "fenix": {
103
+ "command": "fenix-mcp",
104
+ "args": ["--pat", "your-token"]
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ > 💡 Install with `pipx install fenix-mcp --python python3.11` to keep the CLI isolated from your global Python.
111
+
112
+ ## 🌐 Optional HTTP Transport
113
+
114
+ ```bash
115
+ export FENIX_TRANSPORT_MODE=http
116
+ export FENIX_HTTP_PORT=5003
117
+ fenix-mcp --pat <your-token>
118
+ ```
119
+
120
+ Set `FENIX_TRANSPORT_MODE=both` to run STDIO and HTTP simultaneously. The default JSON-RPC endpoint is `http://127.0.0.1:5003/jsonrpc`.
121
+
122
+ ## 🔧 Environment Variables
123
+
124
+ | Variable | Description | Default |
125
+ | --- | --- | --- |
126
+ | `FENIX_API_URL` | Base URL of Fênix Cloud API | `https://fenix-api.devshire.app` |
127
+ | `FENIX_PAT_TOKEN` | Token used when `--pat` is omitted | empty |
128
+ | `FENIX_TRANSPORT_MODE` | `stdio`, `http`, or `both` | `stdio` |
129
+ | `FENIX_HTTP_HOST` | Host for HTTP transport | `127.0.0.1` |
130
+ | `FENIX_HTTP_PORT` | Port for HTTP transport | `5003` |
131
+ | `FENIX_LOG_LEVEL` | Global log level (`DEBUG`, `INFO`, …) | `INFO` |
132
+
133
+ > Copy `.env.example` to `.env` for easier customization.
134
+
135
+ ## 🧪 Local Testing
136
+
137
+ ```bash
138
+ pip install -e .[dev]
139
+ pytest
140
+ ```
141
+
142
+ ## 🔄 Automation
143
+
144
+ - **CI (GitHub Actions)** – runs on pushes and pull requests targeting `main`. It installs dependencies, runs `pytest`, builds the distribution artifacts, and uploads them as workflow artifacts.
145
+ - **Publish workflow** – push a tag `v*` (or trigger the "Publish" workflow manually) to build the package and, if `PYPI_API_TOKEN` is set in repository secrets, upload artifacts to PyPI via `twine`.
146
+
147
+ ## 🧰 Available Tools
148
+
149
+ - `knowledge` – documentation CRUD, work items, modes, rules
150
+ - `productivity` – TODO management
151
+ - `intelligence` – memories and smart operations
152
+ - `initialize` – personalized setup
153
+ - `health` – backend health check
154
+
155
+ ## 🔐 Security Tips
156
+
157
+ - Store tokens securely (`pass`, keychain, `.env`) and never commit secrets.
158
+ - Revoke tokens when no longer needed.
159
+ - In shared environments, prefer `pipx + FENIX_PAT_TOKEN` exported per session.
160
+
161
+ ## ❓ Troubleshooting
162
+
163
+ <details>
164
+ <summary><b>"command not found: fenix-mcp"</b></summary>
165
+
166
+ - Ensure the `pipx`/`pip --user` scripts directory is on your `PATH`.
167
+ - macOS/Linux: `export PATH="$PATH:~/.local/bin"`
168
+ - Windows: check `%APPDATA%\Python\Python311\Scripts` (adjust version as needed).
169
+
170
+ </details>
171
+
172
+ <details>
173
+ <summary><b>"401 Unauthorized" or authentication errors</b></summary>
174
+
175
+ - Confirm `--pat` or `FENIX_PAT_TOKEN` is set correctly.
176
+ - Regenerate tokens in Fênix Cloud if they have expired or been revoked.
177
+
178
+ </details>
179
+
180
+ <details>
181
+ <summary><b>Use HTTP and STDIO at the same time</b></summary>
182
+
183
+ ```bash
184
+ export FENIX_TRANSPORT_MODE=both
185
+ fenix-mcp --pat <your-token>
186
+ ```
187
+
188
+ STDIO stays active for MCP clients; HTTP will listen on `FENIX_HTTP_HOST:FENIX_HTTP_PORT`.
189
+
190
+ </details>
191
+
192
+ ## 🗺 Roadmap
193
+
194
+ - Official Docker image for Fênix MCP
195
+ - Convenience install scripts (`curl | sh`) for macOS/Linux/Windows
196
+ - Additional integrations (public core documents, more tools)
197
+
198
+ ## 🤝 Contributing
199
+
200
+ 1. Fork the repository
201
+ 2. Create a branch: `git checkout -b feat/my-feature`
202
+ 3. Install dev dependencies: `pip install -e .[dev]`
203
+ 4. Run `pytest`
204
+ 5. Open a Pull Request describing your changes
205
+
206
+ ## 📄 License
207
+
208
+ Distributed under the [MIT License](./LICENSE).
@@ -0,0 +1,29 @@
1
+ fenix_mcp/__init__.py,sha256=nTREVrJtZzmSmdDZFwDL_ukRPCz4HaYOrGOdEWgze_s,489
2
+ fenix_mcp/main.py,sha256=HfOSB0OfmlnpS6mDxwtjtVYm9cFsNY48cz2cGJJEEXs,2834
3
+ fenix_mcp/application/presenters.py,sha256=fGME54PdCDhTBhXO-JUB9yLdBHiE1aeXLTC2fCuxnxM,689
4
+ fenix_mcp/application/tool_base.py,sha256=OzXbxbPOH-lVoVt9KUXtPE-jd_uP7pkadWWxVnLDqmY,1303
5
+ fenix_mcp/application/tool_registry.py,sha256=ji0Bn4Q7FzDdxWM2LoZSSW2M7wb00Tx79f_hQ-SrnDE,1236
6
+ fenix_mcp/application/tools/__init__.py,sha256=Gi1YvYh-KdL9HD8gLVrknHrxiKKEOhHBEZ02KBXJaKQ,796
7
+ fenix_mcp/application/tools/health.py,sha256=vxtRkn0O7qUqnBZGrE9DqJXGY9dXdqUvRcmzpOULK_E,872
8
+ fenix_mcp/application/tools/initialize.py,sha256=9GbRcnXHDGcgEfpdK5GPnzJuKjBnUIvoTpR_S4lBcm4,4483
9
+ fenix_mcp/application/tools/intelligence.py,sha256=P1Jr0E9KrfL05n7Lz_n0BFknyrDM1UZm9WAai703jqM,11856
10
+ fenix_mcp/application/tools/knowledge.py,sha256=pG9hxjHD8KqoPEMMw1Ckex7n4VQHwgRqedYOR3p9lzI,43386
11
+ fenix_mcp/application/tools/productivity.py,sha256=kIJerVvm-dTK0laqaIBIq-xGXxXLxCKPnkEk5qE4ycg,9843
12
+ fenix_mcp/application/tools/user_config.py,sha256=KdgoSF-Jn15HpKpOYpOifo4bMMy0izK1ZanrZP3E9Jc,6152
13
+ fenix_mcp/domain/initialization.py,sha256=uywqJK942vq1_DFp6TpIyPMC88RF2uCQa5Hke0JUQFM,7181
14
+ fenix_mcp/domain/intelligence.py,sha256=phkNTxLvMB_e5A1Kz5o5Eij9jMmiIPFpNcwEGZT_TEk,4537
15
+ fenix_mcp/domain/knowledge.py,sha256=PCbuW1habq19WgR5DJeRbh4KmCNmIlwl-BI7QENEC0E,19217
16
+ fenix_mcp/domain/productivity.py,sha256=aN4Xmp7j4tS759fe5ATBRpoA2zwCJ6Z0zdjTkjqQp20,6681
17
+ fenix_mcp/domain/user_config.py,sha256=VnKEyWN6kCYtrlw_377NkoHOBcLL4fCNPZy5xHSygMQ,1544
18
+ fenix_mcp/infrastructure/config.py,sha256=i2dAN98jmxDTtFR8Z5EBhExVbdtWf2ofwWOpSlXz7CM,1880
19
+ fenix_mcp/infrastructure/context.py,sha256=slPZ5u6kLSHVogB8zz85CS6JNSi-vWzQGpHQFwWNn5U,471
20
+ fenix_mcp/infrastructure/http_client.py,sha256=MXTeeDPudZnmznO6TVPccpDeNOK-M1C4hI1TiVwTxuY,2476
21
+ fenix_mcp/infrastructure/logging.py,sha256=bHrWlSi_0HshRe3--BK_5nzUszW-gh37q6jsd0ShS2Y,1371
22
+ fenix_mcp/infrastructure/fenix_api/client.py,sha256=SZO5kAJTdUUEA-BVSNHtAB4XWdhI07GyWOT8lsUpPs4,27439
23
+ fenix_mcp/interface/mcp_server.py,sha256=tPDmby17IqAAhMFzi9M9bUBQml4WM9QbQ8iCfCyjdNs,2369
24
+ fenix_mcp/interface/transports.py,sha256=Ur8LRhhccbz74_v_QDnI_WM9OsjBSduGYc1iYw1Uyqg,8011
25
+ fenix_mcp-0.1.0.dist-info/METADATA,sha256=SKW2SRoGuXX_xiuuKZYlJsNYC5nEO6EaddDxYoSsqnc,5744
26
+ fenix_mcp-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
27
+ fenix_mcp-0.1.0.dist-info/entry_points.txt,sha256=o52x_YHBupEd-1Z1GSfUjv3gJrx5_I-EkHhCgt1WBaE,49
28
+ fenix_mcp-0.1.0.dist-info/top_level.txt,sha256=2G1UtKpwjaIGQyE7sRoHecxaGLeuexfjrOUjv9DDKh4,10
29
+ fenix_mcp-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ fenix-mcp = fenix_mcp.main:run
@@ -0,0 +1 @@
1
+ fenix_mcp