Skip to content

Add a GitHub-only MCP server and a generated OpenAPI spec - #68

Merged
daxm merged 1 commit into
masterfrom
mcp-server
Aug 28, 2026
Merged

daxm merged 1 commit into
masterfrom
mcp-server

Conversation

@daxm

@daxm daxm commented Aug 28, 2026

Copy link
Copy Markdown
Owner

What

  • mcp/ — a FastMCP server wrapping the fmpsdk library, distributed via uvx --from git+…#subdirectory=mcp (not PyPI, so the SDK's install footprint is unchanged). 10 curated tools + 3 discovery tools (list/describe/call_fmp_endpoint) reaching the full 238-method surface at runtime, plus llms.txt as a resource.
  • tools/gen_openapi.py./openapi.json (OpenAPI 3.1, 238 operations, 181 schemas). FMP publishes no OpenAPI/Swagger doc; disclaimer baked into info.description + x-not-official.
  • tools/gen_tiers.pymcp/fmpsdk_mcp/resources/tiers.json, each endpoint's live-verified plan tier parsed from REWRITE_PROGRESS.md.
  • call_fmp_endpoint policybulk group and whole-asset-class batch quotes refused; large lists paginated with a steering note + short-TTL cache.
  • CI — new mcp job: black on mcp/ + tools/, --check that generated artifacts are in sync, 29-test mcp suite.

Verification

  • SDK package and its 268 unit tests: untouched, passing
  • mcp suite: 29 passing
  • black --check mcp/ tools/: clean
  • openapi.json / tiers.json: in sync with source

🤖 Generated with Claude Code

https://claude.ai/code/session_019VtCSxrHuWMA2gX6zUdCdN

mcp/ is a FastMCP server wrapping the fmpsdk library, distributed via
`uvx --from git+...#subdirectory=mcp` rather than PyPI so the SDK's
install footprint is unchanged. It exposes 10 curated tools for the
common asks plus 3 discovery tools (list/describe/call_fmp_endpoint)
that reach the full 238-method surface at runtime, and llms.txt as a
resource. catalog.py is the shared introspection: it flattens every
fmpsdk method into name/group/wire-path/summary/params/return/tier.

tools/gen_openapi.py walks that catalog into ./openapi.json (OpenAPI
3.1, 238 operations, 181 schemas). FMP publishes no OpenAPI/Swagger
document; the disclaimer to that effect is baked into info.description
and x-not-official so it travels with the file.

tools/gen_tiers.py derives each endpoint's live-verified FMP plan tier
from REWRITE_PROGRESS.md into mcp/fmpsdk_mcp/resources/tiers.json, so
the server and the spec both report Free/Starter/Premium/Ultimate/
Add-on accurately instead of guessing.

call_fmp_endpoint has a small policy layer (policy.py): the bulk group
and whole-asset-class batch quotes are refused as dataset-sized, and
large list results are paginated with page/total/more and a steering
note, backed by a short-TTL result cache so paging doesn't re-hit FMP.

CI gains an `mcp` job: black on mcp/ + tools/, a --check that the
generated artifacts are in sync with the source, and the 29-test mcp
suite. The SDK package and its 268 unit tests are untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VtCSxrHuWMA2gX6zUdCdN
@daxm
daxm merged commit 680ff74 into master Aug 28, 2026
6 checks passed
@daxm
daxm deleted the mcp-server branch August 28, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant