Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Point Gecko at an OpenAPI spec; get first-call-correct, auth-hidden agent tools.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://mcp.geckovision.tech/mcpClaude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"surf": {
"command": "uvx",
"args": [
"gecko-surf"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add --transport http surf https://mcp.geckovision.tech/mcpclaude mcp add surf -- uvx gecko-surf프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"surf": {
"url": "https://mcp.geckovision.tech/mcp"
}
}
}프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"surf": {
"command": "uvx",
"args": [
"gecko-surf"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"surf": {
"type": "http",
"url": "https://mcp.geckovision.tech/mcp"
}
}
}프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"surf": {
"type": "stdio",
"command": "uvx",
"args": [
"gecko-surf"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://mcp.geckovision.tech/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
아직 이 서버의 도구 목록을 읽지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 도메인 geckovision.tech 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.0)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Detailing Manager
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
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.
Connect your auto detailing studio's tasks, cars, clients and revenue to Claude or ChatGPT.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Stop letting your agent guess
Check the call before it counts. Gecko is open-source and runs on your machine:
one command maps any API — messy, paywalled, or on-chain — into a call graph your agent
checks instead of guesses from , and anything that spends is simulated to a receipt first.
No wallet, no payment rail, no key held — 64 mainnet transactions, 49 with a cost predicted before signing, 47 of those exact to the unit (re-read from the chain, 2026-09-19).
Quickstart · Docs · Architecture · FAQ · Security
Built for the calls your agent must not get wrong. Two axes, either one qualifies:
a messy surface (paywalled, drifting, undocumented, on-chain) or a **high-stakes
action** (your agent runs unattended with credentials or money).
Gecko is an open-source knowledge graph built specifically for AI agents that call APIs. Point it at an OpenAPI spec, a docs site, or a Solana program's IDL and source, and it reads that surface into a graph your agent traverses — every fact tagged with where it came from, and anything it cannot establish flagged rather than guessed.
A specification tells your agent what a call *looks like*. It cannot tell it whether the call will *work*. That gap is in every spec, including a perfect one, and it is where agents fail expensively: not on the call that errors, but on the call that is accepted and wrong. Gecko closes it by handing back one specific call — and, for anything that spends, by simulating that call against real state first and returning a receipt.
It is not the agent and not an orchestrator. It holds no key, signs nothing, broadcasts nothing, and stores no response payload — it stores surfaces and correctness metadata, never your data.
No install:
npx @geckovision/gecko doctor # 1. check your environment
npx @geckovision/gecko add # 2. comprehend it — $0, no live call npx @geckovision/gecko report # 3. get the scorecard — grade + findings npx @geckovision/gecko serve # 4. your agent uses it over MCP
Or install once:
npm install -g @geckovision/gecko # prebuilt binary — no Python needed
uv tool install "gecko-surf[serve]" # or pip, if you want the Python package
gecko add
Plug into your agent:
# Claude Code
claude mcp add my-api -- npx -y @geckovision/gecko serve --stdio
{ "mcpServers": { "my-api": { "command": "npx", "args": ["-y", "@geckovision/gecko", "serve", " ", "--stdio"] } } }
Going live is a separate, deliberate step:
gecko auth set <provider> # key goes to your OS keychain — never mcp.json
Then your agent asks questions, not endpoints:
Which fixtures kick off in the next hour, and what are the current odds?
What is the peg state of USDC right now? Plan a swap of SOL for USDC on Meteora, bin_step 4.
An OpenAPI says what exists. An IDL says what a program looks like. Neither is enough to act:
Gecko replaces the guess with a graph:
extracted from the surface, recovered from source, or honestly flagged as unknown. Never fabricated.Most agent-tool layers are thin wrappers. Gecko is a memory substrate, and three of its design choices are deliberately different from the textbook:
| Choice | Why it matters |
|---|---|
| Deterministic semantic memory — lexical retrieval, no vector DB | the graph never "approximately" remembers; BM25 and vectors sit behind evidence gates |
| Self-generated episodic memory — categorical outcomes + a drift series | Gecko re-simulates to create its own episodes; no dependence on your data plane, no payloads stored |
| Typed procedural memory — plans as executable JSON | landing plans and derive orders a builder can run; text loses the join, ours can't |
And the depth is measured, not asserted:
overlays/) — the value of comprehension, quantified per program.Explore the diagrams: architecture on docs.geckovision.tech (all three views, rendered) · the map in this repo
Live, on a mainnet fork, $0:
| Case | Naive path | Gecko |
|---|---|---|
| Pump.fun buy | ❌ reverts — AccountNotInitialized (3012) | ✅ lands — 86,669 CU |
| Pump.fun sell | ❌ transfers the tokens, then reverts — InvalidBondingCurveV2 (6074) | ✅ lands — 50,783 CU |
| Meteora DLMM swap | ❌ reverts — derive-only, no ATA/wrap/bin-array preludes | ✅ wrap → swap → unwrap — 81,964 CU |
| Meteora pool derivation | ❌ stale 3-seed scheme → the wrong pool, silently | ✅ correct 4-seed derivation, differential-proven |
| Docs-only API (no spec) | agent invents endpoints | ✅ draft spec recovered, verified VERIFIED/REFUTED |
The facts behind those passes are not on any surface: a 4th PDA seed the SDK added in 2024, an account the IDL only mentions in prose, a fee field resolved by a refuting simulation. That is the graph your agent traverses.
TxLINE (paywalled sports odds) — without vs with Gecko
· MP4
Cross-API correlation — three APIs, one question
Pegana × Birdeye × Jupiter joined on a declared entity; the agent plans across surfaces first-try. Try it: gecko graph svg renders any surface's call graph.
Solana programs — buy a coffee on mainnet
Everything above is a $0 fork. This one is not: real mainnet, real USDC, a real espresso.
let_me_buy is a storefront program on Solana. A merchant stands up a store and lists products priced in USDC; a buyer scans a QR code and pays. One account per store — PDA(["receipts", store_name]) — holds the menu, the receipts, the running count and the merchant's authority.
MP4 version — one unedited take. The receipt says 24,956 CU before anything is signed; the chain charges 24,956 CU (4X8dCyZU…, slot 439046190). The key never leaves its enclave.
uvx --from "gecko-surf[serve,solana]" gecko-orquestra --program let_me_buy --stdio
Two facts the IDL does not carry, and both break the call:
mark_as_delivered declares its receipts seed as store_name, but that instruction's own arguments are _store_name and receipt_id. The seed names an argument that does not exist, so a deriver resolving seeds by argument name gets nothing for the one seed that selects the store. Gecko binds by seed value.make_purchase the store's authority is writable but not a signer. The buyer pays from ATA(signer, mint); the store is credited at ATA(authority, mint) — same mint, different owner. Derive both from one owner and you have built a purchase that pays the buyer back. Gecko refuses that plan before a builder is ever asked.The prediction tracks state, not a memorised constant. Three purchases at this one storefront were charged 23,789 → 24,183 → 24,956 CU; the last two are the *same product*. Each sale appends a receipt to the store's account, so the program does more work — and the receipt predicted the new number each time it was asked.
Gecko recovers what the surface drops, Orquestra builds the instruction, and the receipt says whether it lands — before any signature.
Control plane, never data plane. Gecko stores surfaces + correctness metadata — never response payloads, user data, or secrets.
Interactive diagrams · llms.txt · Receipt semantics
| Capability | Entry point |
|---|---|
| Serve any API to agents over MCP | gecko serve |
| Scorecard: grade + fixable findings + Playground | gecko report |
| Recover a draft spec from human docs | gecko from-docs |
| First-call-correctness tests for CI | gecko test |
| The surface graph, rendered | gecko graph svg |
| Program Surface: recovered seeds + derive plans | `gecko orquest
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요