From 37415dfa1e13071f3fb2fa054251e4eadd459037 Mon Sep 17 00:00:00 2001 From: tommitt Date: Fri, 27 Jun 2025 21:04:26 +0200 Subject: [PATCH 1/2] Introduce Eunomia Middleware docs --- docs/docs.json | 1 + docs/integrations/eunomia-middleware.mdx | 108 +++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 docs/integrations/eunomia-middleware.mdx diff --git a/docs/docs.json b/docs/docs.json index e3526069e..ed970a434 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -130,6 +130,7 @@ "integrations/claude-desktop", "integrations/gemini", "integrations/openai", + "integrations/eunomia-middleware", "integrations/contrib" ] }, diff --git a/docs/integrations/eunomia-middleware.mdx b/docs/integrations/eunomia-middleware.mdx new file mode 100644 index 000000000..e1d5dd481 --- /dev/null +++ b/docs/integrations/eunomia-middleware.mdx @@ -0,0 +1,108 @@ +--- +title: Eunomia Authorization + FastMCP +sidebarTitle: Eunomia Authorization +description: Add policy-based authorization to your FastMCP servers +icon: layer-group +tag: NEW +--- + +Add **policy-based authorization** to your FastMCP servers with minimal code changes using Eunomia authorization middleware. + +Control which actions MCP clients can perform on your server by restricting how the agent can access resources, tools and prompts by using JSON-based policies, while obtaining a comprehensive audit log of all access attempts and violations. + +## Eunomia Authorization Middleware + +The middleware intercepts all MCP requests to your server and automatically maps MCP methods to authorization checks. + +```mermaid +sequenceDiagram + participant MCPClient as MCP Client + participant EunomiaMiddleware as Eunomia Middleware + participant MCPServer as FastMCP Server + participant EunomiaServer as Eunomia Server + + MCPClient->>EunomiaMiddleware: MCP Request + Note over MCPClient, EunomiaMiddleware: Middleware intercepts request to server + EunomiaMiddleware->>EunomiaServer: Authorization Check + EunomiaServer->>EunomiaMiddleware: Authorization Decision (allow/deny) + EunomiaMiddleware-->>MCPClient: MCP Unauthorized Error (if denied) + EunomiaMiddleware->>MCPServer: MCP Request (if allowed) + MCPServer-->>MCPClient: MCP Response (if allowed) +``` + + +Eunomia is an AI-specific standalone authorization server that handles policy decisions. You must have an Eunomia server running alongside your FastMCP server for the middleware to function. + +Run it in the background with Docker: + +```bash +docker run -d -p 8000:8000 ttommitt/eunomia-server:latest +``` + + + +### Create a Server with Authorization + +First, install the `eunomia-mcp` package: + +```bash +pip install eunomia-mcp +``` + +Then create a FastMCP server and add the Eunomia middleware with a few lines of code: + +```python server.py +from fastmcp import FastMCP +from eunomia_mcp import create_eunomia_middleware + +mcp = FastMCP("Secure FastMCP Server 🔒") + +@mcp.tool() +def add(a: int, b: int) -> int: + """Add two numbers""" + return a + b + +middleware = [create_eunomia_middleware()] +app = mcp.http_app(middleware=middleware) + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8080) +``` + +### Configure Access Policies + +Use the `eunomia-mcp` CLI in your terminal to manage your authorization policies: + +```bash +# Create a default policy configuration file +eunomia-mcp init +``` + +This creates a policy file you can customize to control access to your MCP tools and resources. + +```bash +# Once ready, validate your policy +eunomia-mcp validate mcp_policies.json + +# And push it to the Eunomia server +eunomia-mcp push mcp_policies.json +``` + +### Run the Server + +Start your FastMCP server normally: + +```bash +python server.py +``` + +The middleware will now intercept all MCP requests and check them against your policies. Requests include agent identification through headers like `X-Agent-ID`, `X-User-ID`, or `Authorization` and an automatic mapping of MCP methods to authorization resources and actions. + + + For detailed policy configuration, custom authentication, and advanced + deployment patterns, visit the [Eunomia MCP Middleware + repository][eunomia-github]. + + +[eunomia-github]: https://github.com/whataboutyou-ai/eunomia/tree/main/pkgs/extensions/mcp From f774612add0de77712e36eb81ef2f13d89eadad3 Mon Sep 17 00:00:00 2001 From: tommitt Date: Fri, 27 Jun 2025 21:13:45 +0200 Subject: [PATCH 2/2] Rename path --- docs/docs.json | 2 +- .../{eunomia-middleware.mdx => eunomia-authorization.mdx} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/integrations/{eunomia-middleware.mdx => eunomia-authorization.mdx} (100%) diff --git a/docs/docs.json b/docs/docs.json index ed970a434..285b4849a 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -130,7 +130,7 @@ "integrations/claude-desktop", "integrations/gemini", "integrations/openai", - "integrations/eunomia-middleware", + "integrations/eunomia-authorization", "integrations/contrib" ] }, diff --git a/docs/integrations/eunomia-middleware.mdx b/docs/integrations/eunomia-authorization.mdx similarity index 100% rename from docs/integrations/eunomia-middleware.mdx rename to docs/integrations/eunomia-authorization.mdx