crowe-logic-mcp
README.md
# crowe-logic-mcp
An MCP server with four tools that forward chat, image, grow-log, and procedure requests to a Crowe Logic HTTP endpoint.
## Status
Experimental. Version 1.0.0 is on PyPI. As published it does not run: `pyproject.toml` allows any `mcp>=1.0.0`, a fresh install today resolves mcp 2.2.0, and `crowe_logic_mcp/server.py` imports `mcp.server.fastmcp.FastMCP`, which mcp 2.x removed. Pinned to `mcp<2` the server starts and lists its tools, but every tool forwards to the default endpoint set in `server.py`, which on 2026-09-10 presented a TLS certificate for a different host name, so every call fails. No tool in this repository has been shown to return a result.
## Install and first run
Requirements from `pyproject.toml`: Python 3.10 or newer, `mcp[cli]>=1.0.0`, `httpx>=0.28.0`. We ran the commands below on 2026-09-10 on macOS with uv 0.11.23.
The install line the previous README gave, from PyPI:
```sh
uvx crowe-logic-mcp
```
Last lines of the output (paths shortened):
```
from mcp.server.fastmcp import FastMCP
File ".../site-packages/mcp/server/fastmcp.py", line 16, in <module>
raise ModuleNotFoundError(_MESSAGE, name=__name__)
ModuleNotFoundError: No module named 'mcp.server.fastmcp'. This is mcp 2.x, where FastMCP was renamed to MCPServer (from mcp.server.mcpserver import MCPServer) and other APIs changed; see the migration guide at https://py.sdk.modelcontextprotocol.io/v2/migration/#fastmcp-renamed-to-mcpserver or pin 'mcp<2' to keep running v1 code.
```
From this repository, with Python 3.12:
```sh
git clone https://github.com/MichaelCrowe11/crowe-logic-mcp
cd crowe-logic-mcp
uv venv --python 3.12 .venv
uv pip install -e . --python .venv/bin/python
```
```
Resolved 40 packages in 347ms
Building crowe-logic-mcp @ file:///private/tmp/readme-makeover/crowe-logic-mcp
Built crowe-logic-mcp @ file:///private/tmp/readme-makeover/crowe-logic-mcp
Prepared 1 package in 555ms
Installed 40 packages in 92ms
+ crowe-logic-mcp==1.0.0 (from file:///private/tmp/readme-makeover/crowe-logic-mcp)
+ mcp==2.2.0
```
(Package list shortened to the two this README talks about.) That install fails at import for the reason above. Pin the older library:
```sh
uv pip install "mcp[cli]<2" --python .venv/bin/python
```
```
Uninstalled 1 package in 16ms
Installed 3 packages in 6ms
- mcp==2.2.0
+ mcp==1.30.0
```
The server speaks MCP over stdio, so it prints nothing on its own. To see it work, save this as `probe.py` and run `.venv/bin/python probe.py .venv/bin/crowe-logic-mcp`:
```python
import asyncio, sys
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
params = StdioServerParameters(command=sys.argv[1], args=[])
async with stdio_client(params) as (r, w):
async with ClientSession(r, w) as s:
init = await s.initialize()
print("server:", init.serverInfo.name, init.serverInfo.version)
tools = await s.list_tools()
for t in tools.tools:
print("tool:", t.name, "|", (t.description or "").splitlines()[0][:90])
res = await s.call_tool("crowe_chat", {"message": "hello"})
print("crowe_chat isError:", res.isError)
for c in res.content:
print("crowe_chat content:", getattr(c, "text", "")[:300])
asyncio.run(main())
```
```
server: crowe-logic 1.30.0
tool: crowe_chat | Chat with CroweLM for mycology and cultivation expertise.
tool: crowe_vision | Analyze an image using Crowe Vision -- specialized for mushroom cultivation photos.
tool: crowe_grow_log | Manage mushroom cultivation grow logs.
tool: crowe_sop | Generate a Standard Operating Procedure for mushroom cultivation tasks.
crowe_chat isError: True
crowe_chat content: Error executing tool crowe_chat: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'ai.southwestmushrooms.com'. (_ssl.c:1010)
```
The version the server reports (1.30.0) is the mcp library's, not this package's. The tool descriptions are the docstrings in `server.py`; they describe the remote service, not code in this repository.
Not run here: any call against a live `CROWE_LOGIC_URL`, the `crowe_vision`, `crowe_grow_log`, and `crowe_sop` tools, and use from an MCP client such as Claude Code or Cursor.
## What runs today
- `crowe_logic_mcp/server.py` builds a FastMCP server named `crowe-logic` with four tools. Each one sends an `httpx` request to `CROWE_LOGIC_URL` (the default host is set at the top of `_request` in `server.py`), adds `Authorization: Bearer <CROWE_LOGIC_KEY>` when that variable is set, waits up to 60 seconds, raises on a non-2xx status, and returns the JSON body as text.
- `crowe_chat(message, context="")` posts to `/api/chat`.
- `crowe_vision(image_base64, prompt="Analyze this image")` posts to `/api/crowe-vision/analyze`.
- `crowe_grow_log(action, data="{}")` maps `list`, `create`, `read`, `update` onto `GET`, `POST`, `GET`, `PATCH` at `/api/conversations` and `/api/conversations/<id>`.
- `crowe_sop(topic, parameters="{}")` posts the message "Generate a detailed Standard Operating Procedure for: <topic>" to `/api/chat` with the parameters as context.
- Entry points: the console script `crowe-logic-mcp` (`pyproject.toml`) and `python -m crowe_logic_mcp` (`crowe_logic_mcp/__main__.py`).
- Published: crowe-logic-mcp 1.0.0 on PyPI, one release. `dist/` in this repository holds the 1.0.0 wheel and sdist.
- No tests.
## Roadmap
None is written down in this repository.
## Limits
This server does nothing on its own. Every answer comes from whatever service is at `CROWE_LOGIC_URL`. The repository holds no model, no image analysis, and no grow-log storage; the words "mycology expertise", "contamination", and "species" in the tool docstrings describe the remote service and have not been checked here.
The default endpoint did not serve its own host name on 2026-09-10. The name resolves to a Railway host whose certificate is for another name (see the probe output above). Set `CROWE_LOGIC_URL` to a live service or nothing works.
Do not rely on anything this server returns to decide whether a mushroom is safe to eat, or to diagnose contamination. It passes the remote response through unchecked.
`crowe_grow_log` talks to `/api/conversations`, a chat conversation route, not a grow-log route. `pyproject.toml` names `https://github.com/MichaelCrowe11/crowe-logic-foundry` as the repository, which is a different repository. `dist/` and `crowe_logic_mcp.egg-info/` are build artifacts that are committed. There is no `.gitignore`.
## License and contact
`pyproject.toml` declares `license = "MIT"` and the published metadata carries `License-Expression: MIT`. No LICENSE file is in the repository; the MIT text has not been added.
Contact: michael@crowelogic.com
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues