swatplus-mcp
Tamandua
すでに使っているコーディングアシスタント — Claude Code、Copilot、Codex、ローカルモデル — を、SWAT+ 上でより安く、より正確にします。
それはアシスタントではありません。SWAT+ の Fortran ソースを静的解析のみから ファクトのみのインデックス を構築し、それを MCP ツール として、またチェックアウト内のファイルとして提供します。位置情報付きのプロシージャ、コールグラフ、ユニット番号付きのファイル I/O、フィールドパスによる変数の書き込み、インデックス変数付きのループヘッダ、ソースがインラインで文書化している単位と意味を備えた派生型。その中にモデルが書いたものは何もありません。
なぜやるのか:hru_control のループを列挙するよう頼まれたとき、生のソースを扱うアシスタントは 890 行すべてを読み、21 個中 18 個のきれいな表を作りました。その回答には、不完全であることを示すものは何もありませんでした。網羅を求める質問には、ここでは構造上、網羅的な答えが返ります。すべての行にはファイルと行番号が付いています。
現状:
docs/status.md← ここから始めてください決定事項:
docs/decisions.md依存関係の固定:
docs/pins.toml
使う
ツールだけが必要な場合 — SWAT+ のチェックアウトもパーサーも不要:
pip install "git+https://github.com/tugraskan/Tamandua.git@v0.1.1"タグ付けされたパッケージには、固定された SWAT+ ファクトスナップショットが含まれています。将来の PyPI 配布名は swatplus-tamandua です(tamandua はすでに無関係のプロジェクトが所有しています)。機械固有のパスを含まないサーバーをアシスタントに指定してください:
// .mcp.json (Claude Code) — VS Code uses .vscode/mcp.json, where these
// entries nest inside a top-level "servers" object instead.
{
"mcpServers": {
"swatplus-source": {
"command": "swatplus-mcp",
"args": ["--compact"]
}
}
}SWAT+ のチェックアウトとパーサーがある場合、サーバーをソースに直接向けてください:
swatplus-mcp --source /path/to/swatplus --compact実行中のプロセスは、各リクエストの前に作業中の Fortran ツリーのフィンガープリントを取得します。編集の後にのみ再パースするため、手動での再ビルドやサーバーの再起動なしに、次の回答はソースに追従します。
他の誰かのために移植可能なファクトファイルを生成するには:
cd <your swatplus checkout> && swatplus-buildこれは swatplus-facts.json だけを書き出し、他には何も書き出しません。--facts で起動されたサーバーは、そのファイルが置き換えられたことを検出し、再起動せずに最新の完全なスナップショットを再読み込みします。パッケージに同梱されているリリーススナップショットは、設計上、静的なままです。
ツールが MCP サーバーを実行できない場合、swatplus-build --markdown は SWATPLUS_INDEX.md もレンダリングし、すべてのアシスタント指示ファイル(CLAUDE.md、AGENTS.md、.github/copilot-instructions.md)がそのファイルを指すようにして、代わりに grep できるようにします。これはフォールバックであり、デフォルトではありません。
チェックは 最後のコミットではなく作業ツリー をハッシュします — 質問は編集中のコードについて行われるものであり、それはまさに、コミットベースのチェックが古いインデックスを最新とみなしてしまう状況です。
Related MCP server: fw-context-mcp
dataselector と組み合わせる
swatplus-dataselector は残りの半分を提供します:入力ファイルの列が何を意味するか、そして実際の TxtInOut データセットに何が含まれているか。この2つは重複しません — こちらは Fortran が何を行うかを知っており、あちらはファイルが何を含むかを知っています。両方を実行し、どちらがどちら用かをアシスタントに伝えてください。
レイアウト
tamandua/
├── index/ # build the facts, render, install pointers, snapshot
│ ├── build.py # static analysis -> SourceIndex
│ ├── snapshot.py # read/write swatplus-facts.json, so serving needs no parser
│ ├── render.py # SOURCE_INDEX.md
│ ├── install.py # assistant instruction-file pointers
│ └── scope.py # loop nesting, for conditional breakpoints
├── mcp/server.py # 14 read-only tools over the same objects
├── mcp/client.py # generic MCP stdio client (talk to another server)
├── output/reader.py # query a run's output files
└── config.py # loads docs/pins.toml開発
export SWATPLUS_SOURCE=/path/to/swatplus
export SWATPLUS_REFERENCE_CORPUS=/path/to/swatplus-reference-corpus # the parser
python -m pip install -e ".[dev]"
pytest # 151 pass, 9 skipped (128/32 without the parser)パーサーはビルド時のみの依存関係です:同梱のファクトファイルにより、インストールされたサーバーは、パーサーも SWAT+ ソースもなしで実行できます(D-8 を参照)。別のスナップショットを使うには --facts を、チェックアウトからライブで構築するには --source を渡してください。
# build the publishable artifacts
swatplus-build --facts dist/swatplus-facts.json --out dist/SWATPLUS_INDEX.md
# serve them with nothing else installed
swatplus-mcp --facts dist/swatplus-facts.jsonv*.*.* のタグを付けると .github/workflows/release.yml が実行され、固定されたコミットに対して両方をビルドし、チェックアウトを削除し、スナップショットが依然として回答を返すことを検証して、公開します。
原則
ファクトのみ — モデルが書いたものはインデックスに入りません。すべての主張には、そのファイルと行番号が付いています。結論を出す前に測定してください。調査結果は、それを生成したスクリプトとともに docs/*_experiment.md にあります。この作業で見つかった8 つの欠陥は、すべて通常の使用によるもので、ハーネスによるものはゼロでした。したがって、推論するよりも実際に実行することを優先してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA local, SQLite-backed code index for Claude Code, exposed over MCP, enabling targeted code retrieval without external APIs.1MIT
- AlicenseAqualityAmaintenanceExposes tools for AI assistants to query a persistent SQLite+FTS5 index of C/C++ symbols parsed from real build commands, enabling sub-millisecond lookup, full-text search, and natural-language explanation without hallucination.387MIT
- AlicenseNot gradedqualityBmaintenanceLocal-first, read-only MCP server for Claude Code that indexes and searches full-stack projects (FastAPI + React + PostgreSQL) with SQLite-backed FTS, cross-reference graph, and file-watcher auto-reload.3MIT
- AlicenseNot gradedqualityCmaintenanceSemantic code index and gatekeeper that exposes 14 read-only MCP tools for AI agents, enabling symbol search, definition lookup, reference finding, and impact analysis via static analysis of codebases.14MIT
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Read-only MCP connector serving the Run It on AI book; index and Implementation Blocks are free.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tugraskan/Tamandua'
If you have feedback or need assistance with the MCP directory API, please join our Discord server