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:
parent
c205bda092
commit
dcd0a02389
5 changed files with 76 additions and 46 deletions
110
README.md
110
README.md
|
|
@ -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` |
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
**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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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" }]
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue