arcade-mcp-server 1.0.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.
- arcade_mcp_server-1.0.0/.gitignore +178 -0
- arcade_mcp_server-1.0.0/Makefile +40 -0
- arcade_mcp_server-1.0.0/PKG-INFO +109 -0
- arcade_mcp_server-1.0.0/README.md +72 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/__init__.py +44 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/__main__.py +359 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/auth/__init__.py +45 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/context.py +697 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/convert.py +370 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/exceptions.py +93 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/fastapi/__init__.py +1 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/fastapi/middleware.py +24 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/fastapi/routes.py +335 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/lifespan.py +161 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/managers/__init__.py +7 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/managers/base.py +146 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/managers/prompt.py +122 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/managers/resource.py +102 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/managers/tool.py +94 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/mcp_app.py +315 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/middleware/__init__.py +17 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/middleware/base.py +241 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/middleware/error_handling.py +107 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/middleware/logging.py +121 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/server.py +988 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/session.py +637 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/settings.py +252 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/transports/__init__.py +12 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/transports/http_session_manager.py +262 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/transports/http_streamable.py +834 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/transports/stdio.py +209 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/types.py +666 -0
- arcade_mcp_server-1.0.0/arcade_mcp_server/worker.py +322 -0
- arcade_mcp_server-1.0.0/docs/advanced/sharing-servers.md +180 -0
- arcade_mcp_server-1.0.0/docs/advanced/transports.md +213 -0
- arcade_mcp_server-1.0.0/docs/api/mcp_app.md +47 -0
- arcade_mcp_server-1.0.0/docs/api/server/errors.md +36 -0
- arcade_mcp_server-1.0.0/docs/api/server/middleware.md +50 -0
- arcade_mcp_server-1.0.0/docs/api/server/server.md +53 -0
- arcade_mcp_server-1.0.0/docs/api/server/settings.md +49 -0
- arcade_mcp_server-1.0.0/docs/api/server/types.md +37 -0
- arcade_mcp_server-1.0.0/docs/clients/claude.md +0 -0
- arcade_mcp_server-1.0.0/docs/clients/cursor.md +0 -0
- arcade_mcp_server-1.0.0/docs/clients/inspector.md +363 -0
- arcade_mcp_server-1.0.0/docs/clients/vscode.md +485 -0
- arcade_mcp_server-1.0.0/docs/examples/00_hello_world.md +22 -0
- arcade_mcp_server-1.0.0/docs/examples/00_hello_world.py +38 -0
- arcade_mcp_server-1.0.0/docs/examples/01_tools.md +131 -0
- arcade_mcp_server-1.0.0/docs/examples/01_tools.py +130 -0
- arcade_mcp_server-1.0.0/docs/examples/02_building_apps.md +116 -0
- arcade_mcp_server-1.0.0/docs/examples/02_building_apps.py +66 -0
- arcade_mcp_server-1.0.0/docs/examples/03_context.md +64 -0
- arcade_mcp_server-1.0.0/docs/examples/03_context.py +155 -0
- arcade_mcp_server-1.0.0/docs/examples/04_secrets.md +59 -0
- arcade_mcp_server-1.0.0/docs/examples/04_secrets.py +46 -0
- arcade_mcp_server-1.0.0/docs/examples/05_logging.md +101 -0
- arcade_mcp_server-1.0.0/docs/examples/05_logging.py +190 -0
- arcade_mcp_server-1.0.0/docs/examples/06_tool_organization.md +191 -0
- arcade_mcp_server-1.0.0/docs/examples/06_tool_organization.py +94 -0
- arcade_mcp_server-1.0.0/docs/examples/07_auth.md +123 -0
- arcade_mcp_server-1.0.0/docs/examples/07_auth.py +73 -0
- arcade_mcp_server-1.0.0/docs/examples/README.md +84 -0
- arcade_mcp_server-1.0.0/docs/examples/tools_math.py +31 -0
- arcade_mcp_server-1.0.0/docs/examples/tools_text.py +29 -0
- arcade_mcp_server-1.0.0/docs/getting-started/quickstart.md +165 -0
- arcade_mcp_server-1.0.0/docs/index.md +152 -0
- arcade_mcp_server-1.0.0/mkdocs.yml +103 -0
- arcade_mcp_server-1.0.0/pyproject.toml +50 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
.DS_Store
|
|
2
|
+
credentials.yaml
|
|
3
|
+
docker/credentials.yaml
|
|
4
|
+
|
|
5
|
+
*.lock
|
|
6
|
+
|
|
7
|
+
# example data
|
|
8
|
+
examples/data
|
|
9
|
+
scratch
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
docs/source
|
|
13
|
+
|
|
14
|
+
# From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
|
|
15
|
+
|
|
16
|
+
# Byte-compiled / optimized / DLL files
|
|
17
|
+
__pycache__/
|
|
18
|
+
*.py[cod]
|
|
19
|
+
*$py.class
|
|
20
|
+
|
|
21
|
+
# C extensions
|
|
22
|
+
*.so
|
|
23
|
+
|
|
24
|
+
# Distribution / packaging
|
|
25
|
+
.Python
|
|
26
|
+
build/
|
|
27
|
+
develop-eggs/
|
|
28
|
+
dist/
|
|
29
|
+
downloads/
|
|
30
|
+
eggs/
|
|
31
|
+
.eggs/
|
|
32
|
+
lib/
|
|
33
|
+
lib64/
|
|
34
|
+
parts/
|
|
35
|
+
sdist/
|
|
36
|
+
var/
|
|
37
|
+
wheels/
|
|
38
|
+
share/python-wheels/
|
|
39
|
+
*.egg-info/
|
|
40
|
+
.installed.cfg
|
|
41
|
+
*.egg
|
|
42
|
+
MANIFEST
|
|
43
|
+
|
|
44
|
+
# PyInstaller
|
|
45
|
+
# Usually these files are written by a python script from a template
|
|
46
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
47
|
+
*.manifest
|
|
48
|
+
*.spec
|
|
49
|
+
|
|
50
|
+
# Installer logs
|
|
51
|
+
pip-log.txt
|
|
52
|
+
pip-delete-this-directory.txt
|
|
53
|
+
|
|
54
|
+
# Unit test / coverage reports
|
|
55
|
+
htmlcov/
|
|
56
|
+
.tox/
|
|
57
|
+
.nox/
|
|
58
|
+
.coverage
|
|
59
|
+
.coverage.*
|
|
60
|
+
.cache
|
|
61
|
+
nosetests.xml
|
|
62
|
+
coverage.xml
|
|
63
|
+
*.cover
|
|
64
|
+
*.py,cover
|
|
65
|
+
.hypothesis/
|
|
66
|
+
.pytest_cache/
|
|
67
|
+
cover/
|
|
68
|
+
|
|
69
|
+
# Translations
|
|
70
|
+
*.mo
|
|
71
|
+
*.pot
|
|
72
|
+
|
|
73
|
+
# Django stuff:
|
|
74
|
+
*.log
|
|
75
|
+
local_settings.py
|
|
76
|
+
db.sqlite3
|
|
77
|
+
db.sqlite3-journal
|
|
78
|
+
|
|
79
|
+
# Flask stuff:
|
|
80
|
+
instance/
|
|
81
|
+
.webassets-cache
|
|
82
|
+
|
|
83
|
+
# Scrapy stuff:
|
|
84
|
+
.scrapy
|
|
85
|
+
|
|
86
|
+
# Sphinx documentation
|
|
87
|
+
docs/_build/
|
|
88
|
+
|
|
89
|
+
# PyBuilder
|
|
90
|
+
.pybuilder/
|
|
91
|
+
target/
|
|
92
|
+
|
|
93
|
+
# Jupyter Notebook
|
|
94
|
+
.ipynb_checkpoints
|
|
95
|
+
|
|
96
|
+
# IPython
|
|
97
|
+
profile_default/
|
|
98
|
+
ipython_config.py
|
|
99
|
+
|
|
100
|
+
# pyenv
|
|
101
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
102
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
103
|
+
# .python-version
|
|
104
|
+
|
|
105
|
+
# pipenv
|
|
106
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
107
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
108
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
109
|
+
# install all needed dependencies.
|
|
110
|
+
#Pipfile.lock
|
|
111
|
+
|
|
112
|
+
# poetry
|
|
113
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
114
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
115
|
+
# commonly ignored for libraries.
|
|
116
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
117
|
+
poetry.lock
|
|
118
|
+
|
|
119
|
+
# pdm
|
|
120
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
121
|
+
#pdm.lock
|
|
122
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
123
|
+
# in version control.
|
|
124
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
125
|
+
.pdm.toml
|
|
126
|
+
|
|
127
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
128
|
+
__pypackages__/
|
|
129
|
+
|
|
130
|
+
# Celery stuff
|
|
131
|
+
celerybeat-schedule
|
|
132
|
+
celerybeat.pid
|
|
133
|
+
|
|
134
|
+
# SageMath parsed files
|
|
135
|
+
*.sage.py
|
|
136
|
+
|
|
137
|
+
# Environments
|
|
138
|
+
.env
|
|
139
|
+
.venv
|
|
140
|
+
env/
|
|
141
|
+
venv/
|
|
142
|
+
ENV/
|
|
143
|
+
env.bak/
|
|
144
|
+
venv.bak/
|
|
145
|
+
|
|
146
|
+
# Spyder project settings
|
|
147
|
+
.spyderproject
|
|
148
|
+
.spyproject
|
|
149
|
+
|
|
150
|
+
# Rope project settings
|
|
151
|
+
.ropeproject
|
|
152
|
+
|
|
153
|
+
# mkdocs documentation
|
|
154
|
+
/site
|
|
155
|
+
|
|
156
|
+
# mypy
|
|
157
|
+
.mypy_cache/
|
|
158
|
+
.dmypy.json
|
|
159
|
+
dmypy.json
|
|
160
|
+
|
|
161
|
+
# Pyre type checker
|
|
162
|
+
.pyre/
|
|
163
|
+
|
|
164
|
+
# pytype static type analyzer
|
|
165
|
+
.pytype/
|
|
166
|
+
|
|
167
|
+
# Cython debug symbols
|
|
168
|
+
cython_debug/
|
|
169
|
+
|
|
170
|
+
# PyCharm
|
|
171
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
172
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
173
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
174
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
175
|
+
#.idea/
|
|
176
|
+
|
|
177
|
+
# Docs
|
|
178
|
+
libs/arcade-mcp-server/site/*
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
.PHONY: help
|
|
3
|
+
help:
|
|
4
|
+
@echo "🛠️ Arcade MCP Commands:\n"
|
|
5
|
+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
.PHONY: sync
|
|
10
|
+
sync: ## Sync dependencies
|
|
11
|
+
uv sync --all-extras --all-packages --group dev
|
|
12
|
+
|
|
13
|
+
.PHONY: format
|
|
14
|
+
format: ## Run ruff format
|
|
15
|
+
uv run ruff format
|
|
16
|
+
|
|
17
|
+
.PHONY: lint
|
|
18
|
+
lint: ## Run ruff lint
|
|
19
|
+
uv run ruff check
|
|
20
|
+
|
|
21
|
+
.PHONY: mypy
|
|
22
|
+
mypy: ## Run mypy
|
|
23
|
+
uv run mypy .
|
|
24
|
+
|
|
25
|
+
.PHONY: test
|
|
26
|
+
test: ## Run tests
|
|
27
|
+
uv run pytest --cov=arcade_mcp_server --cov-report=term-missing ../tests/arcade_mcp_server
|
|
28
|
+
|
|
29
|
+
.PHONY: docs
|
|
30
|
+
docs: ## Build docs
|
|
31
|
+
uv run mkdocs build
|
|
32
|
+
uv run mkdocs serve
|
|
33
|
+
|
|
34
|
+
.PHONY: docs-serve
|
|
35
|
+
docs-serve: ## Serve docs locally
|
|
36
|
+
uv run mkdocs serve
|
|
37
|
+
|
|
38
|
+
.PHONY: docs-build
|
|
39
|
+
docs-build: ## Build docs
|
|
40
|
+
uv run mkdocs build
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: arcade-mcp-server
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Model Context Protocol (MCP) server framework for Arcade.dev
|
|
5
|
+
Author: Arcade.dev
|
|
6
|
+
License: MIT
|
|
7
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Requires-Dist: anyio>=4.0.0
|
|
17
|
+
Requires-Dist: arcade-core<4.0.0,>=3.0.0
|
|
18
|
+
Requires-Dist: arcade-serve<4.0.0,>=3.0.0
|
|
19
|
+
Requires-Dist: arcade-tdk<4.0.0,>=3.0.0
|
|
20
|
+
Requires-Dist: arcadepy>=1.5.0
|
|
21
|
+
Requires-Dist: fastapi>=0.100.0
|
|
22
|
+
Requires-Dist: pydantic-settings>=2.10.1
|
|
23
|
+
Requires-Dist: pydantic>=2.0.0
|
|
24
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
25
|
+
Requires-Dist: sse-starlette>=2.0.0
|
|
26
|
+
Requires-Dist: starlette>=0.37.0
|
|
27
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: mkdocs-material>=9.6.0; extra == 'dev'
|
|
30
|
+
Requires-Dist: mkdocs>=1.6.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: mkdocstrings[python]>=0.28.0; extra == 'dev'
|
|
32
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
35
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
38
|
+
# Arcade MCP Server
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<img src="https://docs.arcade.dev/images/logo/arcade-logo.png" alt="Arcade Logo" width="200"/>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
Arcade MCP (Model Context Protocol) Server enables AI assistants and development tools to interact with your Arcade tools through a standardized protocol. Build, deploy, and integrate MCP servers seamlessly across different AI platforms.
|
|
45
|
+
|
|
46
|
+
## Quick Links
|
|
47
|
+
|
|
48
|
+
- **[Quickstart Guide](getting-started/quickstart.md)** - Get up and running in minutes
|
|
49
|
+
- **[Walkthrough](examples/README.md)** - Learn by example
|
|
50
|
+
- **[API Reference](api/app.md)** - MCPApp API documentation
|
|
51
|
+
|
|
52
|
+
## Features
|
|
53
|
+
|
|
54
|
+
- 🚀 **FastAPI-like Interface** - Simple, intuitive API with `MCPApp`
|
|
55
|
+
- 🔧 **Tool Discovery** - Automatic discovery of tools in your project
|
|
56
|
+
- 🔌 **Multiple Transports** - Support for stdio and HTTP/SSE
|
|
57
|
+
- 🤖 **Multi-Client Support** - Works with Claude, Cursor, and more
|
|
58
|
+
- 📦 **Package Integration** - Load installed Arcade packages
|
|
59
|
+
- 🔐 **Built-in Security** - Environment-based configuration and secrets
|
|
60
|
+
- 🔄 **Hot Reload** - Development mode with automatic reloading
|
|
61
|
+
- 📊 **Production Ready** - Deploy with Docker, systemd, PM2, or cloud platforms
|
|
62
|
+
|
|
63
|
+
## Getting Started
|
|
64
|
+
|
|
65
|
+
### Installation
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pip install arcade-mcp-server
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Create Your First Server
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from arcade_mcp_server import MCPApp
|
|
75
|
+
from typing import Annotated
|
|
76
|
+
|
|
77
|
+
app = MCPApp(name="my-tools", version="1.0.0")
|
|
78
|
+
|
|
79
|
+
@app.tool
|
|
80
|
+
def greet(name: Annotated[str, "Name to greet"]) -> str:
|
|
81
|
+
"""Greet someone by name."""
|
|
82
|
+
return f"Hello, {name}!"
|
|
83
|
+
|
|
84
|
+
if __name__ == "__main__":
|
|
85
|
+
app.run()
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Run Your Server
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# For development
|
|
92
|
+
python my_tools.py
|
|
93
|
+
|
|
94
|
+
# For Claude Desktop
|
|
95
|
+
python -m arcade_mcp_server stdio
|
|
96
|
+
|
|
97
|
+
# For HTTP clients
|
|
98
|
+
python -m arcade_mcp_server --host 0.0.0.0 --port 8080
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Community
|
|
102
|
+
|
|
103
|
+
- [GitHub Repository](https://github.com/ArcadeAI/arcade-mcp)
|
|
104
|
+
- [Discord Community](https://discord.gg/arcade-mcp)
|
|
105
|
+
- [Documentation](https://docs.arcade.dev)
|
|
106
|
+
|
|
107
|
+
## License
|
|
108
|
+
|
|
109
|
+
Arcade MCP Server is open source software licensed under the MIT license.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Arcade MCP Server
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://docs.arcade.dev/images/logo/arcade-logo.png" alt="Arcade Logo" width="200"/>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
Arcade MCP (Model Context Protocol) Server enables AI assistants and development tools to interact with your Arcade tools through a standardized protocol. Build, deploy, and integrate MCP servers seamlessly across different AI platforms.
|
|
8
|
+
|
|
9
|
+
## Quick Links
|
|
10
|
+
|
|
11
|
+
- **[Quickstart Guide](getting-started/quickstart.md)** - Get up and running in minutes
|
|
12
|
+
- **[Walkthrough](examples/README.md)** - Learn by example
|
|
13
|
+
- **[API Reference](api/app.md)** - MCPApp API documentation
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🚀 **FastAPI-like Interface** - Simple, intuitive API with `MCPApp`
|
|
18
|
+
- 🔧 **Tool Discovery** - Automatic discovery of tools in your project
|
|
19
|
+
- 🔌 **Multiple Transports** - Support for stdio and HTTP/SSE
|
|
20
|
+
- 🤖 **Multi-Client Support** - Works with Claude, Cursor, and more
|
|
21
|
+
- 📦 **Package Integration** - Load installed Arcade packages
|
|
22
|
+
- 🔐 **Built-in Security** - Environment-based configuration and secrets
|
|
23
|
+
- 🔄 **Hot Reload** - Development mode with automatic reloading
|
|
24
|
+
- 📊 **Production Ready** - Deploy with Docker, systemd, PM2, or cloud platforms
|
|
25
|
+
|
|
26
|
+
## Getting Started
|
|
27
|
+
|
|
28
|
+
### Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install arcade-mcp-server
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Create Your First Server
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
from arcade_mcp_server import MCPApp
|
|
38
|
+
from typing import Annotated
|
|
39
|
+
|
|
40
|
+
app = MCPApp(name="my-tools", version="1.0.0")
|
|
41
|
+
|
|
42
|
+
@app.tool
|
|
43
|
+
def greet(name: Annotated[str, "Name to greet"]) -> str:
|
|
44
|
+
"""Greet someone by name."""
|
|
45
|
+
return f"Hello, {name}!"
|
|
46
|
+
|
|
47
|
+
if __name__ == "__main__":
|
|
48
|
+
app.run()
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Run Your Server
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# For development
|
|
55
|
+
python my_tools.py
|
|
56
|
+
|
|
57
|
+
# For Claude Desktop
|
|
58
|
+
python -m arcade_mcp_server stdio
|
|
59
|
+
|
|
60
|
+
# For HTTP clients
|
|
61
|
+
python -m arcade_mcp_server --host 0.0.0.0 --port 8080
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Community
|
|
65
|
+
|
|
66
|
+
- [GitHub Repository](https://github.com/ArcadeAI/arcade-mcp)
|
|
67
|
+
- [Discord Community](https://discord.gg/arcade-mcp)
|
|
68
|
+
- [Documentation](https://docs.arcade.dev)
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
Arcade MCP Server is open source software licensed under the MIT license.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MCP (Model Context Protocol) support for Arcade.
|
|
3
|
+
|
|
4
|
+
This package provides:
|
|
5
|
+
- MCP server implementation for serving Arcade tools
|
|
6
|
+
- Multiple transport options (stdio, HTTP/SSE)
|
|
7
|
+
- Integration with Arcade workers with factory and runner functions
|
|
8
|
+
- Context system for tool execution with MCP methods
|
|
9
|
+
|
|
10
|
+
A FastAPI-like interface for building MCP servers.
|
|
11
|
+
- Add tools with decorators or explicitly
|
|
12
|
+
- Run the server with a single function call
|
|
13
|
+
- Supports HTTP transport only
|
|
14
|
+
|
|
15
|
+
`arcade_mcp` for running stdio directly from the command line.
|
|
16
|
+
- auto discovery of tools and construction of the server
|
|
17
|
+
- supports stdio transport only
|
|
18
|
+
- run with uv or `python -m arcade_mcp`
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from arcade_tdk import tool
|
|
22
|
+
|
|
23
|
+
from arcade_mcp_server.context import Context
|
|
24
|
+
from arcade_mcp_server.mcp_app import MCPApp
|
|
25
|
+
from arcade_mcp_server.server import MCPServer
|
|
26
|
+
from arcade_mcp_server.settings import MCPSettings
|
|
27
|
+
from arcade_mcp_server.worker import create_arcade_mcp, run_arcade_mcp
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"Context",
|
|
31
|
+
# FastAPI-like interface
|
|
32
|
+
"MCPApp",
|
|
33
|
+
# MCP Server implementation
|
|
34
|
+
"MCPServer",
|
|
35
|
+
"MCPSettings",
|
|
36
|
+
# Integrated Factory and Runner
|
|
37
|
+
"create_arcade_mcp",
|
|
38
|
+
"run_arcade_mcp",
|
|
39
|
+
# Re-exported TDK functionality
|
|
40
|
+
"tool",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
# Package metadata
|
|
44
|
+
__version__ = "0.1.0"
|