statuspro-mcp-server 0.1.0__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.
- statuspro_mcp_server-0.1.0/.claude-desktop-config.example.json +20 -0
- statuspro_mcp_server-0.1.0/.dockerignore +40 -0
- statuspro_mcp_server-0.1.0/.env.example +26 -0
- statuspro_mcp_server-0.1.0/.gitignore +179 -0
- statuspro_mcp_server-0.1.0/CHANGELOG.md +5 -0
- statuspro_mcp_server-0.1.0/Dockerfile +46 -0
- statuspro_mcp_server-0.1.0/MCP_CURSOR_SETUP.md +177 -0
- statuspro_mcp_server-0.1.0/PKG-INFO +352 -0
- statuspro_mcp_server-0.1.0/README.md +318 -0
- statuspro_mcp_server-0.1.0/docker-compose.yml +49 -0
- statuspro_mcp_server-0.1.0/docs/LOGGING.md +469 -0
- statuspro_mcp_server-0.1.0/docs/README.md +37 -0
- statuspro_mcp_server-0.1.0/docs/adr/0016-tool-interface-pattern.md +220 -0
- statuspro_mcp_server-0.1.0/docs/adr/0017-automated-tool-documentation.md +334 -0
- statuspro_mcp_server-0.1.0/docs/adr/README.md +41 -0
- statuspro_mcp_server-0.1.0/docs/deployment.md +388 -0
- statuspro_mcp_server-0.1.0/docs/development.md +376 -0
- statuspro_mcp_server-0.1.0/docs/docker.md +282 -0
- statuspro_mcp_server-0.1.0/docs/examples.md +133 -0
- statuspro_mcp_server-0.1.0/docs/index.md +1 -0
- statuspro_mcp_server-0.1.0/mcpb/.mcpbignore +18 -0
- statuspro_mcp_server-0.1.0/mcpb/manifest.template.json +54 -0
- statuspro_mcp_server-0.1.0/mcpb/pyproject.template.toml +34 -0
- statuspro_mcp_server-0.1.0/pyproject.toml +128 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/README.md +1 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/__init__.py +36 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/__main__.py +46 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/_fastmcp_patches.py +182 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/logging.py +321 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/prompts/__init__.py +15 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/resources/__init__.py +25 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/resources/help.py +84 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/resources/statuses.py +30 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/server.py +313 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/services/__init__.py +12 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/services/dependencies.py +35 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/__init__.py +20 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/list_coercion.py +87 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/orders.py +1098 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/param_types.py +22 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/prefab_ui.py +803 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/schemas.py +378 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/statuses.py +63 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/tools/tool_result_utils.py +115 -0
- statuspro_mcp_server-0.1.0/src/statuspro_mcp/unpack.py +266 -0
- statuspro_mcp_server-0.1.0/tests/__init__.py +1 -0
- statuspro_mcp_server-0.1.0/tests/conftest.py +62 -0
- statuspro_mcp_server-0.1.0/tests/test_logging.py +247 -0
- statuspro_mcp_server-0.1.0/tests/test_mcp_apps_integration.py +186 -0
- statuspro_mcp_server-0.1.0/tests/test_observability_decorators.py +336 -0
- statuspro_mcp_server-0.1.0/tests/test_package.py +47 -0
- statuspro_mcp_server-0.1.0/tests/test_unpack.py +272 -0
- statuspro_mcp_server-0.1.0/tests/tools/__init__.py +0 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_batch_tools.py +375 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_list_coercion.py +152 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_orders_history_truncation.py +221 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_prefab_ui.py +630 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_result_schemas.py +67 -0
- statuspro_mcp_server-0.1.0/tests/tools/test_tool_result_utils.py +73 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"statuspro-erp-dev": {
|
|
4
|
+
"command": "/Users/YOUR_USERNAME/.local/bin/uv",
|
|
5
|
+
"args": ["run", "mcp-hmr", "src/statuspro_mcp/server.py:mcp"],
|
|
6
|
+
"cwd": "/REPLACE/WITH/YOUR/PATH/TO/statuspro-openapi-client/statuspro_mcp_server",
|
|
7
|
+
"env": {
|
|
8
|
+
"STATUSPRO_API_KEY": "${STATUSPRO_API_KEY}",
|
|
9
|
+
"STATUSPRO_BASE_URL": "https://app.orderstatuspro.com/api/v1"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"statuspro-erp": {
|
|
13
|
+
"command": "statuspro-mcp-server",
|
|
14
|
+
"env": {
|
|
15
|
+
"STATUSPRO_API_KEY": "${STATUSPRO_API_KEY}",
|
|
16
|
+
"STATUSPRO_BASE_URL": "https://app.orderstatuspro.com/api/v1"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
*.egg-info/
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Testing
|
|
13
|
+
.pytest_cache/
|
|
14
|
+
.coverage
|
|
15
|
+
htmlcov/
|
|
16
|
+
.tox/
|
|
17
|
+
|
|
18
|
+
# Virtual environments
|
|
19
|
+
venv/
|
|
20
|
+
env/
|
|
21
|
+
ENV/
|
|
22
|
+
|
|
23
|
+
# IDE
|
|
24
|
+
.vscode/
|
|
25
|
+
.idea/
|
|
26
|
+
*.swp
|
|
27
|
+
*.swo
|
|
28
|
+
*~
|
|
29
|
+
|
|
30
|
+
# Git
|
|
31
|
+
.git/
|
|
32
|
+
.gitignore
|
|
33
|
+
|
|
34
|
+
# Documentation (not needed in container)
|
|
35
|
+
docs/
|
|
36
|
+
*.md
|
|
37
|
+
!README.md
|
|
38
|
+
|
|
39
|
+
# Deployment files
|
|
40
|
+
DEPLOYMENT.md
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# StatusPro MCP Server Configuration
|
|
2
|
+
# Copy to .env and fill in your values, or set in your environment.
|
|
3
|
+
|
|
4
|
+
# Required: Your StatusPro API key (from StatusPro account settings)
|
|
5
|
+
STATUSPRO_API_KEY=your-api-key-here
|
|
6
|
+
|
|
7
|
+
# Optional: Override the StatusPro API base URL
|
|
8
|
+
# STATUSPRO_BASE_URL=https://app.orderstatuspro.com/api/v1
|
|
9
|
+
|
|
10
|
+
# Optional: Override the MCP server port (default: 8765)
|
|
11
|
+
# MCP_PORT=8765
|
|
12
|
+
|
|
13
|
+
# --- Authentication (for HTTP transport) ---
|
|
14
|
+
# Without auth, the MCP endpoint is open to anyone with the URL.
|
|
15
|
+
# Choose ONE of the options below.
|
|
16
|
+
|
|
17
|
+
# Option 1: Bearer token (simple, for dev/personal use)
|
|
18
|
+
# Set a secret token — clients must send "Authorization: Bearer <token>"
|
|
19
|
+
# MCP_AUTH_TOKEN=your-secret-token-here
|
|
20
|
+
|
|
21
|
+
# Option 2: GitHub OAuth (production)
|
|
22
|
+
# Create a GitHub OAuth App: https://github.com/settings/developers
|
|
23
|
+
# Set the callback URL to: <your-base-url>/auth/callback
|
|
24
|
+
# MCP_GITHUB_CLIENT_ID=your-github-client-id
|
|
25
|
+
# MCP_GITHUB_CLIENT_SECRET=your-github-client-secret
|
|
26
|
+
# MCP_BASE_URL=https://your-public-url.ngrok-free.app
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# This file is used to specify files and directories that should be ignored by Git.
|
|
2
|
+
# It is a common practice to include this file in the root of a repository.
|
|
3
|
+
# For more information, see https://git-scm.com/docs/gitignore
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
env/
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
downloads/
|
|
20
|
+
eggs/
|
|
21
|
+
.eggs/
|
|
22
|
+
lib/
|
|
23
|
+
lib64/
|
|
24
|
+
parts/
|
|
25
|
+
sdist/
|
|
26
|
+
var/
|
|
27
|
+
*.egg-info/
|
|
28
|
+
.installed.cfg
|
|
29
|
+
*.egg
|
|
30
|
+
|
|
31
|
+
# PyInstaller
|
|
32
|
+
# Usually these files are written by a python script from a template
|
|
33
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*,cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
venv/
|
|
52
|
+
.venv/
|
|
53
|
+
.python-version
|
|
54
|
+
.pytest_cache
|
|
55
|
+
|
|
56
|
+
# Translations
|
|
57
|
+
*.mo
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
# Django stuff:
|
|
61
|
+
*.log
|
|
62
|
+
|
|
63
|
+
# MkDocs documentation
|
|
64
|
+
site/
|
|
65
|
+
docs/_build/
|
|
66
|
+
docs/autoapi/
|
|
67
|
+
docs/*.log
|
|
68
|
+
docs/all_warnings.txt
|
|
69
|
+
docs/full_build_output.txt
|
|
70
|
+
|
|
71
|
+
# PyBuilder
|
|
72
|
+
target/
|
|
73
|
+
|
|
74
|
+
#Ipython Notebook
|
|
75
|
+
.ipynb_checkpoints
|
|
76
|
+
|
|
77
|
+
# dotenv
|
|
78
|
+
.env
|
|
79
|
+
.env.*
|
|
80
|
+
!.env.example
|
|
81
|
+
|
|
82
|
+
# Logs directory
|
|
83
|
+
logs/
|
|
84
|
+
|
|
85
|
+
# IDE and Editor files
|
|
86
|
+
.vscode/
|
|
87
|
+
.idea/
|
|
88
|
+
.cursor/.mcp.json
|
|
89
|
+
*.swp
|
|
90
|
+
*.swo
|
|
91
|
+
*~
|
|
92
|
+
.claude/settings.local.json
|
|
93
|
+
|
|
94
|
+
# macOS
|
|
95
|
+
.DS_Store
|
|
96
|
+
.AppleDouble
|
|
97
|
+
.LSOverride
|
|
98
|
+
|
|
99
|
+
# Windows
|
|
100
|
+
Thumbs.db
|
|
101
|
+
ehthumbs.db
|
|
102
|
+
Desktop.ini
|
|
103
|
+
$RECYCLE.BIN/
|
|
104
|
+
|
|
105
|
+
# MyPy type checker
|
|
106
|
+
.mypy_cache/
|
|
107
|
+
.dmypy.json
|
|
108
|
+
dmypy.json
|
|
109
|
+
|
|
110
|
+
# Pyre type checker
|
|
111
|
+
.pyre/
|
|
112
|
+
|
|
113
|
+
# pytype static type analyzer
|
|
114
|
+
.pytype/
|
|
115
|
+
|
|
116
|
+
# Security and secrets
|
|
117
|
+
*.key
|
|
118
|
+
*.pem
|
|
119
|
+
*.p12
|
|
120
|
+
secrets/
|
|
121
|
+
credentials/
|
|
122
|
+
|
|
123
|
+
# Temporary files
|
|
124
|
+
tmp/
|
|
125
|
+
temp/
|
|
126
|
+
*.tmp
|
|
127
|
+
*.bak
|
|
128
|
+
*.backup
|
|
129
|
+
|
|
130
|
+
# Build artifacts from Poetry packaging
|
|
131
|
+
build/
|
|
132
|
+
dist/
|
|
133
|
+
*.tar.gz
|
|
134
|
+
*.whl
|
|
135
|
+
|
|
136
|
+
# SARIF security scan results
|
|
137
|
+
*.sarif
|
|
138
|
+
|
|
139
|
+
# Local development and debug files
|
|
140
|
+
debug_*.py
|
|
141
|
+
demo_*.py
|
|
142
|
+
enhanced_client_example.py
|
|
143
|
+
enhanced_client_v2*.py
|
|
144
|
+
simple_test_client.py
|
|
145
|
+
test_client.py
|
|
146
|
+
test_defaults.py
|
|
147
|
+
test_lint_integration.py
|
|
148
|
+
test_pagination*.py
|
|
149
|
+
test_poetry_client.py
|
|
150
|
+
debug_pagination.py
|
|
151
|
+
debug_products.py
|
|
152
|
+
demo_transport.py
|
|
153
|
+
quick_test_*.py
|
|
154
|
+
|
|
155
|
+
# Keep important test files (in tests/ directory)
|
|
156
|
+
!tests/
|
|
157
|
+
|
|
158
|
+
# Generated API documentation
|
|
159
|
+
api_docs/
|
|
160
|
+
openapi_docs/
|
|
161
|
+
|
|
162
|
+
# Backup files
|
|
163
|
+
*.orig
|
|
164
|
+
*.rej
|
|
165
|
+
|
|
166
|
+
# Coverage and analysis files
|
|
167
|
+
coverage.json
|
|
168
|
+
api_analysis_results.json
|
|
169
|
+
validation_results.json
|
|
170
|
+
|
|
171
|
+
# Generated MCP metadata
|
|
172
|
+
tools.json
|
|
173
|
+
|
|
174
|
+
# Claude
|
|
175
|
+
.claude/settings.local.json
|
|
176
|
+
|
|
177
|
+
# Node.js / TypeScript packages
|
|
178
|
+
node_modules/
|
|
179
|
+
*.tsbuildinfo
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# StatusPro MCP Server Docker Image
|
|
2
|
+
# Provides an isolated, secure environment for running the StatusPro Manufacturing ERP MCP server
|
|
3
|
+
# Compatible with Docker MCP Catalog and Toolkit
|
|
4
|
+
#
|
|
5
|
+
# Supports multiple transport modes via MCP_TRANSPORT env var:
|
|
6
|
+
# - streamable-http (default): HTTP transport for Claude.ai co-work and remote clients
|
|
7
|
+
# - stdio: Standard I/O for Claude Desktop and Claude Code
|
|
8
|
+
# - sse: Server-Sent Events for Cursor IDE
|
|
9
|
+
|
|
10
|
+
FROM python:3.14-slim
|
|
11
|
+
|
|
12
|
+
# Metadata
|
|
13
|
+
LABEL org.opencontainers.image.title="StatusPro MCP Server"
|
|
14
|
+
LABEL org.opencontainers.image.description="Model Context Protocol server for StatusPro Manufacturing ERP"
|
|
15
|
+
LABEL org.opencontainers.image.version="0.1.0"
|
|
16
|
+
LABEL org.opencontainers.image.vendor="Doug Borg"
|
|
17
|
+
LABEL org.opencontainers.image.source="https://github.com/dougborg/statuspro-openapi-client"
|
|
18
|
+
LABEL org.opencontainers.image.licenses="MIT"
|
|
19
|
+
|
|
20
|
+
# Set working directory
|
|
21
|
+
WORKDIR /app
|
|
22
|
+
|
|
23
|
+
# Install uv for fast dependency installation
|
|
24
|
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
|
25
|
+
|
|
26
|
+
# Copy dependency files and source code
|
|
27
|
+
COPY pyproject.toml /app/
|
|
28
|
+
COPY src/ /app/src/
|
|
29
|
+
COPY README.md /app/
|
|
30
|
+
|
|
31
|
+
# Install package (--no-sources skips workspace reference, resolves from PyPI)
|
|
32
|
+
RUN uv pip install --system --no-cache --no-sources .
|
|
33
|
+
|
|
34
|
+
# Create non-root user for security
|
|
35
|
+
RUN useradd -m -u 1000 mcp && \
|
|
36
|
+
chown -R mcp:mcp /app
|
|
37
|
+
USER mcp
|
|
38
|
+
|
|
39
|
+
# Environment variables (can be overridden at runtime)
|
|
40
|
+
ENV STATUSPRO_BASE_URL="https://app.orderstatuspro.com/api/v1"
|
|
41
|
+
# Expose HTTP port (used by streamable-http, http, and sse transports)
|
|
42
|
+
EXPOSE 8765
|
|
43
|
+
|
|
44
|
+
# Run the MCP server with configurable transport
|
|
45
|
+
ENTRYPOINT ["python", "-m", "statuspro_mcp"]
|
|
46
|
+
CMD ["--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8765"]
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# StatusPro MCP Server - Cursor IDE Setup
|
|
2
|
+
|
|
3
|
+
This guide explains how to run the StatusPro MCP server independently and connect Cursor
|
|
4
|
+
IDE to it via SSE transport. For Claude.ai co-work or other HTTP clients, see the
|
|
5
|
+
[Docker guide](docs/docker.md) or the [README](README.md).
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
### 1. Start the MCP Server
|
|
10
|
+
|
|
11
|
+
Run the startup script from the project root:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
./scripts/start_mcp_server.sh
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or manually:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cd statuspro_mcp_server
|
|
21
|
+
uv run python -m statuspro_mcp --transport sse --port 8765
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The server will start on `http://127.0.0.1:8765/sse`
|
|
25
|
+
|
|
26
|
+
### 2. Configure Cursor IDE
|
|
27
|
+
|
|
28
|
+
The `.mcp.json` file in the project root is already configured to connect to the server:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"mcpServers": {
|
|
33
|
+
"statuspro-erp": {
|
|
34
|
+
"type": "sse",
|
|
35
|
+
"url": "http://127.0.0.1:8765/sse"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. Restart Cursor IDE
|
|
42
|
+
|
|
43
|
+
After starting the server, restart Cursor IDE to load the MCP configuration.
|
|
44
|
+
|
|
45
|
+
## Configuration Options
|
|
46
|
+
|
|
47
|
+
### Custom Port
|
|
48
|
+
|
|
49
|
+
To use a different port:
|
|
50
|
+
|
|
51
|
+
1. Start the server with custom port:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
./scripts/start_mcp_server.sh --port 9000
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
1. Update `.mcp.json`:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
"statuspro-erp": {
|
|
61
|
+
"type": "sse",
|
|
62
|
+
"url": "http://127.0.0.1:9000/sse"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Custom Host
|
|
67
|
+
|
|
68
|
+
To listen on all interfaces (for remote access):
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
./scripts/start_mcp_server.sh --host 0.0.0.0 --port 8765
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Security Note**: Only expose the server on public interfaces if you have proper
|
|
75
|
+
authentication/authorization in place.
|
|
76
|
+
|
|
77
|
+
### HTTP Transport
|
|
78
|
+
|
|
79
|
+
To use HTTP transport instead of SSE:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
./scripts/start_mcp_server.sh --transport http
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Then update `.mcp.json`:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
"statuspro-erp": {
|
|
89
|
+
"type": "http",
|
|
90
|
+
"url": "http://127.0.0.1:8765"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Streamable HTTP Transport
|
|
95
|
+
|
|
96
|
+
For Claude.ai co-work or other MCP clients that support streamable-http:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
./scripts/start_mcp_server.sh --transport streamable-http
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The server will be available at `http://127.0.0.1:8765/mcp`.
|
|
103
|
+
|
|
104
|
+
## Environment Variables
|
|
105
|
+
|
|
106
|
+
The server requires the following environment variables:
|
|
107
|
+
|
|
108
|
+
- `STATUSPRO_API_KEY` (required): Your StatusPro API key
|
|
109
|
+
- `STATUSPRO_BASE_URL` (optional): API base URL (default:
|
|
110
|
+
`https://app.orderstatuspro.com/api/v1`)
|
|
111
|
+
|
|
112
|
+
Set them in your `.env` file or export them:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
export STATUSPRO_API_KEY=your-api-key-here
|
|
116
|
+
export STATUSPRO_BASE_URL=https://app.orderstatuspro.com/api/v1 # Optional
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Troubleshooting
|
|
120
|
+
|
|
121
|
+
### Server won't start
|
|
122
|
+
|
|
123
|
+
1. Check that `STATUSPRO_API_KEY` is set:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
echo $STATUSPRO_API_KEY
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
1. Verify dependencies are installed:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
cd statuspro_mcp_server
|
|
133
|
+
uv sync
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
1. Check if port is already in use:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
lsof -i :8765
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Cursor can't connect
|
|
143
|
+
|
|
144
|
+
1. Verify the server is running:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
curl http://127.0.0.1:8765/sse
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
1. Check the URL in `.mcp.json` matches the server URL
|
|
151
|
+
|
|
152
|
+
1. Restart Cursor IDE after configuration changes
|
|
153
|
+
|
|
154
|
+
1. Check Cursor's MCP server logs for connection errors
|
|
155
|
+
|
|
156
|
+
### Tools not appearing
|
|
157
|
+
|
|
158
|
+
1. Verify the server started successfully (check startup logs)
|
|
159
|
+
|
|
160
|
+
1. Ensure Cursor IDE has been restarted after configuration changes
|
|
161
|
+
|
|
162
|
+
1. Check that the MCP server appears in Cursor's MCP server list
|
|
163
|
+
|
|
164
|
+
## Development Mode
|
|
165
|
+
|
|
166
|
+
For development with hot-reload, see [DEVELOPMENT.md](docs/development.md).
|
|
167
|
+
|
|
168
|
+
## Production Deployment
|
|
169
|
+
|
|
170
|
+
For production deployment, consider:
|
|
171
|
+
|
|
172
|
+
- Running the server as a systemd service or similar
|
|
173
|
+
- Using a reverse proxy (nginx, Caddy) for HTTPS
|
|
174
|
+
- Implementing proper authentication/authorization
|
|
175
|
+
- Setting up monitoring and logging
|
|
176
|
+
|
|
177
|
+
See the [Docker documentation](docs/docker.md) for containerized deployment options.
|