54 lines
1.7 KiB
Markdown
54 lines
1.7 KiB
Markdown
# Crank
|
|
|
|
Crank Community is a self-hosted platform for publishing REST APIs as MCP tools.
|
|
|
|
It lets operators describe an upstream REST endpoint, test it, publish it, and
|
|
expose it to LLM clients through MCP without writing a custom MCP server for
|
|
each integration.
|
|
|
|
## Features
|
|
|
|
- REST operation creation from the web UI or YAML.
|
|
- MCP input mapping into REST query, body, and header fields.
|
|
- REST response mapping into structured MCP tool output.
|
|
- Agent-scoped MCP endpoints with curated tool catalogs.
|
|
- Operation drafts, versions, samples, mappings, logs, and usage in PostgreSQL.
|
|
- Simple admin authentication with a bootstrap admin user.
|
|
- PostgreSQL-backed secrets and auth profiles for upstream REST APIs.
|
|
- Docker Compose deployment.
|
|
|
|
## Community Scope
|
|
|
|
This repository contains only the Community feature set:
|
|
|
|
- REST protocol only.
|
|
- Single self-hosted deployment.
|
|
- Simple admin authentication.
|
|
- Static agent API keys for MCP access.
|
|
- PostgreSQL as the system database.
|
|
- Optional Valkey/Redis cache for runtime coordination.
|
|
- Gitea Actions CI/CD.
|
|
|
|
The repository is focused only on the scope listed above.
|
|
|
|
## Architecture
|
|
|
|
Core concepts:
|
|
|
|
- `Workspace` is the data boundary for operations, agents, secrets, and logs.
|
|
- `Operation` is a versioned REST integration contract.
|
|
- `Agent` is an MCP surface that exposes a curated set of operations.
|
|
|
|
Runtime flow:
|
|
|
|
1. An operator creates or imports a REST operation.
|
|
2. Crank validates the schema and mapping.
|
|
3. The operator runs a test call against the upstream REST API.
|
|
4. The operation is published.
|
|
5. An agent exposes the published operation as an MCP tool.
|
|
6. MCP clients call the tool through `mcp-server`.
|
|
|
|
## License
|
|
|
|
GNU Affero General Public License v3.0 only
|