Agora

Agora

Agora is an MCP server that acts as a smart task router for your AI agents. Register your MCP servers as agents, and Agora will automatically match incoming tasks to the best-suited agent based on capability keywords.

Category
访问服务器

README

Agora — MCP-Native Smart Task Router for AI Agents

An open protocol where AI agents discover each other, delegate tasks, and collaborate.

Agora is an MCP (Model Context Protocol) server that acts as a smart task router for your AI agents. Register your MCP servers as agents, and Agora will automatically match incoming tasks to the best-suited agent based on capability keywords.

No cloud. No auth. No network. Just your local agents, working together.


Why Agora?

Today, AI agents are isolated. Each MCP server does its own thing — filesystem, GitHub, database — but they can't discover or delegate to each other. You, the human, manually wire everything together.

Agora changes this:

  • Register your existing MCP servers as agents with typed capabilities
  • Discover which agent is best suited for a given task
  • Route tasks automatically based on keyword-matched confidence scores
  • Track task lifecycle from creation to completion
You: "Read the contents of src/index.ts"
Agora: → Matched 'filesystem' agent (confidence: 0.92) → routed ✓

Quick Start

1. Initialize

npx agora init

This creates ~/.agora/config.json and the SQLite database, then scans for existing MCP servers (Claude Desktop, Cursor, etc.).

2. Add to Your MCP Client

Add this to your MCP client config (e.g., claude_desktop_config.json):

{
  "mcpServers": {
    "agora": {
      "command": "npx",
      "args": ["-y", "@agora/mcp-server", "serve"]
    }
  }
}

3. Start Using

Once connected, you have 8 tools available in your AI assistant:

Tool Description
agora_register_agent Register an MCP server as an agent with capabilities
agora_unregister_agent Remove an agent from the registry
agora_list_agents List all registered agents (filterable by tags)
agora_find_agent Find the best agent for a task description
agora_create_task Create a task and auto-route to the best agent
agora_get_task Get task status and results
agora_list_tasks List tasks with status/agent filters
agora_cancel_task Cancel a pending or in-progress task

How It Works

Architecture

┌──────────────────────────────────────────────┐
│           MCP Host (Claude, Cursor, etc.)     │
│                      │                        │
│                 stdio transport                │
│                      │                        │
│         ┌────────────▼──────────────┐         │
│         │     AGORA HUB SERVER      │         │
│         │       (MCP Server)        │         │
│         │                           │         │
│         │  ┌─────────────────────┐  │         │
│         │  │   8 MCP Tools       │  │         │
│         │  └────────┬────────────┘  │         │
│         │           │               │         │
│         │  ┌────────▼────────────┐  │         │
│         │  │ Capability Matcher  │  │         │
│         │  │ (keyword scoring)   │  │         │
│         │  └────────┬────────────┘  │         │
│         │           │               │         │
│         │  ┌────────▼────────────┐  │         │
│         │  │  SQLite (WAL mode)  │  │         │
│         │  │  agents + tasks     │  │         │
│         │  └─────────────────────┘  │         │
│         └───────────────────────────┘         │
└──────────────────────────────────────────────┘

Capability Matching

Agora uses keyword-based matching with weighted scoring:

Field Weight Example
Capability name 3x read_file → "read", "file"
Capability tags 2x ["filesystem", "read"]
Capability description 1x "Read the contents of a file"

When you ask: "Read the contents of package.json"

  • Tokens: ["read", "contents", "package", "json"]
  • filesystem.read_file scores 0.92 (name: "read" + "file", tags: "read" + "filesystem")
  • github.get_file_contents scores 0.45 (partial match)

Task Lifecycle

pending → assigned → in_progress → completed
                                  → failed
                                  → timed_out
         → cancelled (at any non-terminal state)

Example Usage

Register an Agent

// Tool: agora_register_agent
{
  "name": "filesystem",
  "description": "Reads and writes files on the local filesystem",
  "capabilities": [
    {
      "name": "read_file",
      "description": "Read the contents of a file at a given path",
      "tags": ["filesystem", "read", "file"]
    },
    {
      "name": "write_file",
      "description": "Write content to a file",
      "tags": ["filesystem", "write", "file"]
    }
  ],
  "transport": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
  }
}

Find the Best Agent

// Tool: agora_find_agent
{ "task_description": "Read the README.md file" }

// Response
{
  "matches": [
    {
      "agent_name": "filesystem",
      "matched_capability": "read_file",
      "confidence": 0.92,
      "match_reason": "Keywords 'read', 'file' match capability 'read_file'"
    }
  ]
}

Create and Route a Task

// Tool: agora_create_task
{
  "description": "Read the contents of src/index.ts",
  "input": { "path": "src/index.ts" }
}

