AgentRuntime MCP SDK (decorators, runtime, middleware, schemas, proxy)
Project description
AgentRuntime MCP SDK (Python)
Opinionated SDK for MCP connectors using FastMCP with the same Control integration as agentruntime-mcp-go: optional POST /mcp/config, env merge, and request metadata (run token, instance id).
There is no mandatory legacy standalone token/HMAC middleware chain in front of every request. Probe-style auth is the Bearer run token (or X-MCP-Token) and headers AgentRuntime sends; optional auth.mode in config.yaml is reserved for future templates and does not switch Control gating off.
Install
pip install agentruntime-mcp
Runtimes
| Entry | When to use | HTTP |
|---|---|---|
run(config_path) |
Decorator-only tool() modules; tools registered from config.yaml / build_schemas |
/mcp |
run_with_registry(config_path, *names) |
Plugins registered with register_adapter; one process, one MCP server |
/mcp |
run_with_router(config_path) |
Same registry, monolith routing (Go RunWithRouter / TS runWithRouter parity) |
/{adapter}/mcp plus optional webhook routes on the same ASGI app |
Use register_adapter for anything that should share a process with other adapters. Keep plain run() for single-connector demos that only use decorators and YAML tools.
Webhooks: Implement register_webhook(self, mux: ServeMux) on the adapter. Paths are registered on the root Starlette app before adapter mounts (same dispatch order as Go/TS). Operators expose vendor callbacks as https://<host>:<port><path> (same host/port as MCP).
Minimal example
from pydantic import BaseModel, Field
from agentruntime.mcp.decorators import tool
from agentruntime.mcp.runtime import run
from fastmcp import Context
class In(BaseModel):
a: float = Field(...)
b: float = Field(...)
class Out(BaseModel):
result: float
expression: str
@tool(name="add", input_model=In, output_model=Out)
def add(a: float, b: float, ctx: Context) -> Out:
region = ctx.config.region # resolved config when schema + Control are used
return Out(result=a + b, expression=f"{a} + {b}")
if __name__ == "__main__":
run("config.yaml")
Config (config.yaml)
server:name,host,port,stateless_httptracing: enable OpenTelemetry when dependencies are presentconfig: declarative schema for Control /GET /mcp/config/schema
Env overrides: HOST, PORT (see docs/mcp/mcp_env.md).
Example:
server:
name: "MyConnector"
host: "127.0.0.1"
port: 8012
stateless_http: true
tracing:
enabled: false
config:
apiKey:
type: string
displayName: API Key
required: true
Control config resolution
When the adapter registers at least one config key:
- Set
MCP_CONTROL_SERVER_URLto your control-service base URL. - The SDK may call
POST /mcp/configwith the run token from the request and your schema. - Set
MCP_CONFIG_FETCH_REQUIRED=falsefor local work without Control (when you still declare schema keys).
See docs/mcp/mcp_env.md for the full variable list.
Proxy (library)
from agentruntime.mcp.proxy import run_proxy
run_proxy(
target_url="http://127.0.0.1:8000/mcp",
overlay_file="tools.yaml",
host="127.0.0.1",
port=8010,
)
TypeScript sibling SDK
For Node deployments, use the monorepo package packages/agentruntime-mcp-ts (@agentruntime-labs/agentruntime-mcp): official @modelcontextprotocol/server, Zod 4, runWithRouter.
Examples in this repo
connectors/py-connectors/resend-connector— Python Resend connector (illustrative layout)
Releasing
See ../RELEASE.md (Python section): lightweight Git tags (v0.1.0, v0.1.1), bump version in pyproject.toml, do not commit __pycache__ / *.egg-info/.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentruntime_mcp-0.1.2.tar.gz.
File metadata
- Download URL: agentruntime_mcp-0.1.2.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e45baa07d2fc4d453520b3b85b897befb0d9a7c89c6032759b19f3acb7a0d1c6
|
|
| MD5 |
ec2f0b874e522f42e631213319de5146
|
|
| BLAKE2b-256 |
d90303f0f4d87c18bc529f3af880ccb2e0eeba944e28fb34b61d0d3463c5adc3
|
File details
Details for the file agentruntime_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: agentruntime_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e896493fbfc45755f7d90168fde54510bc1f7413e3dac4bf3fa682ef96c3b9c4
|
|
| MD5 |
8ffb7ee94ed6db1c669882ad5892ccdd
|
|
| BLAKE2b-256 |
a18b3a49fdfb212d67d4cb5f79ddf3f64b87a3230c94d3da79907145bab956e0
|