Fix bug and update readme (#599)

The README didn't make any sense for a server developer. Especially when
viewed from PyPI

Fix bug so now stdio works
This commit is contained in:
Eric Gustin 2025-10-03 12:47:32 -07:00 committed by GitHub
parent c205bda092
commit dcd0a02389
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 76 additions and 46 deletions

110
README.md
View file

@ -37,69 +37,101 @@
<a href="https://docs.arcade.dev/home/quickstart" target="_blank">Quickstart</a> <a href="https://docs.arcade.dev/home/quickstart" target="_blank">Quickstart</a>
<a href="https://docs.arcade.dev/home/contact-us" target="_blank">Contact Us</a> <a href="https://docs.arcade.dev/home/contact-us" target="_blank">Contact Us</a>
# Arcade AI Platform # Arcade MCP Server Framework
Arcade is a developer platform that lets you build, deploy, and manage tools for AI agents.
This repository contains the core Arcade libraries, organized as separate packages for maximum flexibility and modularity:
- **arcade-core** - Core platform functionality and schemas | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-core) | `pip install arcade-core` |
- **arcade-mcp-server** - MCP Server Development Framework | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-mcp-server) | `pip install arcade-mcp-server` |
- **arcade-tdk** - Tool Development Kit with the `@tool` decorator | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-tdk) | `pip install arcade-tdk` |
- **arcade-serve** - Serving infrastructure for workers and MCP servers | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-serve) | `pip install arcade-serve` |
- **arcade-evals** - Evaluation framework for testing tool performance | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-evals) | `pip install 'arcade-mcp[evals]` |
- **arcade-cli** - Command-line interface for the Arcade platform | [Source code](https://github.com/ArcadeAI/arcade-mcp/tree/main/libs/arcade-cli) | `pip install arcade-mcp` |
![diagram](https://github.com/user-attachments/assets/1a567e5f-d6b4-4b1e-9918-c401ad232ebb)
**To learn more about Arcade.dev, check out our [documentation](https://docs.arcade.dev/home).** **To learn more about Arcade.dev, check out our [documentation](https://docs.arcade.dev/home).**
**To learn more about the Arcade MCP Server Framework, check out our [Arcade MCP documentation](https://python.mcp.arcade.dev/)**
_Pst. hey, you, give us a star if you like it!_ _Pst. hey, you, give us a star if you like it!_
<a href="https://github.com/ArcadeAI/arcade-mcp"> <a href="https://github.com/ArcadeAI/arcade-mcp">
<img src="https://img.shields.io/github/stars/ArcadeAI/arcade-mcp.svg" alt="GitHub stars"> <img src="https://img.shields.io/github/stars/ArcadeAI/arcade-mcp.svg" alt="GitHub stars">
</a> </a>
## Quick Start ### Quick Start: Create a New Server
### Installation The fastest way to get started is with the `arcade new` command, which creates a complete MCP server project:
For development, install all packages with dependencies using uv workspace:
```bash ```bash
# Install all packages and dev dependencies # Install the CLI
uv sync --extra all --dev uv pip install arcade-mcp
# Or use the Makefile (includes pre-commit hooks) # Create a new server project
make install arcade new my_server
# Navigate to the project
cd my_server
``` ```
For production use, install individual packages as needed: This generates a complete project with:
```bash - **server.py** - Main server file with MCPApp and example tools
pip install arcade-mcp # CLI
pip install 'arcade-mcp[evals]' # CLI + Evaluation framework - **pyproject.toml** - Dependencies and project configuration
pip install 'arcade-mcp[all]' # CLI + Serving infra + eval framework + TDK
pip install arcade_serve # Serving infrastructure - **.env.example** - Example `.env` file containing a secret required by one of the generated tools in `server.py`
pip install arcade-tdk # Tool Development Kit
The generated `server.py` includes proper command-line argument handling:
```python
#!/usr/bin/env python3
import sys
from typing import Annotated
from arcade_mcp_server import MCPApp
app = MCPApp(name="my_server", version="1.0.0")
@app.tool
def greet(name: Annotated[str, "Name to greet"]) -> str:
"""Greet someone by name."""
return f"Hello, {name}!"
if __name__ == "__main__":
transport = sys.argv[1] if len(sys.argv) > 1 else "http"
app.run(transport=transport, host="127.0.0.1", port=8000)
``` ```
### Development This approach gives you:
- **Complete Project Setup** - Everything you need in one command
Use the Makefile for standard tasks: - **Best Practices** - Proper dependency management with pyproject.toml
- **Example Code** - Learn from working examples of common patterns
- **Production Ready** - Structured for growth and deployment
### Running Your Server
Run your server directly with Python:
```bash ```bash
# Run tests # Run with HTTP transport (default)
make test uv run server.py
# Run linting and type checking # Run with stdio transport (for Claude Desktop)
make check uv run server.py stdio
# Build all packages # Or use python directly
make build python server.py http
python server.py stdio
```
# See all available commands Your server will start and listen for connections. With HTTP transport, you can access the API docs at http://127.0.0.1:8000/docs.
make help
### Configure MCP Clients
Once your server is running, connect it to your favorite AI assistant:
```bash
# Configure Claude Desktop (configures for stdio)
arcade configure claude --from-local
# Configure Cursor (configures for http streamable)
arcade configure cursor --from-local
# Configure VS Code (configures for http streamable)
arcade configure vscode --from-local
``` ```
## Client Libraries ## Client Libraries

View file

@ -26,7 +26,7 @@ ARCADE_TDK_MIN_VERSION = "3.0.0"
ARCADE_TDK_MAX_VERSION = "4.0.0" ARCADE_TDK_MAX_VERSION = "4.0.0"
ARCADE_SERVE_MIN_VERSION = "3.0.0" ARCADE_SERVE_MIN_VERSION = "3.0.0"
ARCADE_SERVE_MAX_VERSION = "4.0.0" ARCADE_SERVE_MAX_VERSION = "4.0.0"
ARCADE_MCP_SERVER_MIN_VERSION = "1.0.0" ARCADE_MCP_SERVER_MIN_VERSION = "1.0.1"
ARCADE_MCP_SERVER_MAX_VERSION = "2.0.0" ARCADE_MCP_SERVER_MAX_VERSION = "2.0.0"

View file

@ -226,8 +226,6 @@ class MCPApp:
asyncio.run( asyncio.run(
run_stdio_server( run_stdio_server(
catalog=self._catalog, catalog=self._catalog,
port=port,
reload=reload,
**self.server_kwargs, **self.server_kwargs,
) )
) )

View file

@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project] [project]
name = "arcade-mcp-server" name = "arcade-mcp-server"
version = "1.0.0" version = "1.0.1"
description = "Model Context Protocol (MCP) server framework for Arcade.dev" description = "Model Context Protocol (MCP) server framework for Arcade.dev"
readme = "README.md" readme = "README.md"
authors = [{ name = "Arcade.dev" }] authors = [{ name = "Arcade.dev" }]

View file

@ -1,6 +1,6 @@
[project] [project]
name = "arcade-mcp" name = "arcade-mcp"
version = "1.0.0" version = "1.0.1"
description = "Arcade.dev - Tool Calling platform for Agents" description = "Arcade.dev - Tool Calling platform for Agents"
readme = "README.md" readme = "README.md"
license = {file = "LICENSE"} license = {file = "LICENSE"}
@ -21,7 +21,7 @@ requires-python = ">=3.10"
dependencies = [ dependencies = [
# CLI dependencies # CLI dependencies
"arcade-mcp-server>=1.0.0,<2.0.0", "arcade-mcp-server>=1.0.1,<2.0.0",
"arcade-core>=3.0.0,<4.0.0", "arcade-core>=3.0.0,<4.0.0",
"typer==0.10.0", "typer==0.10.0",
"rich==13.9.4", "rich==13.9.4",
@ -42,7 +42,7 @@ all = [
"pytz>=2024.1", "pytz>=2024.1",
"python-dateutil>=2.8.2", "python-dateutil>=2.8.2",
# mcp # mcp
"arcade-mcp-server>=1.0.0,<2.0.0", "arcade-mcp-server>=1.0.1,<2.0.0",
# serve # serve
"arcade-serve>=3.0.0,<4.0.0", "arcade-serve>=3.0.0,<4.0.0",
# tdk # tdk