Cross-service API dependency graph for microservice stacks. MCP stdio server + CLI for Claude Code, Cursor, and Windsurf.
Project description
Ariadne
Ariadne's thread — a way out of the microservice maze.
Cross-service API dependency graph for Spring Boot + TypeScript microservice stacks. MCP stdio server for AI coding assistants (Claude Code, Cursor, Windsurf), with a CLI twin. Local SQLite + TF-IDF. Zero ML dependencies.
What it does
Indexes the contract layer — GraphQL mutations, REST endpoints, Kafka topics, frontend queries. Nothing else. That's why results fit an AI context window.
Ask Claude "where does createOrder live across the stack?" and
query_chains returns:
Top Cluster #1 [confidence: 0.91]
Services: gateway, orders-svc, billing-svc, web
- [web] Frontend Mutation: createOrder
- [gateway] GraphQL Mutation: createOrder
- [orders-svc] HTTP POST /orders: createOrder
- [orders-svc] Kafka Topic: order-created
- [billing-svc] Kafka Listener: order-created → chargeCustomer
~500 tokens round-trip. The equivalent grep -r createOrder across
four repos returns 40+ matches across DTOs, tests, and configs at
~2000 tokens, with the contract layer buried.
Supports: GraphQL · Spring HTTP/Kafka/RestClient · TypeScript Apollo/fetch/axios · Cube.js.
Try it in 30 seconds (zero config)
pip install ariadne-mcp
ariadne-mcp demo
Clones spring-petclinic-microservices into
~/.cache/ariadne-mcp/demo, scans it, and prints the top cluster for
owner — a real cross-service call chain. No config file, no workspace
setup.
Install on your own workspace
pip install ariadne-mcp
cp "$(python -c 'import ariadne_mcp, os; print(os.path.join(os.path.dirname(ariadne_mcp.__file__), "ariadne.config.example.json"))')" ariadne.config.json
# edit ariadne.config.json (list the repos you want indexed)
ariadne-mcp install ariadne.config.json ~/your-workspace
Restart Claude Code. install is idempotent — re-run after pulling new
code, or let the assistant call rescan on a stale_warning.
Config
{ "repos": [
{ "path": "../gateway" },
{ "path": "../orders-svc" },
{ "path": "../web" }
]}
Scanners are inferred from each repo's top-level files
(pom.xml / build.gradle / package.json / SDL). See
docs/CONFIG.md for the detection table and override
syntax.
Try it on a public sample
examples/spring-petclinic/ — clone the
public spring-petclinic-microservices sample, drop in the config,
scan, query. Reproducible end-to-end in under a minute.
Architecture, MCP tools, scoring math, feedback boost →
docs/ARCHITECTURE.md. Custom scanners (Go,
Rust, anything) → docs/CUSTOM_SCANNERS.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ariadne_mcp-0.1.1.tar.gz.
File metadata
- Download URL: ariadne_mcp-0.1.1.tar.gz
- Upload date:
- Size: 61.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d091dfe0bca5e272faae55ee43c6b635adb810a19359854103278f817dfb9353
|
|
| MD5 |
1a44da13ab3b41e625a752fbd8bc0570
|
|
| BLAKE2b-256 |
3670fbb894d0486ca6e9b5c31605eb1a80dae8ecb86b175fd2a5f8294c67612f
|
File details
Details for the file ariadne_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ariadne_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 56.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e78dae67c3cd87fe4db6dbc59bc05bd8960bda64df2a6385dc28f1a9d947b8c
|
|
| MD5 |
2091460442b6a399de7f62016619b61a
|
|
| BLAKE2b-256 |
e85f3fdedb09e89e3e2a2965eeb0c3e0158ad0185f61a468e61884feb6833775
|