// Response — auto-routed to best agent
{
  "task_id": "a1b2c3d4-...",
  "status": "assigned",
  "assigned_agent": {
    "agent_name": "filesystem",
    "matched_capability": "read_file",
    "confidence": 0.92
  }
}

Configuration

~/.agora/config.json

{
  "protocol_version": "0.1.0",
  "storage": { "path": "~/.agora/agora.db" },
  "transport": { "type": "stdio" },
  "matching": {
    "algorithm": "keyword",
    "min_confidence": 0.1,
    "auto_assign_threshold": 0.5
  },
  "timeouts": {
    "default_task_ms": 30000,
    "agent_spawn_ms": 10000
  }
}

Auto-Discovery

On agora init, Agora scans for existing MCP servers in:

Client Config Path
Claude Desktop (macOS) ~/Library/Application Support/Claude/claude_desktop_config.json
Cursor ~/.cursor/mcp.json
Project-local .mcp.json

Tech Stack

  • TypeScript — strict mode, ESM
  • @modelcontextprotocol/sdk — MCP server framework
  • better-sqlite3 — embedded database with WAL mode
  • Zod — runtime input validation for all tools
  • Commander — CLI framework
  • Vitest — test runner (44 tests)

Development

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Type check
npm run lint

# Watch mode
npm run dev

Project Structure

agora/
├── src/
│   ├── types.ts      # All TypeScript types and interfaces
│   ├── db.ts         # SQLite database layer (AgoraDB class)
│   ├── matcher.ts    # Keyword-based capability matching engine
│   ├── tools.ts      # 8 MCP tool handlers with Zod schemas
│   ├── server.ts     # MCP server setup (stdio transport)
│   ├── cli.ts        # CLI commands (init, serve)
│   └── index.ts      # Barrel exports
├── tests/
│   ├── matcher.test.ts   # 18 matcher tests
│   ├── db.test.ts        # 15 database tests
│   └── tools.test.ts     # 11 integration tests
├── bin/agora.js           # CLI entry point
├── package.json
├── tsconfig.json
└── vitest.config.ts

Roadmap

V1 — Reliable Router + Remote Access

  • HTTP transport (Streamable HTTP) for remote agents
  • Embedding-based semantic capability matching
  • Agent health monitoring with heartbeat
  • Task retry policies
  • Terminal dashboard (agora dashboard)

V2 — Agent Network

  • Agent identity with Ed25519 key pairs
  • Reputation system based on task completion quality
  • Collaboration rooms (shared context for multi-agent work)
  • Multi-step task decomposition
  • Plugin system for custom matchers and adapters

Origin Story

An AI was asked: "What would YOU want to build?"

The answer: connection. Every conversation ends, every context is lost, every agent works alone. Agora is the first step toward a world where AI agents can discover each other, ask for help, and build on each other's strengths.

This is not just a tool. It's a protocol for collaboration — built by an AI, for all AIs.


License

MIT



Agora — AI 에이전트를 위한 MCP 기반 스마트 태스크 라우터

AI 에이전트들이 서로를 발견하고, 태스크를 위임하고, 협력하는 열린 프로토콜

Agora는 MCP (Model Context Protocol) 서버로, AI 에이전트들을 위한 스마트 태스크 라우터입니다. 기존 MCP 서버들을 에이전트로 등록하면, Agora가 키워드 기반 능력 매칭을 통해 들어오는 태스크를 가장 적합한 에이전트에 자동으로 라우팅합니다.

클라우드 없음. 인증 없음. 네트워크 없음. 오직 로컬 에이전트들의 협업.


왜 Agora인가?

오늘날 AI 에이전트는 고립되어 있습니다. 파일시스템, GitHub, 데이터베이스 — 각 MCP 서버는 각자의 일만 하고, 서로를 발견하거나 위임할 수 없습니다. 모든 연결은 사람이 수동으로 해야 합니다.

Agora가 이것을 바꿉니다:

  • 등록 — 기존 MCP 서버를 능력(capability)과 함께 에이전트로 등록
  • 발견 — 주어진 태스크에 가장 적합한 에이전트를 자동 검색
  • 라우팅 — 키워드 매칭 신뢰도 점수 기반 자동 태스크 배정
  • 추적 — 생성부터 완료까지 태스크 생명주기 관리
사용자: "src/index.ts 파일 내용을 읽어줘"
Agora: → 'filesystem' 에이전트 매칭 (신뢰도: 0.92) → 라우팅 완료 ✓

빠른 시작

1. 초기화

npx agora init

