Skip to main content

Authed authentication integration for Model Context Protocol (MCP)

Project description

Authed MCP Integration

This package provides integration between Authed authentication and the Model Context Protocol (MCP).

Overview

The Authed MCP integration allows you to:

  1. Create MCP servers with Authed authentication
  2. Create MCP clients that can authenticate with Authed
  3. Connect to pure MCP servers without Authed authentication (optional)
  4. Accept connections from pure MCP clients without Authed authentication (optional)

Installation

pip install authed-mcp

Quick Start

Server Setup

from authed import Authed
from mcp.server.fastmcp import FastMCP
from authed_mcp import AuthedMiddleware
from starlette.applications import Starlette

# Initialize Authed SDK
authed = Authed.initialize(
    registry_url=os.getenv("AUTHED_REGISTRY_URL"),
    agent_id=os.getenv("AUTHED_AGENT_ID"),
    agent_secret=os.getenv("AUTHED_AGENT_SECRET"),
    private_key=os.getenv("AUTHED_PRIVATE_KEY"),
    public_key=os.getenv("AUTHED_PUBLIC_KEY")
)

# Create MCP server with Authed protection
app = Starlette(
    middleware=[
        Middleware(
            AuthedMiddleware,
            authed=authed,
            # If True, all requests must be authenticated using Authed
            # If False, allows unauthenticated requests
            require_auth=True,
            # Enable debug logging for authentication
            debug=True
        )
    ]
)

Client Setup

from authed import Authed
from mcp import ClientSession
from authed_mcp import get_auth_headers

# Initialize client
authed = Authed.initialize(
    registry_url=os.getenv("AUTHED_REGISTRY_URL"),
    agent_id=os.getenv("AUTHED_AGENT_ID"),
    agent_secret=os.getenv("AUTHED_AGENT_SECRET"),
    private_key=os.getenv("AUTHED_PRIVATE_KEY"),
    public_key=os.getenv("AUTHED_PUBLIC_KEY")
)

# Connect with authentication
headers = await get_auth_headers(
    authed=authed,
    url="http://localhost:8000/sse",
    method="GET",
    
    # The agent ID of the server you're connecting to
    # This must be different from your client's agent_id
    target_agent_id=os.getenv("TARGET_AGENT_ID"),
    
    # If True, allows connection to pure MCP servers without Authed authentication
    # If False, requires the server to support Authed authentication
    fallback=False,
    
    # Enable debug logging for authentication
    debug=True
)

Examples

Check out the examples directory for complete working examples:

  • examples/server/ - Example MCP server with Authed authentication
  • examples/client/ - Example MCP client that connects to the server

Contributing

Contributions are welcome! Please check out our Contributing Guide.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

authed_mcp-0.2.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

authed_mcp-0.2.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file authed_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: authed_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for authed_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5c96d2593efc9a7a509654921976b97b8807b6e559a959773dc22fc6878ac59c
MD5 a08ce26b001e4cb049393a8c4eab5969
BLAKE2b-256 769beaa9cc6340e33464d1aad6e6e5aaf15227c2e0745aa9417e7e4ca96a3fe5

See more details on using hashes here.

File details

Details for the file authed_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: authed_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for authed_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6585f938607c6867d4e65b86e4435541473a535c50ac357ef500bca3a5bf32aa
MD5 520777cc18d21b2d7f150568a283987d
BLAKE2b-256 7ab3afc294205a8e82d1c8a20105cd3e0ee9cd7bc52495c456119b0c2f32b426

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page