fc-client-docker 0.9.2__tar.gz → 0.9.3__tar.gz
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.
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/PKG-INFO +1 -1
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/PKG-INFO +1 -1
- fc_client_docker-0.9.3/fc_common/VERSION +1 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/README.md +25 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_server.py +29 -1
- fc_client_docker-0.9.2/fc_common/VERSION +0 -1
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.QualityGate +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.github/workflows/main.yml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.gitignore +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.pylintrc +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.python-version +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/.readthedocs.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/LICENSE +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/README.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/SCR-fc.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/black.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/docker.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/package.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/publish_docker.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/pylint.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/pytest.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/ci/setup.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/Makefile +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/conf.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/configuration.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/css/css-style.css +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/images/architecture.svg +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/images/era.svg +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/images/fc.png +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/images/flowchart.svg +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/images/principle.svg +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/index.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/make.bat +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/overview.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/quickstart.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/support.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/doc/usage.rst +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_client/Dockerfile +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_client/fc-agent +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_client/fc-client +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_guarder/Dockerfile +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_guarder/docker-compose.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_guarder/entrypoint.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_guarder/sample.env +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_server/Dockerfile +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_server/docker-compose.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/docker/fc_server/entrypoint.sh +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_agent/agent.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client/client.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client/sample_client.env +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_daemon/client_daemon.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker/fc_client_docker +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/SOURCES.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/dependency_links.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/entry_points.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/top_level.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_common/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_common/config.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_common/etcd.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_common/logger.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_common/version.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_guarder/guarder.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_base.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/external/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/external/uboot_mcp.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/external/uuu_bcu_mcp.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/internal/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/internal/fc_mcp.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/config/sample_cfg.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/config/sample_lavacli.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/config/sample_resource.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/api_svr.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/config.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/coordinator.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/decorators.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/core/plugin.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/management/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/management/cmd_online_lava_devices.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/management/common.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/labgrid.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/lava.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/utils/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/utils/labgrid.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/plugins/utils/lava.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/server.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/tools/cache_helper.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server_daemon/__init__.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server_daemon/server_daemon.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements/agent-requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements/ci-requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements/client-requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements/doc-requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements/server-requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/requirements.txt +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/setup.cfg +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/setup.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/conftest.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_client/test_client.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_guarder/conftest.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_guarder/test_guarder.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/config/cfg.yaml +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/conftest.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/test_config.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/test_coordinator.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/test_misc.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/test_plugin_labgrid.py +0 -0
- {fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/tests/fc_server/test_plugin_lava.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.9.3
|
|
@@ -77,6 +77,7 @@ in containers/services without CLI arguments. CLI flags take precedence.
|
|
|
77
77
|
| `--host` | `FC_MCP_HOST` | `127.0.0.1` | Bind host (HTTP transport only). |
|
|
78
78
|
| `--port` | `FC_MCP_PORT` | `8000` | Bind port (HTTP transport only). |
|
|
79
79
|
| `--path` | `FC_MCP_PATH` | `/mcp` | URL path the MCP endpoint is served on (HTTP only).|
|
|
80
|
+
| `--workdir` | `FC_MCP_WORKDIR` | _(unset)_ | Working directory for the server. Created automatically if missing. Supports `~`/`$VAR`. |
|
|
80
81
|
| _(none)_ | `FC_MCP_AUTH_TOKEN` | _(unset)_ | Static Bearer token for HTTP transport (env only). |
|
|
81
82
|
|
|
82
83
|
Example using environment variables:
|
|
@@ -89,6 +90,30 @@ fc-mcp
|
|
|
89
90
|
# -> http://0.0.0.0:9000/mcp
|
|
90
91
|
```
|
|
91
92
|
|
|
93
|
+
### Working directory
|
|
94
|
+
|
|
95
|
+
By default the server runs in whatever directory the launching process is in
|
|
96
|
+
(for stdio this is the MCP client's working directory). Set `FC_MCP_WORKDIR`
|
|
97
|
+
to force a specific working directory. This is where generated artifacts (for
|
|
98
|
+
example flash/U-Boot helper scripts) are written.
|
|
99
|
+
|
|
100
|
+
- The directory is created automatically (including parent directories) if it
|
|
101
|
+
does not exist.
|
|
102
|
+
- `~` and `$VAR` are expanded, so a shared config works per user. For shell
|
|
103
|
+
configs prefer `$HOME/...` (the shell expands it at assignment); the server
|
|
104
|
+
also expands `~`/`$VAR` itself as a fallback, so both resolve to the running
|
|
105
|
+
user's home directory.
|
|
106
|
+
- If the directory cannot be created or entered (permissions, path is a file),
|
|
107
|
+
a warning is printed and the current directory is kept, so startup is never
|
|
108
|
+
blocked.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Any of these resolve to the running user's home-based directory:
|
|
112
|
+
export FC_MCP_WORKDIR="$HOME/fc_mcp_work" # recommended (shell expands $HOME)
|
|
113
|
+
export FC_MCP_WORKDIR="~/fc_mcp_work" # expanded by the server
|
|
114
|
+
fc-mcp
|
|
115
|
+
```
|
|
116
|
+
|
|
92
117
|
## Authentication (HTTP transport)
|
|
93
118
|
|
|
94
119
|
By default the HTTP endpoint is **unauthenticated** — anyone who can reach
|
|
@@ -144,17 +144,42 @@ def _default_idle_timeout():
|
|
|
144
144
|
return 3600
|
|
145
145
|
|
|
146
146
|
|
|
147
|
+
def _apply_workdir(workdir):
|
|
148
|
+
"""Change cwd to FC_MCP_WORKDIR/--workdir, creating it if needed."""
|
|
149
|
+
if not workdir:
|
|
150
|
+
return
|
|
151
|
+
|
|
152
|
+
path = os.path.abspath(os.path.expanduser(os.path.expandvars(workdir)))
|
|
153
|
+
try:
|
|
154
|
+
os.makedirs(path, exist_ok=True)
|
|
155
|
+
os.chdir(path)
|
|
156
|
+
print(f"FC MCP working directory set to: {path}", file=sys.stderr)
|
|
157
|
+
except OSError as exce:
|
|
158
|
+
print(f"Warning: cannot use workdir '{path}': {exce}", file=sys.stderr)
|
|
159
|
+
|
|
160
|
+
|
|
147
161
|
def parse_args():
|
|
148
162
|
"""Parse command line arguments for transport selection.
|
|
149
163
|
|
|
150
164
|
Environment variables provide the defaults so the server can be
|
|
151
165
|
configured in containerized/service deployments without CLI flags:
|
|
152
|
-
FC_MCP_TRANSPORT, FC_MCP_HOST, FC_MCP_PORT, FC_MCP_PATH,
|
|
166
|
+
FC_MCP_TRANSPORT, FC_MCP_HOST, FC_MCP_PORT, FC_MCP_PATH,
|
|
167
|
+
FC_MCP_IDLE_TIMEOUT, FC_MCP_WORKDIR
|
|
153
168
|
"""
|
|
154
169
|
parser = argparse.ArgumentParser(
|
|
155
170
|
prog="fc-mcp",
|
|
156
171
|
description="FC MCP Server (supports stdio and streamable HTTP transports).",
|
|
157
172
|
)
|
|
173
|
+
parser.add_argument(
|
|
174
|
+
"--workdir",
|
|
175
|
+
default=os.environ.get("FC_MCP_WORKDIR"),
|
|
176
|
+
help=(
|
|
177
|
+
"Working directory for the server. Created automatically if it "
|
|
178
|
+
"does not exist. Supports '~' and '$VAR' expansion. "
|
|
179
|
+
"Env: FC_MCP_WORKDIR."
|
|
180
|
+
),
|
|
181
|
+
)
|
|
182
|
+
|
|
158
183
|
parser.add_argument(
|
|
159
184
|
"--transport",
|
|
160
185
|
choices=["stdio", "http"],
|
|
@@ -231,10 +256,13 @@ def _configure_http_auth():
|
|
|
231
256
|
def main():
|
|
232
257
|
args = parse_args()
|
|
233
258
|
|
|
259
|
+
_apply_workdir(args.workdir)
|
|
260
|
+
|
|
234
261
|
if args.transport == "http":
|
|
235
262
|
# Streamable HTTP transport for remote/third-party MCP clients.
|
|
236
263
|
# Clients connect to http://<host>:<port><path>, e.g. http://127.0.0.1:8000/mcp
|
|
237
264
|
Logger.init("fc_mcp", log_name="mcp_server.log")
|
|
265
|
+
|
|
238
266
|
_configure_http_auth()
|
|
239
267
|
|
|
240
268
|
idle_monitor = None
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.9.2
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_client_docker.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_mcp/mcp_plugins/external/uuu_bcu_mcp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fc_client_docker-0.9.2 → fc_client_docker-0.9.3}/fc_server/management/cmd_online_lava_devices.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|