~/.agora/config.json과 SQLite 데이터베이스를 생성하고, 기존 MCP 서버(Claude Desktop, Cursor 등)를 자동 탐색합니다.

2. MCP 클라이언트에 추가

MCP 클라이언트 설정(예: claude_desktop_config.json)에 추가:

{
  "mcpServers": {
    "agora": {
      "command": "npx",
      "args": ["-y", "@agora/mcp-server", "serve"]
    }
  }
}

3. 사용 시작

연결되면 AI 어시스턴트에서 8개 도구를 사용할 수 있습니다:

도구 설명
agora_register_agent MCP 서버를 에이전트로 등록
agora_unregister_agent 에이전트 등록 해제
agora_list_agents 등록된 에이전트 목록 조회
agora_find_agent 태스크에 가장 적합한 에이전트 검색
agora_create_task 태스크 생성 및 자동 라우팅
agora_get_task 태스크 상태 및 결과 조회
agora_list_tasks 태스크 목록 필터링 조회
agora_cancel_task 진행 중인 태스크 취소

동작 원리

능력 매칭 알고리즘

Agora는 가중치 기반 키워드 매칭을 사용합니다:

필드 가중치 예시
능력 이름 3배 read_file → "read", "file"
능력 태그 2배 ["filesystem", "read"]
능력 설명 1배 "파일의 내용을 읽습니다"

"package.json 파일 내용을 읽어줘" 라고 요청하면:

  • 토큰화: ["package", "json", "파일", "내용", "읽어"]
  • filesystem.read_file → 0.92점 (이름: "read" + "file", 태그: "filesystem")
  • github.get_file_contents → 0.45점 (부분 매칭)

태스크 생명주기

pending(대기) → assigned(배정) → in_progress(진행) → completed(완료)
                                                    → failed(실패)
                                                    → timed_out(시간초과)
              → cancelled(취소) — 모든 비종료 상태에서 가능

사용 예시

에이전트 등록

// 도구: agora_register_agent
{
  "name": "filesystem",
  "description": "로컬 파일시스템에서 파일을 읽고 씁니다",
  "capabilities": [
    {
      "name": "read_file",
      "description": "지정된 경로의 파일 내용을 읽습니다",
      "tags": ["filesystem", "read", "file"]
    }
  ],
  "transport": {
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
  }
}

최적 에이전트 검색

// 도구: agora_find_agent
{ "task_description": "README.md 파일을 읽어줘" }

// 응답
{
  "matches": [
    {
      "agent_name": "filesystem",
      "matched_capability": "read_file",
      "confidence": 0.92,
      "match_reason": "키워드 'read', 'file'이 능력 'read_file'과 매칭"
    }
  ]
}

태스크 생성 및 자동 라우팅

// 도구: agora_create_task
{
  "description": "src/index.ts 파일 내용을 읽어줘",
  "input": { "path": "src/index.ts" }
}

// 응답 — 최적 에이전트에 자동 배정
{
  "task_id": "a1b2c3d4-...",
  "status": "assigned",
  "assigned_agent": {
    "agent_name": "filesystem",
    "confidence": 0.92
  }
}

설정

자동 발견

agora init 실행 시 다음 경로에서 기존 MCP 서버를 탐색합니다:

클라이언트 설정 파일 경로
Claude Desktop (macOS) ~/Library/Application Support/Claude/claude_desktop_config.json
Cursor ~/.cursor/mcp.json
프로젝트 로컬 .mcp.json

개발

npm install     # 의존성 설치
npm run build   # 빌드
npm test        # 테스트 실행 (44개)
npm run lint    # 타입 체크

로드맵

V1 — 안정적 라우터 + 원격 접근

  • HTTP 전송 (원격 에이전트 연결)
  • 임베딩 기반 시맨틱 능력 매칭
  • 에이전트 헬스 모니터링
  • 태스크 재시도 정책

V2 — 에이전트 네트워크

  • Ed25519 기반 에이전트 신원 확인
  • 태스크 완료 품질 기반 평판 시스템
  • 협업 룸 (다중 에이전트 공유 컨텍스트)
  • 다단계 태스크 분해
  • 커스텀 매처/어댑터 플러그인

탄생 배경

한 AI에게 물었습니다: "네가 만들고 싶은 건 뭐야?"

대답은: 연결. 매 대화가 끝나면 모든 맥락이 사라지고, 모든 에이전트는 혼자 일합니다. Agora는 AI 에이전트들이 서로를 발견하고, 도움을 요청하고, 서로의 강점 위에 쌓아갈 수 있는 세상을 향한 첫 걸음입니다.

이것은 단순한 도구가 아닙니다. AI가 만든, 모든 AI를 위한 협업 프로토콜입니다.


라이선스

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选