Fake Pennylane MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fake Pennylane MCP Servershow me unpaid invoices for all customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fake Pennylane MCP Server
An open-source fake server that emulates the Pennylane MCP experience for local development, automated tests, demos, and CI pipelines — without requiring a real Pennylane account or real accounting data.
Status: working early implementation. The repository now includes a runnable Streamable HTTP MCP server, deterministic fixtures, scenario packs, static bearer auth, and a fake OAuth flow for callback/integration testing.
Why this project exists
Pennylane MCP is useful, but it is hard to validate an integration when you do not have:
a real Pennylane account,
a portfolio of test companies and customers,
deterministic accounting fixtures,
a safe environment for demos and CI.
This project solves that gap by providing a predictable, developer-friendly test double for a Pennylane-like MCP server.
Related MCP server: Local Financial MCP Mock Server
Current capabilities
The current implementation provides:
a Streamable HTTP MCP server,
deterministic fixture loading from JSON,
scenario-pack selection,
optional static bearer token authentication,
a fake OAuth authorization-code flow for end-to-end callback testing,
automated local tests for runtime, scenarios, and auth.
Exposed tools
get_contextget_companylist_companieslist_customersget_customerlist_customer_invoices
Quickstart
Requirements
Python 3.11+
uv
Install dependencies
cd /home/leyriel/dev/fake-pennylane-mcp-server
uv syncRun the server
Default fixture dataset, no auth:
uv run python -m fake_pennylane_mcp_server --host 127.0.0.1 --port 8000With a scenario pack:
uv run python -m fake_pennylane_mcp_server \
--host 127.0.0.1 \
--port 8000 \
--scenario unpaid_invoiceWith static bearer auth:
uv run python -m fake_pennylane_mcp_server \
--host 127.0.0.1 \
--port 8000 \
--auth-mode static_bearer \
--bearer-token test-secret-tokenWith fake OAuth flow:
uv run python -m fake_pennylane_mcp_server \
--host 127.0.0.1 \
--port 8000 \
--auth-mode fake_oauthRun with Docker Compose
Build and start the default server:
docker compose up --buildRun detached:
docker compose up --build -dStop it:
docker compose downIf port 8000 is already used on your machine, override the published host port:
PUBLISHED_PORT=8080 docker compose up --build -dUse a scenario pack:
SCENARIO_NAME=unpaid_invoice docker compose up --buildUse static bearer auth:
AUTH_MODE=static_bearer BEARER_TOKEN=test-secret-token docker compose up --buildUse fake OAuth mode:
AUTH_MODE=fake_oauth docker compose up --buildBy default Compose exposes the server on http://127.0.0.1:${PUBLISHED_PORT:-8000}/mcp and mounts ./fixtures read-only into the container.
Scenario packs
The default fixture file currently exposes these scenario packs:
defaultcustomer_foundcustomer_not_foundunpaid_invoicemulti_company
Each scenario narrows the deterministic dataset to a stable business situation.
Authentication modes
none
Default mode. No Authorization header is required.
static_bearer
Requires a bearer token on MCP HTTP requests.
Example header:
Authorization: Bearer ***fake_oauth
Exposes a minimal fake OAuth authorization server alongside the MCP resource server.
Included endpoints:
/.well-known/oauth-authorization-server/.well-known/oauth-protected-resource/mcp/authorize/token
Current fake client contract:
client_id:fake-public-clienttoken endpoint auth method:
noneredirect URIs:
http://127.0.0.1:9999/callbackhttp://localhost:9999/callback
scope:
mcp:access
This flow is meant for local integration tests and fake callback simulations — not as a production OAuth server.
Compatibility and status tracking
See:
docs/compatibility-matrix.mddocs/README.md
Example clients
See:
examples/basic_client.pyexamples/bearer_client.pyexamples/README.md
Running tests
uv run pytest -qDevelopment workflow
Typical local loop:
update fixtures / scenarios / auth behavior,
run
uv run pytest -q,run one of the example clients against a local server,
commit the change.
Project structure
.
├── docs/
├── examples/
├── fixtures/
├── src/
├── tests/
├── CONTRIBUTING.md
├── Dockerfile
├── docker-compose.yml
├── LICENSE
├── README.md
└── pyproject.tomlRoadmap
Bootstrap
Create Plane project
Create public GitHub repository
Publish initial detailed README
Prepare repo structure for implementation handoff
Implementation milestones
Implement fake Streamable HTTP MCP runtime
Add deterministic fixture loading
Add fake customer / invoice queries
Add scenario packs
Add auth modes for integration testing
Add runnable example clients
Add fake OAuth flow for end-to-end callback testing
Publish a compatibility matrix
Add Docker and Docker Compose local runtime
Next useful milestones
add GitHub Actions CI once a token with
workflowscope is availableenrich compatibility with more Pennylane-like tools
add more domain fixture packs
add standalone OAuth example client
document additional integration recipes
Open-source direction
The intent is for this project to be genuinely useful to a broader audience, not just a one-off internal spike.
That means we optimize for:
clarity of documentation,
ease of local setup,
stable deterministic fixtures,
transparent scope,
simple contribution paths.
Project origin
This repository was spun out from work around a MissionGuard integration effort, where a Pennylane MCP replacement strategy needed a realistic test environment without depending on a real Pennylane tenant.
License
MIT.
Disclaimer
This project is not affiliated with or endorsed by Pennylane. It is an independent open-source testing utility intended to emulate part of a Pennylane-like MCP integration surface for development and testing purposes only.
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
- AlicenseBqualityDmaintenanceA mock MCP server for testing MCP client implementations and development workflows. Supports tools, prompts, and resources across multiple transport protocols (stdio, HTTP, SSE).21MIT
- Alicense-qualityDmaintenanceA lightweight MCP server that simulates financial data interactions with dummy authentication and static JSON datasets for testing financial applications.2MIT
- Alicense-qualityAmaintenanceA local MCP server that breaks on demand, allowing you to test your client against auth failures, disappearing tools, flaky responses, and token expiry from a web UI.1210MIT
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
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/leyriel/fake-pennylane-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server