tctc-mcp
Exposes ERC-7303 token-controlled roles to AI agents, enabling permission checks and on-chain role management via control tokens.
README
tctc-mcp
An MCP server exposing ERC-7303 (Token-Controlled Token Circulation) roles to AI agents: agents check their own on-chain permissions, and human principals grant/revoke them by minting/burning control tokens — no permission server required.
Status: v1 implemented — unit-tested and verified end-to-end against the Sepolia demo deployment (grant → check → revoke → check through a real MCP client).
Quick start
npm install && npm run build
# read-only mode (agent side): only query tools are registered
ALCHEMY_API_KEY=... node dist/index.js --config examples/config.sepolia.json
# admin mode (principal side): grant_role / revoke_role also registered
ALCHEMY_API_KEY=... TCTC_ADMIN_PRIVATE_KEY=0x... \
node dist/index.js --config examples/config.sepolia.json
MCP client registration: see
examples/claude.mcp.json. The admin private
key is only ever read from the TCTC_ADMIN_PRIVATE_KEY environment
variable; configs containing anything that looks like a private key are
rejected at startup.
Tools
| Tool | Mode | Purpose |
|---|---|---|
list_roles |
both | Configured roles and their control tokens |
check_role |
both | Does an account hold a role? (live balanceOf, with evidence) |
check_all_roles |
both | Session-start self-assessment across all roles |
resolve_agent |
both* | ERC-8004 agentId → owner / agentURI / agentWallet / ERC-6551 TBA |
grant_role |
admin | Mint the control token to a subject |
revoke_role |
admin | Burn the subject's control token — the kill switch |
* registered only when the config has an identity section.
Subjects can be given as a raw address, as an ERC-8004 agentId
(resolved to its ERC-6551 Token Bound Account, the recommended binding
target), or omitted to use the config's self.
Documents
- docs/CONCEPT.md — background and rationale: TCTC as the authorization layer for AI agents, its relationship to ERC-8004 (Trustless Agents) and ERC-6551 (Token Bound Accounts), recommended ERC-7303 spec updates, and the adoption strategy.
- docs/MCP_SERVER_SPEC.md — v1 design specification (architecture, config, tools, security, roadmap).
- docs/TEST_REPORT.md — v1 test report: 24 unit tests and the live Sepolia E2E (on-chain kill-switch cycle through a real MCP client).
- examples/config.sepolia.json —
concrete config for the Sepolia demo deployment (primary roles) and
the original TCTC reference deployment (
COMPLEX_*roles). - examples/contracts/ — sources of the demo
contracts deployed on Sepolia (
AgentControlTokens,TCTCDemoToken,ERC7303).
Demo deployment (Sepolia, Etherscan-verified)
AgentControlTokens(soulbound, issuer-burnable ERC-1155):0x12342A7F0190B3AF3F4b47546D34006EDA54eE0BTCTCDemoToken(ERC-721 + ERC-7303 target):0xa52fe39D0de852e88488faa34e723E861D0b09BD
Development
npm test # unit tests (vitest)
node scripts/e2e-live.mjs # live E2E: spawns the server via MCP stdio client
# (needs ALCHEMY_API_KEY; admin phase additionally
# TCTC_ADMIN_PRIVATE_KEY and E2E_SUBJECT)
Related
- TCTC reference implementation: https://github.com/kofujimura/TCTC
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.