Kurd
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kurdtest the add tool with parameters 2 and 3"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kurd
A high-performance Model Context Protocol (MCP) gateway for Python, powered by Rust.
Kurd combines a Python-first developer API with a Rust data plane for MCP routing, upstream aggregation, concurrency control, security, caching, and observability.
Status
Kurd is in beta and is being hardened for production use.
Current release line: 0.3.x
The gateway targets the MCP 2026-07-28 protocol revision while preserving compatibility paths used by existing Kurd applications.
Highlights
Python-first
RouterAPIRust core using Tokio, Axum, Serde, and Reqwest
MCP
server/discover,tools/list, andtools/callLocal Python tools and mounted upstream MCP servers
Sync and async Python callbacks
Concurrent upstream discovery
Shared HTTP connection pool
Retry with exponential backoff and jitter
Circuit breaker
Tool-list caching with TTL and cache scope
Graceful HTTP lifecycle: start, stop, status, restart
Optional bearer authentication
Request-size and content-type validation
Upstream URL validation and private-network policy
Configurable upstream timeout
Global, per-upstream, and Python callback backpressure
Request IDs and structured request logging
Runtime, cache, and upstream metrics
Cross-platform CI and automated PyPI release workflow
Installation
pip install kurdPython 3.10 or newer is required.
Quick Start
from kurd import Router
router = Router()
@router.tool()
async def add(a: int, b: int) -> int:
return a + bStart the HTTP gateway:
from kurd._kurd import start_http_gateway
start_http_gateway("127.0.0.1:9200")The MCP endpoint is:
http://127.0.0.1:9200/mcpHealth and operational status are exposed at:
GET /health
GET /statusMount an Upstream MCP Server
from kurd import Router
router = Router()
router.mount("github", "http://127.0.0.1:9300")An upstream tool named create_issue is exposed through Kurd as:
github.create_issueUnmount or refresh the aggregated tool cache:
router.unmount("github")
router.refresh_tools()Runtime Hardening
Kurd provides explicit concurrency controls:
router.configure_runtime(
global_concurrency=512,
upstream_concurrency=64,
python_concurrency=64,
request_logging=False,
)Inspect runtime state:
print(router.runtime_status())The HTTP /status endpoint also reports runtime, cache, security, upstream latency, retry, and circuit-breaker metrics.
Security
Kurd currently provides a production security baseline:
maximum MCP request body size
JSON content-type validation
optional bearer-token authentication
upstream URL validation
configurable private/loopback upstream policy
configurable upstream request timeout
sanitized upstream transport errors
overload rejection through explicit backpressure
For deployments exposed beyond localhost, use TLS at the reverse proxy or ingress layer and apply your normal network-level authentication and authorization controls.
MCP 2026-07-28
Kurd implements the stateless 2026 MCP model used for routable gateway traffic:
per-request protocol metadata
MCP-Protocol-VersionMcp-MethodMcp-Namefor tool callsserver/discoverdeterministic
tools/listresultTypettlMscacheScopeserver identity metadata
Kurd rejects mismatched modern MCP headers and unsupported protocol versions.
Performance
The repository includes end-to-end HTTP load tests in tests/test_load.py.
Example measurements from a Windows development machine:
Scenario | Concurrency | Throughput | p50 | p95 | p99 | Errors |
Local Python tool | 10 | 594.5 req/s | 14.94 ms | 23.88 ms | 28.66 ms | 0% |
Local Python tool | 50 | 587.9 req/s | 33.29 ms | 87.83 ms | 119.09 ms | 0% |
Local Python tool | 100 | 556.0 req/s | 18.27 ms | 29.52 ms | 32.43 ms | 0% |
Upstream tool | 10 | 412.2 req/s | 21.77 ms | 36.35 ms | 42.74 ms | 0% |
Upstream tool | 50 | 229.8 req/s | 20.61 ms | 534.61 ms | 549.25 ms | 0% |
Upstream tool | 100 | 293.6 req/s | 30.12 ms | 531.40 ms | 535.34 ms | 0% |
Local sustained burst | 100 | 573.3 req/s | 73.51 ms | 179.13 ms | 218.49 ms | 0% |
These are local measurements, not universal performance guarantees. Hardware, operating system, Python version, payload shape, upstream implementation, and network conditions affect results.
Run the benchmark suite with:
python -m pytest tests/test_load.py -q -sDevelopment
Create and activate a virtual environment, then install the development tools:
python -m pip install --upgrade pip
python -m pip install maturin pytestBuild the native extension:
maturin develop --releaseRun the full test suite:
python -m pytest -qBuild release artifacts:
maturin build --releaseArchitecture
Python application
|
v
Kurd Router
|
v
PyO3 boundary
|
v
Rust MCP gateway
| |
| +--> Local Python tools
|
+-------------> Upstream MCP serversRust owns the HTTP server, MCP validation, routing, caching, retries, circuit breaking, backpressure, and operational metrics. Python provides the developer-facing registration and configuration API.
Testing
The current suite covers:
JSON-RPC parsing and dispatch
local sync and async tools
upstream discovery and calls
concurrent upstream discovery
cache behavior and invalidation
mount and unmount
MCP 2026 request headers and protocol-version checks
HTTP lifecycle and graceful shutdown
request-size and content-type security
bearer authentication
upstream URL policy
timeout configuration
error sanitization
global and Python callback backpressure
request ID propagation
runtime observability
load and burst behavior
Compatibility
CI targets Windows, Linux, and macOS. Release wheels are built through Maturin.
The project is primarily developed with Python 3.12 and stable Rust; package metadata supports Python 3.10+.
Release Policy
Kurd uses semantic versioning while the public API stabilizes.
patch releases: bug fixes and packaging corrections
minor releases: new gateway or MCP capabilities
1.0.0: stable public API commitment
Project Structure
kurd/
├── kurd/
│ ├── __init__.py
│ └── router.py
├── src/
│ └── lib.rs
├── tests/
│ ├── test_upstream.py
│ ├── test_load.py
│ └── upstream_server.py
├── Cargo.toml
├── pyproject.toml
├── README.md
└── LICENSEContributing
Issues and technical discussions are welcome through the GitHub issue tracker.
Before submitting a change:
cargo check
maturin develop --release
python -m pytest -qLicense
MIT.
Name
The name Kurd honors Kurdish identity and heritage.
Bezhi Kurd u Kurdistan.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sn391/kurd'
If you have feedback or need assistance with the MCP directory API, please join our Discord server