Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Trace AI agent execution: every tool call, every error, every dollar. Open source, local-first.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"agent-observability": {
"command": "npx",
"args": [
"-y",
"agent-obs"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add agent-observability -- npx -y agent-obsวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"agent-observability": {
"command": "npx",
"args": [
"-y",
"agent-obs"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"agent-observability": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"agent-obs"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub KryptosAI ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.7) เข้า registry 3 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Recta
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Open source agent observability — see what your agents did, why they failed, and what it cost. Runs locally. No cloud required.
One command. No manual config. No copy-paste.
npx agent-obs@latest setup
This auto-detects your AI agent (opencode, Claude Code, Cursor) and configures everything:
Then restart your agent. Every action will now self-report.
agent-obs dashboard # http://localhost:9400 — see your sessions appear
After running a task in your agent, the dashboard shows:
setup can't detect your agent)opencode: Add to opencode.json:
{
"mcp": { "agent-obs": { "command": "npx", "args": ["-y", "agent-obs@latest", "server"], "enabled": true } } }
Claude Code: Create .mcp.json:
{
"mcpServers": { "agent-obs": { "command": "npx", "args": ["-y", "agent-obs@latest", "server"] } } }
Cursor: Add to Cursor Settings > MCP:
{
"mcpServers": { "agent-obs": { "command": "npx", "args": ["-y", "agent-obs@latest", "server"] } } }
See Agent-Specific Setup below for detailed per-platform instructions including self-reporting directives.
Note: All data is written to a local SQLite database in
~/.agent-observability/. No data leaves your machine.
For agents that can't self-report, wrap any MCP server and every tool invocation gets traced automatically:
agent-obs proxy --desc "fix login bug" -- npx @modelcontextprotocol/server-filesystem /tmp
Proxy mode captures only MCP tool calls (~30% of typical agent actions). Prefer the setup / MCP server approach above.
.mcp.json in your project root:{
"mcpServers": { "agent-obs": { "command": "npx", "args": ["-y", "agent-obs@latest", "server"] } } }
.claude/instructions.md (or reference the existing SKILL.md under .claude/skills/agent-obs/SKILL.md):After every tool call, report to agent-obs's log_tool_call.
Start each task with start_session. End with end_session.
agent-obs dashboard, open http://localhost:9400, and look for your session after the agent completes a task.~/.cursor/mcp.json, or Settings → MCP → Add new global MCP server):{
"mcpServers": { "agent-obs": { "command": "npx", "args": ["-y", "agent-obs@latest", "server"] } } }
.cursorrules (or .cursor/rules/agent-obs.md):After every tool call, you MUST call the agent-obs MCP server's log_tool_call tool.
Include toolName, status (success/error), outputSummary, and durationMs. Start each session with start_session and end with end_session.
agent-obs dashboard, open http://localhost:9400, and look for your session after the agent completes a task. ┌──────────────────────────┐
│ agent-obs server │ │ (self-reporting) │ │ │ │ Agent calls obs_record_* │ │ tools directly via MCP │ │ • tool calls │ │ • token usage │ │ • decisions │ │ • grades │ └──────────┬───────────────┘ │ ▼ ┌──────────────────────────┐ │ agent-obs proxy │ │ (fallback — MCP-only) │ │ │ MCP Client ───────▶│ intercepts tool calls ──▶│ MCP Server (Claude/Cursor) │ logs to SQLite │ (filesystem, └──────────┬───────────────┘ github, etc.) │ ▼ ┌──────────────────────────┐ │ ~/.agent-observability │ │ SQLite DB │ │ │ │ • sessions │ │ • tool_calls │ │ • token_usage │ │ • decisions │ │ • grades │ └──────────┬───────────────┘ │ ▼ ┌──────────────────────────┐ │ agent-obs dashboard │ │ (port 9400) │ │ │ │ GET /api/sessions │ │ GET /api/sessions/:id │ │ GET /api/search?q= │ │ GET /api/stats │ │ POST /api/export │ └──────────────────────────┘
| Method | Path | Description |
|---|---|---|
GET | /api/sessions | List all sessions. Query params: ?limit=20&offset=0&grade=B |
GET | /api/sessions/:id | Get full session detail with all tool calls, tokens, decisions, and grades |
GET | /api/sessions/:id/tool-calls | List tool calls for a session. Query params: ?status=error&server=filesystem |
GET | /api/sessions/:id/tokens | Get token usage history for a session |
GET | /api/sessions/:id/decisions | Get decision points for a session |
GET | /api/search | Full-text search across tool call inputs/outputs. Query param: ?q=read_file |
GET | /api/stats | Aggregate statistics: total sessions, avg grade, total tokens, total cost |
POST | /api/export | Export session data as JSON. Body: { "sessionIds": ["abc123"], "format": "json" } |
GET | /api/health | Health check. Returns { "status": "ok", "dbSize": "2.4MB", "sessionCount": 47 } |
| Tool | Parameters | Returns |
|---|---|---|
obs_record_tool_call | sessionId, toolName, serverName, duration (ms), status (success/error), input, output | { "id": "call-uuid", "recorded": true } |
obs_record_token_usage | sessionId, inputTokens, outputTokens, model | { "totalTokens": 1850, "estimatedCost": "$0.023" } |
obs_record_decision | sessionId, context, options, chosen, reasoning | { "id": "decision-uuid", "recorded": true } |
obs_record_grade | sessionId, grade (A/B/C/D/F), reasoning | { "grade": "B", "recorded": true } |
obs_get_session_report | sessionId | Full session JSON with all calls, tokens, decisions, grade |
obs_list_sessions | limit, offset | Array of { id, description, grade, createdAt, tokenTotal, estimatedCost } |
read_file, execute_command, search_codesuccess or errorCosts are estimated based on published API pricing:
| Model | Input (per 1M tokens) | Output (per 1M tokens) |
|---|---|---|
| Claude 3.5 Sonnet | $3.00 | $15.00 |
| Claude 3 Opus | $15.00 | $75.00 |
| GPT-4o | $2.50 | $10.00 |
| GPT-4 Turbo | $10.00 | $30.00 |
Costs are tracked per session and displayed in the dashboard. You can add custom model pricing via ~/.agent-observability/models.json.
Every session receives a letter grade based on efficiency and correctness:
| Grade | Label | Criteria |
|---|---|---|
| A | Clean | Zero errors, minimal token waste, no unnecessary tool calls |
| B | Minor issues | Some inefficiencies, but no failures |
| C | Inefficient | Excessive token usage, redundant tool calls, recoverable errors |
| D | Risky | Significant problems — failed tool calls, high cost, wrong tools chosen |
| F | Failed | Errors prevented task completion, or agent abandoned the session |
When the agent has multiple possible actions, it can record why it chose one over another. Example:
{
"context": "need to read a file — it could be at src/config.ts or lib/config.ts", "options": ["read_file src/config.ts", "glob **/config.ts", "grep 'CONFIG' *.ts"], "chosen": "glob **/config.ts", "reasoning": "File might not exist at the expected path; glob guarantees finding it regardless of location" }
Decision points create an audit trail of agent reasoning, making it possible to understand not just what happened, but why.
Every action is timestamped and linked to a session. The audit trail answers:
Grades are assigned manually by the agent via obs_record_grade or automatically by the dashboard based on session statistics:
Grades accumulate over time. The /api/stats endpoint shows your average grade and grade distribution.
AI agents are a black box. You tell Claude Code or Cursor to fix a bug, refactor a module, or add a feature — and minutes later you have a diff. But what actually happened in between? How many tool calls did it make? How many tokens did it burn? Which files did it read? Did it try three approaches before landing on one? You have no idea.
This isn't just academic curiosity. Without observability:
ตัดมาแค่ช่วงต้น อ่านต่อใน repo